<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="firestore_v1.html">Cloud Firestore API</a> . <a href="firestore_v1.projects.html">projects</a> . <a href="firestore_v1.projects.databases.html">databases</a> . <a href="firestore_v1.projects.databases.documents.html">documents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchGet">batchGet(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets multiple documents. Documents returned by this method are not guaranteed to be returned in the same order that they were requested.</p>
<p class="toc_element">
  <code><a href="#batchWrite">batchWrite(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Applies a batch of write operations. The BatchWrite method does not apply the write operations atomically and can apply them out of order. Method does not allow more than one write per document. Each write succeeds or fails independently. See the BatchWriteResponse for the success status of each write. If you require an atomically applied set of writes, use Commit instead.</p>
<p class="toc_element">
  <code><a href="#beginTransaction">beginTransaction(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts a new transaction.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#commit">commit(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Commits a transaction, while optionally updating documents.</p>
<p class="toc_element">
  <code><a href="#createDocument">createDocument(parent, collectionId, body=None, documentId=None, mask_fieldPaths=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new document.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, currentDocument_exists=None, currentDocument_updateTime=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a document.</p>
<p class="toc_element">
  <code><a href="#get">get(name, mask_fieldPaths=None, readTime=None, transaction=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a single document.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, collectionId, mask_fieldPaths=None, orderBy=None, pageSize=None, pageToken=None, readTime=None, showMissing=None, transaction=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists documents.</p>
<p class="toc_element">
  <code><a href="#listCollectionIds">listCollectionIds(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the collection IDs underneath a document.</p>
<p class="toc_element">
  <code><a href="#listCollectionIds_next">listCollectionIds_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#listDocuments">listDocuments(parent, collectionId, mask_fieldPaths=None, orderBy=None, pageSize=None, pageToken=None, readTime=None, showMissing=None, transaction=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists documents.</p>
<p class="toc_element">
  <code><a href="#listDocuments_next">listDocuments_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#listen">listen(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Listens to changes. This method is only available via gRPC or WebChannel (not REST).</p>
<p class="toc_element">
  <code><a href="#partitionQuery">partitionQuery(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Partitions a query by returning partition cursors that can be used to run the query in parallel. The returned partition cursors are split points that can be used by RunQuery as starting/end points for the query results.</p>
<p class="toc_element">
  <code><a href="#partitionQuery_next">partitionQuery_next()</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, currentDocument_exists=None, currentDocument_updateTime=None, mask_fieldPaths=None, updateMask_fieldPaths=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates or inserts a document.</p>
<p class="toc_element">
  <code><a href="#rollback">rollback(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Rolls back a transaction.</p>
<p class="toc_element">
  <code><a href="#runAggregationQuery">runAggregationQuery(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Runs an aggregation query. Rather than producing Document results like Firestore.RunQuery, this API allows running an aggregation to produce a series of AggregationResult server-side. High-Level Example: ``` -- Return the number of documents in table given a filter. SELECT COUNT(*) FROM ( SELECT * FROM k where a = true ); ```</p>
<p class="toc_element">
  <code><a href="#runQuery">runQuery(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Runs a query.</p>
<p class="toc_element">
  <code><a href="#write">write(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Streams batches of document updates and deletes, in order. This method is only available via gRPC or WebChannel (not REST).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchGet">batchGet(database, body=None, x__xgafv=None)</code>
  <pre>Gets multiple documents. Documents returned by this method are not guaranteed to be returned in the same order that they were requested.

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.BatchGetDocuments.
  &quot;documents&quot;: [ # The names of the documents to retrieve. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. The request will fail if any of the document is not a child resource of the given `database`. Duplicate names will be elided.
    &quot;A String&quot;,
  ],
  &quot;mask&quot;: { # A set of field paths on a document. Used to restrict a get or update operation on a document to a subset of its fields. This is different from standard field masks, as this is always scoped to a Document, and takes in account the dynamic nature of Value. # The fields to return. If not set, returns all fields. If a document has a field that is not present in this mask, that field will not be returned in the response.
    &quot;fieldPaths&quot;: [ # The list of field paths in the mask. See Document.fields for a field path syntax reference.
      &quot;A String&quot;,
    ],
  },
  &quot;newTransaction&quot;: { # Options for creating a new transaction. # Starts a new transaction and reads the documents. Defaults to a read-only transaction. The new transaction ID will be returned as the first response in the stream.
    &quot;readOnly&quot;: { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
      &quot;readTime&quot;: &quot;A String&quot;, # Reads documents at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
    },
    &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. Firestore does not allow 3rd party auth requests to create read-write. transactions. # The transaction can be used for both read and write operations.
      &quot;retryTransaction&quot;: &quot;A String&quot;, # An optional transaction to retry.
    },
  },
  &quot;readTime&quot;: &quot;A String&quot;, # Reads documents as they were at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  &quot;transaction&quot;: &quot;A String&quot;, # Reads documents in a transaction.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The streamed response for Firestore.BatchGetDocuments.
  &quot;found&quot;: { # A Firestore document. Must not exceed 1 MiB - 4 bytes. # A document that was requested.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
    &quot;fields&quot;: {
      &quot;a_key&quot;: { # A message that can hold any of the supported value types.
        &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
          &quot;values&quot;: [ # Values in the array.
            # Object with schema name: Value
          ],
        },
        &quot;booleanValue&quot;: True or False, # A boolean value.
        &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
        &quot;doubleValue&quot;: 3.14, # A double value.
        &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
        &quot;mapValue&quot;: { # A map value. # A map value.
          &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
            &quot;a_key&quot;: # Object with schema name: Value
          },
        },
        &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
        &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
        &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
      },
    },
    &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
  },
  &quot;missing&quot;: &quot;A String&quot;, # A document name that was requested but does not exist. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  &quot;readTime&quot;: &quot;A String&quot;, # The time at which the document was read. This may be monotically increasing, in this case the previous documents in the result stream are guaranteed not to have changed between their read_time and this one.
  &quot;transaction&quot;: &quot;A String&quot;, # The transaction that was started as part of this request. Will only be set in the first response, and only if BatchGetDocumentsRequest.new_transaction was set in the request.
}</pre>
</div>

<div class="method">
    <code class="details" id="batchWrite">batchWrite(database, body=None, x__xgafv=None)</code>
  <pre>Applies a batch of write operations. The BatchWrite method does not apply the write operations atomically and can apply them out of order. Method does not allow more than one write per document. Each write succeeds or fails independently. See the BatchWriteResponse for the success status of each write. If you require an atomically applied set of writes, use Commit instead.

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.BatchWrite.
  &quot;labels&quot;: { # Labels associated with this batch write.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;writes&quot;: [ # The writes to apply. Method does not apply writes atomically and does not guarantee ordering. Each write succeeds or fails independently. You cannot write to the same document more than once per request.
    { # A write on a document.
      &quot;currentDocument&quot;: { # A precondition on a document, used for conditional operations. # An optional precondition on the document. The write will fail if this is set and not met by the target document.
        &quot;exists&quot;: True or False, # When set to `true`, the target document must exist. When set to `false`, the target document must not exist.
        &quot;updateTime&quot;: &quot;A String&quot;, # When set, the target document must exist and have been last updated at that time. Timestamp must be microsecond aligned.
      },
      &quot;delete&quot;: &quot;A String&quot;, # A document name to delete. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;transform&quot;: { # A transformation of a document. # Applies a transformation to a document.
        &quot;document&quot;: &quot;A String&quot;, # The name of the document to transform.
        &quot;fieldTransforms&quot;: [ # The list of transformations to apply to the fields of the document, in order. This must not be empty.
          { # A transformation of a field of the document.
            &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
            &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
          },
        ],
      },
      &quot;update&quot;: { # A Firestore document. Must not exceed 1 MiB - 4 bytes. # A document to write.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
        &quot;fields&quot;: {
          &quot;a_key&quot;: { # A message that can hold any of the supported value types.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
        },
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
      },
      &quot;updateMask&quot;: { # A set of field paths on a document. Used to restrict a get or update operation on a document to a subset of its fields. This is different from standard field masks, as this is always scoped to a Document, and takes in account the dynamic nature of Value. # The fields to update in this write. This field can be set only when the operation is `update`. If the mask is not set for an `update` and the document exists, any existing data will be overwritten. If the mask is set and the document on the server has fields not covered by the mask, they are left unchanged. Fields referenced in the mask, but not present in the input document, are deleted from the document on the server. The field paths in this mask must not contain a reserved field name.
        &quot;fieldPaths&quot;: [ # The list of field paths in the mask. See Document.fields for a field path syntax reference.
          &quot;A String&quot;,
        ],
      },
      &quot;updateTransforms&quot;: [ # The transforms to perform after update. This field can be set only when the operation is `update`. If present, this write is equivalent to performing `update` and `transform` to the same document atomically and in order.
        { # A transformation of a field of the document.
          &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
          &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
        },
      ],
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response from Firestore.BatchWrite.
  &quot;status&quot;: [ # The status of applying the writes. This i-th write status corresponds to the i-th write in the request.
    { # The `Status` type defines a logical error model that is suitable for 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;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;writeResults&quot;: [ # The result of applying the writes. This i-th write result corresponds to the i-th write in the request.
    { # The result of applying a write.
      &quot;transformResults&quot;: [ # The results of applying each DocumentTransform.FieldTransform, in the same order.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # The last update time of the document after applying the write. Not set after a `delete`. If the write did not actually change the document, this will be the previous update_time.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="beginTransaction">beginTransaction(database, body=None, x__xgafv=None)</code>
  <pre>Starts a new transaction.

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.BeginTransaction.
  &quot;options&quot;: { # Options for creating a new transaction. # The options for the transaction. Defaults to a read-write transaction.
    &quot;readOnly&quot;: { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
      &quot;readTime&quot;: &quot;A String&quot;, # Reads documents at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
    },
    &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. Firestore does not allow 3rd party auth requests to create read-write. transactions. # The transaction can be used for both read and write operations.
      &quot;retryTransaction&quot;: &quot;A String&quot;, # An optional transaction to retry.
    },
  },
}

  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 Firestore.BeginTransaction.
  &quot;transaction&quot;: &quot;A String&quot;, # The transaction that was started.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="commit">commit(database, body=None, x__xgafv=None)</code>
  <pre>Commits a transaction, while optionally updating documents.

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.Commit.
  &quot;transaction&quot;: &quot;A String&quot;, # If set, applies all writes in this transaction, and commits it.
  &quot;writes&quot;: [ # The writes to apply. Always executed atomically and in order.
    { # A write on a document.
      &quot;currentDocument&quot;: { # A precondition on a document, used for conditional operations. # An optional precondition on the document. The write will fail if this is set and not met by the target document.
        &quot;exists&quot;: True or False, # When set to `true`, the target document must exist. When set to `false`, the target document must not exist.
        &quot;updateTime&quot;: &quot;A String&quot;, # When set, the target document must exist and have been last updated at that time. Timestamp must be microsecond aligned.
      },
      &quot;delete&quot;: &quot;A String&quot;, # A document name to delete. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;transform&quot;: { # A transformation of a document. # Applies a transformation to a document.
        &quot;document&quot;: &quot;A String&quot;, # The name of the document to transform.
        &quot;fieldTransforms&quot;: [ # The list of transformations to apply to the fields of the document, in order. This must not be empty.
          { # A transformation of a field of the document.
            &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
            &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
          },
        ],
      },
      &quot;update&quot;: { # A Firestore document. Must not exceed 1 MiB - 4 bytes. # A document to write.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
        &quot;fields&quot;: {
          &quot;a_key&quot;: { # A message that can hold any of the supported value types.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
        },
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
      },
      &quot;updateMask&quot;: { # A set of field paths on a document. Used to restrict a get or update operation on a document to a subset of its fields. This is different from standard field masks, as this is always scoped to a Document, and takes in account the dynamic nature of Value. # The fields to update in this write. This field can be set only when the operation is `update`. If the mask is not set for an `update` and the document exists, any existing data will be overwritten. If the mask is set and the document on the server has fields not covered by the mask, they are left unchanged. Fields referenced in the mask, but not present in the input document, are deleted from the document on the server. The field paths in this mask must not contain a reserved field name.
        &quot;fieldPaths&quot;: [ # The list of field paths in the mask. See Document.fields for a field path syntax reference.
          &quot;A String&quot;,
        ],
      },
      &quot;updateTransforms&quot;: [ # The transforms to perform after update. This field can be set only when the operation is `update`. If present, this write is equivalent to performing `update` and `transform` to the same document atomically and in order.
        { # A transformation of a field of the document.
          &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
          &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
        },
      ],
    },
  ],
}

  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 Firestore.Commit.
  &quot;commitTime&quot;: &quot;A String&quot;, # The time at which the commit occurred. Any read with an equal or greater `read_time` is guaranteed to see the effects of the commit.
  &quot;writeResults&quot;: [ # The result of applying the writes. This i-th write result corresponds to the i-th write in the request.
    { # The result of applying a write.
      &quot;transformResults&quot;: [ # The results of applying each DocumentTransform.FieldTransform, in the same order.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # The last update time of the document after applying the write. Not set after a `delete`. If the write did not actually change the document, this will be the previous update_time.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="createDocument">createDocument(parent, collectionId, body=None, documentId=None, mask_fieldPaths=None, x__xgafv=None)</code>
  <pre>Creates a new document.

Args:
  parent: string, Required. The parent resource. For example: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/chatrooms/{chatroom_id}` (required)
  collectionId: string, Required. The collection ID, relative to `parent`, to list. For example: `chatrooms`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Firestore document. Must not exceed 1 MiB - 4 bytes.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
  &quot;fields&quot;: {
    &quot;a_key&quot;: { # A message that can hold any of the supported value types.
      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
        &quot;values&quot;: [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      &quot;booleanValue&quot;: True or False, # A boolean value.
      &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
      &quot;doubleValue&quot;: 3.14, # A double value.
      &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
      &quot;mapValue&quot;: { # A map value. # A map value.
        &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
          &quot;a_key&quot;: # Object with schema name: Value
        },
      },
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
      &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
}

  documentId: string, The client-assigned document ID to use for this document. Optional. If not specified, an ID will be assigned by the service.
  mask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Firestore document. Must not exceed 1 MiB - 4 bytes.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
  &quot;fields&quot;: {
    &quot;a_key&quot;: { # A message that can hold any of the supported value types.
      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
        &quot;values&quot;: [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      &quot;booleanValue&quot;: True or False, # A boolean value.
      &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
      &quot;doubleValue&quot;: 3.14, # A double value.
      &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
      &quot;mapValue&quot;: { # A map value. # A map value.
        &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
          &quot;a_key&quot;: # Object with schema name: Value
        },
      },
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
      &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, currentDocument_exists=None, currentDocument_updateTime=None, x__xgafv=None)</code>
  <pre>Deletes a document.

Args:
  name: string, Required. The resource name of the Document to delete. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. (required)
  currentDocument_exists: boolean, When set to `true`, the target document must exist. When set to `false`, the target document must not exist.
  currentDocument_updateTime: string, When set, the target document must exist and have been last updated at that time. Timestamp must be microsecond aligned.
  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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, mask_fieldPaths=None, readTime=None, transaction=None, x__xgafv=None)</code>
  <pre>Gets a single document.

Args:
  name: string, Required. The resource name of the Document to get. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. (required)
  mask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  readTime: string, Reads the version of the document at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  transaction: string, Reads the document in a transaction.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Firestore document. Must not exceed 1 MiB - 4 bytes.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
  &quot;fields&quot;: {
    &quot;a_key&quot;: { # A message that can hold any of the supported value types.
      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
        &quot;values&quot;: [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      &quot;booleanValue&quot;: True or False, # A boolean value.
      &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
      &quot;doubleValue&quot;: 3.14, # A double value.
      &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
      &quot;mapValue&quot;: { # A map value. # A map value.
        &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
          &quot;a_key&quot;: # Object with schema name: Value
        },
      },
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
      &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, collectionId, mask_fieldPaths=None, orderBy=None, pageSize=None, pageToken=None, readTime=None, showMissing=None, transaction=None, x__xgafv=None)</code>
  <pre>Lists documents.

Args:
  parent: string, Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents` or `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` (required)
  collectionId: string, Optional. The collection ID, relative to `parent`, to list. For example: `chatrooms` or `messages`. This is optional, and when not provided, Firestore will list documents from all collections under the provided `parent`. (required)
  mask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  orderBy: string, Optional. The optional ordering of the documents to return. For example: `priority desc, __name__ desc`. This mirrors the `ORDER BY` used in Firestore queries but in a string representation. When absent, documents are ordered based on `__name__ ASC`.
  pageSize: integer, Optional. The maximum number of documents to return in a single response. Firestore may return fewer than this value.
  pageToken: string, Optional. A page token, received from a previous `ListDocuments` response. Provide this to retrieve the subsequent page. When paginating, all other parameters (with the exception of `page_size`) must match the values set in the request that generated the page token.
  readTime: string, Perform the read at the provided time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  showMissing: boolean, If the list should show missing documents. A document is missing if it does not exist, but there are sub-documents nested underneath it. When true, such missing documents will be returned with a key but will not have fields, `create_time`, or `update_time` set. Requests with `show_missing` may not specify `where` or `order_by`.
  transaction: string, Perform the read as part of an already active transaction.
  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 Firestore.ListDocuments.
  &quot;documents&quot;: [ # The Documents found.
    { # A Firestore document. Must not exceed 1 MiB - 4 bytes.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
      &quot;fields&quot;: {
        &quot;a_key&quot;: { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of documents. If this field is omitted, there are no subsequent pages.
}</pre>
</div>

<div class="method">
    <code class="details" id="listCollectionIds">listCollectionIds(parent, body=None, x__xgafv=None)</code>
  <pre>Lists all the collection IDs underneath a document.

Args:
  parent: string, Required. The parent document. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.ListCollectionIds.
  &quot;pageSize&quot;: 42, # The maximum number of results to return.
  &quot;pageToken&quot;: &quot;A String&quot;, # A page token. Must be a value from ListCollectionIdsResponse.
  &quot;readTime&quot;: &quot;A String&quot;, # Reads documents as they were at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response from Firestore.ListCollectionIds.
  &quot;collectionIds&quot;: [ # The collection ids.
    &quot;A String&quot;,
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A page token that may be used to continue the list.
}</pre>
</div>

<div class="method">
    <code class="details" id="listCollectionIds_next">listCollectionIds_next()</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="listDocuments">listDocuments(parent, collectionId, mask_fieldPaths=None, orderBy=None, pageSize=None, pageToken=None, readTime=None, showMissing=None, transaction=None, x__xgafv=None)</code>
  <pre>Lists documents.

Args:
  parent: string, Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents` or `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` (required)
  collectionId: string, Optional. The collection ID, relative to `parent`, to list. For example: `chatrooms` or `messages`. This is optional, and when not provided, Firestore will list documents from all collections under the provided `parent`. (required)
  mask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  orderBy: string, Optional. The optional ordering of the documents to return. For example: `priority desc, __name__ desc`. This mirrors the `ORDER BY` used in Firestore queries but in a string representation. When absent, documents are ordered based on `__name__ ASC`.
  pageSize: integer, Optional. The maximum number of documents to return in a single response. Firestore may return fewer than this value.
  pageToken: string, Optional. A page token, received from a previous `ListDocuments` response. Provide this to retrieve the subsequent page. When paginating, all other parameters (with the exception of `page_size`) must match the values set in the request that generated the page token.
  readTime: string, Perform the read at the provided time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  showMissing: boolean, If the list should show missing documents. A document is missing if it does not exist, but there are sub-documents nested underneath it. When true, such missing documents will be returned with a key but will not have fields, `create_time`, or `update_time` set. Requests with `show_missing` may not specify `where` or `order_by`.
  transaction: string, Perform the read as part of an already active transaction.
  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 Firestore.ListDocuments.
  &quot;documents&quot;: [ # The Documents found.
    { # A Firestore document. Must not exceed 1 MiB - 4 bytes.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
      &quot;fields&quot;: {
        &quot;a_key&quot;: { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token to retrieve the next page of documents. If this field is omitted, there are no subsequent pages.
}</pre>
</div>

<div class="method">
    <code class="details" id="listDocuments_next">listDocuments_next()</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="list_next">list_next()</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="listen">listen(database, body=None, x__xgafv=None)</code>
  <pre>Listens to changes. This method is only available via gRPC or WebChannel (not REST).

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request for Firestore.Listen
  &quot;addTarget&quot;: { # A specification of a set of documents to listen to. # A target to add to this stream.
    &quot;documents&quot;: { # A target specified by a set of documents names. # A target specified by a set of document names.
      &quot;documents&quot;: [ # The names of the documents to retrieve. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`. The request will fail if any of the document is not a child resource of the given `database`. Duplicate names will be elided.
        &quot;A String&quot;,
      ],
    },
    &quot;expectedCount&quot;: 42, # The number of documents that last matched the query at the resume token or read time. This value is only relevant when a `resume_type` is provided. This value being present and greater than zero signals that the client wants `ExistenceFilter.unchanged_names` to be included in the response.
    &quot;once&quot;: True or False, # If the target should be removed once it is current and consistent.
    &quot;query&quot;: { # A target specified by a query. # A target specified by a query.
      &quot;parent&quot;: &quot;A String&quot;, # The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents` or `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom`
      &quot;structuredQuery&quot;: { # A Firestore query. # A structured query.
        &quot;endAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to end the query at. This is similar to `START_AT` but with it controlling the end position rather than the start position. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
          &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
          &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
            { # A message that can hold any of the supported value types.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
          ],
        },
        &quot;from&quot;: [ # The collections to query.
          { # A selection of a collection, such as `messages as m1`.
            &quot;allDescendants&quot;: True or False, # When false, selects only collections that are immediate children of the `parent` specified in the containing `RunQueryRequest`. When true, selects all descendant collections.
            &quot;collectionId&quot;: &quot;A String&quot;, # The collection ID. When set, selects only collections with this ID.
          },
        ],
        &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Requires: * The value must be greater than or equal to zero if specified.
        &quot;offset&quot;: 42, # The number of documents to skip before returning the first result. This applies after the constraints specified by the `WHERE`, `START AT`, &amp; `END AT` but before the `LIMIT` clause. Requires: * The value must be greater than or equal to zero if specified.
        &quot;orderBy&quot;: [ # The order to apply to the query results. Firestore allows callers to provide a full ordering, a partial ordering, or no ordering at all. In all cases, Firestore guarantees a stable ordering through the following rules: * The `order_by` is required to reference all fields used with an inequality filter. * All fields that are required to be in the `order_by` but are not already present are appended in lexicographical ordering of the field name. * If an order on `__name__` is not specified, it is appended by default. Fields are appended with the same sort direction as the last order specified, or &#x27;ASCENDING&#x27; if no order was specified. For example: * `ORDER BY a` becomes `ORDER BY a ASC, __name__ ASC` * `ORDER BY a DESC` becomes `ORDER BY a DESC, __name__ DESC` * `WHERE a &gt; 1` becomes `WHERE a &gt; 1 ORDER BY a ASC, __name__ ASC` * `WHERE __name__ &gt; ... AND a &gt; 1` becomes `WHERE __name__ &gt; ... AND a &gt; 1 ORDER BY a ASC, __name__ ASC`
          { # An order on a field.
            &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
            &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to order by.
              &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
            },
          },
        ],
        &quot;select&quot;: { # The projection of document&#x27;s fields to return. # Optional sub-set of the fields to return. This acts as a DocumentMask over the documents returned from a query. When not set, assumes that the caller wants all fields returned.
          &quot;fields&quot;: [ # The fields to return. If empty, all fields are returned. To only return the name of the document, use `[&#x27;__name__&#x27;]`.
            { # A reference to a field in a document, ex: `stats.operations`.
              &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
            },
          ],
        },
        &quot;startAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to start the query at. The ordering of the result set is based on the `ORDER BY` clause of the original query. ``` SELECT * FROM k WHERE a = 1 AND b &gt; 2 ORDER BY b ASC, __name__ ASC; ``` This query&#x27;s results are ordered by `(b ASC, __name__ ASC)`. Cursors can reference either the full ordering or a prefix of the location, though it cannot reference more fields than what are in the provided `ORDER BY`. Continuing off the example above, attaching the following start cursors will have varying impact: - `START BEFORE (2, /k/123)`: start the query right before `a = 1 AND b &gt; 2 AND __name__ &gt; /k/123`. - `START AFTER (10)`: start the query right after `a = 1 AND b &gt; 10`. Unlike `OFFSET` which requires scanning over the first N results to skip, a start cursor allows the query to begin at a logical position. This position is not required to match an actual result, it will scan forward from this position to find the next document. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
          &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
          &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
            { # A message that can hold any of the supported value types.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
          ],
        },
        &quot;where&quot;: { # A filter. # The filter to apply.
          &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
            &quot;filters&quot;: [ # The list of filters to combine. Requires: * At least one filter is present.
              # Object with schema name: Filter
            ],
            &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
          },
          &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
            &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to filter by.
              &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
            },
            &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
            &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
          },
          &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
            &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to which to apply the operator.
              &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
            },
            &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
          },
        },
      },
    },
    &quot;readTime&quot;: &quot;A String&quot;, # Start listening after a specific `read_time`. The client must know the state of matching documents at this time.
    &quot;resumeToken&quot;: &quot;A String&quot;, # A resume token from a prior TargetChange for an identical target. Using a resume token with a different target is unsupported and may fail.
    &quot;targetId&quot;: 42, # The target ID that identifies the target on the stream. Must be a positive number and non-zero. If `target_id` is 0 (or unspecified), the server will assign an ID for this target and return that in a `TargetChange::ADD` event. Once a target with `target_id=0` is added, all subsequent targets must also have `target_id=0`. If an `AddTarget` request with `target_id != 0` is sent to the server after a target with `target_id=0` is added, the server will immediately send a response with a `TargetChange::Remove` event. Note that if the client sends multiple `AddTarget` requests without an ID, the order of IDs returned in `TargetChage.target_ids` are undefined. Therefore, clients should provide a target ID instead of relying on the server to assign one. If `target_id` is non-zero, there must not be an existing active target on this stream with the same ID.
  },
  &quot;labels&quot;: { # Labels associated with this target change.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;removeTarget&quot;: 42, # The ID of a target to remove from this stream.
}

  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 Firestore.Listen.
  &quot;documentChange&quot;: { # A Document has changed. May be the result of multiple writes, including deletes, that ultimately resulted in a new value for the Document. Multiple DocumentChange messages may be returned for the same logical change, if multiple targets are affected. # A Document has changed.
    &quot;document&quot;: { # A Firestore document. Must not exceed 1 MiB - 4 bytes. # The new state of the Document. If `mask` is set, contains only fields that were updated or added.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
      &quot;fields&quot;: {
        &quot;a_key&quot;: { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
    },
    &quot;removedTargetIds&quot;: [ # A set of target IDs for targets that no longer match this document.
      42,
    ],
    &quot;targetIds&quot;: [ # A set of target IDs of targets that match this document.
      42,
    ],
  },
  &quot;documentDelete&quot;: { # A Document has been deleted. May be the result of multiple writes, including updates, the last of which deleted the Document. Multiple DocumentDelete messages may be returned for the same logical delete, if multiple targets are affected. # A Document has been deleted.
    &quot;document&quot;: &quot;A String&quot;, # The resource name of the Document that was deleted.
    &quot;readTime&quot;: &quot;A String&quot;, # The read timestamp at which the delete was observed. Greater or equal to the `commit_time` of the delete.
    &quot;removedTargetIds&quot;: [ # A set of target IDs for targets that previously matched this entity.
      42,
    ],
  },
  &quot;documentRemove&quot;: { # A Document has been removed from the view of the targets. Sent if the document is no longer relevant to a target and is out of view. Can be sent instead of a DocumentDelete or a DocumentChange if the server can not send the new value of the document. Multiple DocumentRemove messages may be returned for the same logical write or delete, if multiple targets are affected. # A Document has been removed from a target (because it is no longer relevant to that target).
    &quot;document&quot;: &quot;A String&quot;, # The resource name of the Document that has gone out of view.
    &quot;readTime&quot;: &quot;A String&quot;, # The read timestamp at which the remove was observed. Greater or equal to the `commit_time` of the change/delete/remove.
    &quot;removedTargetIds&quot;: [ # A set of target IDs for targets that previously matched this document.
      42,
    ],
  },
  &quot;filter&quot;: { # A digest of all the documents that match a given target. # A filter to apply to the set of documents previously returned for the given target. Returned when documents may have been removed from the given target, but the exact documents are unknown.
    &quot;count&quot;: 42, # The total count of documents that match target_id. If different from the count of documents in the client that match, the client must manually determine which documents no longer match the target. The client can use the `unchanged_names` bloom filter to assist with this determination by testing ALL the document names against the filter; if the document name is NOT in the filter, it means the document no longer matches the target.
    &quot;targetId&quot;: 42, # The target ID to which this filter applies.
    &quot;unchangedNames&quot;: { # A bloom filter (https://en.wikipedia.org/wiki/Bloom_filter). The bloom filter hashes the entries with MD5 and treats the resulting 128-bit hash as 2 distinct 64-bit hash values, interpreted as unsigned integers using 2&#x27;s complement encoding. These two hash values, named `h1` and `h2`, are then used to compute the `hash_count` hash values using the formula, starting at `i=0`: h(i) = h1 + (i * h2) These resulting values are then taken modulo the number of bits in the bloom filter to get the bits of the bloom filter to test for the given entry. # A bloom filter that, despite its name, contains the UTF-8 byte encodings of the resource names of ALL the documents that match target_id, in the form `projects/{project_id}/databases/{database_id}/documents/{document_path}`. This bloom filter may be omitted at the server&#x27;s discretion, such as if it is deemed that the client will not make use of it or if it is too computationally expensive to calculate or transmit. Clients must gracefully handle this field being absent by falling back to the logic used before this field existed; that is, re-add the target without a resume token to figure out which documents in the client&#x27;s cache are out of sync.
      &quot;bits&quot;: { # A sequence of bits, encoded in a byte array. Each byte in the `bitmap` byte array stores 8 bits of the sequence. The only exception is the last byte, which may store 8 _or fewer_ bits. The `padding` defines the number of bits of the last byte to be ignored as &quot;padding&quot;. The values of these &quot;padding&quot; bits are unspecified and must be ignored. To retrieve the first bit, bit 0, calculate: `(bitmap[0] &amp; 0x01) != 0`. To retrieve the second bit, bit 1, calculate: `(bitmap[0] &amp; 0x02) != 0`. To retrieve the third bit, bit 2, calculate: `(bitmap[0] &amp; 0x04) != 0`. To retrieve the fourth bit, bit 3, calculate: `(bitmap[0] &amp; 0x08) != 0`. To retrieve bit n, calculate: `(bitmap[n / 8] &amp; (0x01 &lt;&lt; (n % 8))) != 0`. The &quot;size&quot; of a `BitSequence` (the number of bits it contains) is calculated by this formula: `(bitmap.length * 8) - padding`. # The bloom filter data.
        &quot;bitmap&quot;: &quot;A String&quot;, # The bytes that encode the bit sequence. May have a length of zero.
        &quot;padding&quot;: 42, # The number of bits of the last byte in `bitmap` to ignore as &quot;padding&quot;. If the length of `bitmap` is zero, then this value must be `0`. Otherwise, this value must be between 0 and 7, inclusive.
      },
      &quot;hashCount&quot;: 42, # The number of hashes used by the algorithm.
    },
  },
  &quot;targetChange&quot;: { # Targets being watched have changed. # Targets have changed.
    &quot;cause&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # The error that resulted in this change, if applicable.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &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;readTime&quot;: &quot;A String&quot;, # The consistent `read_time` for the given `target_ids` (omitted when the target_ids are not at a consistent snapshot). The stream is guaranteed to send a `read_time` with `target_ids` empty whenever the entire stream reaches a new consistent snapshot. ADD, CURRENT, and RESET messages are guaranteed to (eventually) result in a new consistent snapshot (while NO_CHANGE and REMOVE messages are not). For a given stream, `read_time` is guaranteed to be monotonically increasing.
    &quot;resumeToken&quot;: &quot;A String&quot;, # A token that can be used to resume the stream for the given `target_ids`, or all targets if `target_ids` is empty. Not set on every target change.
    &quot;targetChangeType&quot;: &quot;A String&quot;, # The type of change that occurred.
    &quot;targetIds&quot;: [ # The target IDs of targets that have changed. If empty, the change applies to all targets. The order of the target IDs is not defined.
      42,
    ],
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="partitionQuery">partitionQuery(parent, body=None, x__xgafv=None)</code>
  <pre>Partitions a query by returning partition cursors that can be used to run the query in parallel. The returned partition cursors are split points that can be used by RunQuery as starting/end points for the query results.

Args:
  parent: string, Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents`. Document resource names are not supported; only database resource names can be specified. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.PartitionQuery.
  &quot;pageSize&quot;: 42, # The maximum number of partitions to return in this call, subject to `partition_count`. For example, if `partition_count` = 10 and `page_size` = 8, the first call to PartitionQuery will return up to 8 partitions and a `next_page_token` if more results exist. A second call to PartitionQuery will return up to 2 partitions, to complete the total of 10 specified in `partition_count`.
  &quot;pageToken&quot;: &quot;A String&quot;, # The `next_page_token` value returned from a previous call to PartitionQuery that may be used to get an additional set of results. There are no ordering guarantees between sets of results. Thus, using multiple sets of results will require merging the different result sets. For example, two subsequent calls using a page_token may return: * cursor B, cursor M, cursor Q * cursor A, cursor U, cursor W To obtain a complete result set ordered with respect to the results of the query supplied to PartitionQuery, the results sets should be merged: cursor A, cursor B, cursor M, cursor Q, cursor U, cursor W
  &quot;partitionCount&quot;: &quot;A String&quot;, # The desired maximum number of partition points. The partitions may be returned across multiple pages of results. The number must be positive. The actual number of partitions returned may be fewer. For example, this may be set to one fewer than the number of parallel queries to be run, or in running a data pipeline job, one fewer than the number of workers or compute instances available.
  &quot;readTime&quot;: &quot;A String&quot;, # Reads documents as they were at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  &quot;structuredQuery&quot;: { # A Firestore query. # A structured query. Query must specify collection with all descendants and be ordered by name ascending. Other filters, order bys, limits, offsets, and start/end cursors are not supported.
    &quot;endAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to end the query at. This is similar to `START_AT` but with it controlling the end position rather than the start position. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
      &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
      &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
    },
    &quot;from&quot;: [ # The collections to query.
      { # A selection of a collection, such as `messages as m1`.
        &quot;allDescendants&quot;: True or False, # When false, selects only collections that are immediate children of the `parent` specified in the containing `RunQueryRequest`. When true, selects all descendant collections.
        &quot;collectionId&quot;: &quot;A String&quot;, # The collection ID. When set, selects only collections with this ID.
      },
    ],
    &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Requires: * The value must be greater than or equal to zero if specified.
    &quot;offset&quot;: 42, # The number of documents to skip before returning the first result. This applies after the constraints specified by the `WHERE`, `START AT`, &amp; `END AT` but before the `LIMIT` clause. Requires: * The value must be greater than or equal to zero if specified.
    &quot;orderBy&quot;: [ # The order to apply to the query results. Firestore allows callers to provide a full ordering, a partial ordering, or no ordering at all. In all cases, Firestore guarantees a stable ordering through the following rules: * The `order_by` is required to reference all fields used with an inequality filter. * All fields that are required to be in the `order_by` but are not already present are appended in lexicographical ordering of the field name. * If an order on `__name__` is not specified, it is appended by default. Fields are appended with the same sort direction as the last order specified, or &#x27;ASCENDING&#x27; if no order was specified. For example: * `ORDER BY a` becomes `ORDER BY a ASC, __name__ ASC` * `ORDER BY a DESC` becomes `ORDER BY a DESC, __name__ DESC` * `WHERE a &gt; 1` becomes `WHERE a &gt; 1 ORDER BY a ASC, __name__ ASC` * `WHERE __name__ &gt; ... AND a &gt; 1` becomes `WHERE __name__ &gt; ... AND a &gt; 1 ORDER BY a ASC, __name__ ASC`
      { # An order on a field.
        &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
        &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to order by.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
      },
    ],
    &quot;select&quot;: { # The projection of document&#x27;s fields to return. # Optional sub-set of the fields to return. This acts as a DocumentMask over the documents returned from a query. When not set, assumes that the caller wants all fields returned.
      &quot;fields&quot;: [ # The fields to return. If empty, all fields are returned. To only return the name of the document, use `[&#x27;__name__&#x27;]`.
        { # A reference to a field in a document, ex: `stats.operations`.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
      ],
    },
    &quot;startAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to start the query at. The ordering of the result set is based on the `ORDER BY` clause of the original query. ``` SELECT * FROM k WHERE a = 1 AND b &gt; 2 ORDER BY b ASC, __name__ ASC; ``` This query&#x27;s results are ordered by `(b ASC, __name__ ASC)`. Cursors can reference either the full ordering or a prefix of the location, though it cannot reference more fields than what are in the provided `ORDER BY`. Continuing off the example above, attaching the following start cursors will have varying impact: - `START BEFORE (2, /k/123)`: start the query right before `a = 1 AND b &gt; 2 AND __name__ &gt; /k/123`. - `START AFTER (10)`: start the query right after `a = 1 AND b &gt; 10`. Unlike `OFFSET` which requires scanning over the first N results to skip, a start cursor allows the query to begin at a logical position. This position is not required to match an actual result, it will scan forward from this position to find the next document. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
      &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
      &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
    },
    &quot;where&quot;: { # A filter. # The filter to apply.
      &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
        &quot;filters&quot;: [ # The list of filters to combine. Requires: * At least one filter is present.
          # Object with schema name: Filter
        ],
        &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
      },
      &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
        &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to filter by.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
        &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
        &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      },
      &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
        &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to which to apply the operator.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
        &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
      },
    },
  },
}

  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 Firestore.PartitionQuery.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A page token that may be used to request an additional set of results, up to the number specified by `partition_count` in the PartitionQuery request. If blank, there are no more results.
  &quot;partitions&quot;: [ # Partition results. Each partition is a split point that can be used by RunQuery as a starting or end point for the query results. The RunQuery requests must be made with the same query supplied to this PartitionQuery request. The partition cursors will be ordered according to same ordering as the results of the query supplied to PartitionQuery. For example, if a PartitionQuery request returns partition cursors A and B, running the following three queries will return the entire result set of the original query: * query, end_at A * query, start_at A, end_at B * query, start_at B An empty result may indicate that the query has too few results to be partitioned, or that the query is not yet supported for partitioning.
    { # A position in a query result set.
      &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
      &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="partitionQuery_next">partitionQuery_next()</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, currentDocument_exists=None, currentDocument_updateTime=None, mask_fieldPaths=None, updateMask_fieldPaths=None, x__xgafv=None)</code>
  <pre>Updates or inserts a document.

Args:
  name: string, The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Firestore document. Must not exceed 1 MiB - 4 bytes.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
  &quot;fields&quot;: {
    &quot;a_key&quot;: { # A message that can hold any of the supported value types.
      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
        &quot;values&quot;: [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      &quot;booleanValue&quot;: True or False, # A boolean value.
      &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
      &quot;doubleValue&quot;: 3.14, # A double value.
      &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
      &quot;mapValue&quot;: { # A map value. # A map value.
        &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
          &quot;a_key&quot;: # Object with schema name: Value
        },
      },
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
      &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
}

  currentDocument_exists: boolean, When set to `true`, the target document must exist. When set to `false`, the target document must not exist.
  currentDocument_updateTime: string, When set, the target document must exist and have been last updated at that time. Timestamp must be microsecond aligned.
  mask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  updateMask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Firestore document. Must not exceed 1 MiB - 4 bytes.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
  &quot;fields&quot;: {
    &quot;a_key&quot;: { # A message that can hold any of the supported value types.
      &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
        &quot;values&quot;: [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      &quot;booleanValue&quot;: True or False, # A boolean value.
      &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
      &quot;doubleValue&quot;: 3.14, # A double value.
      &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
      &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
      &quot;mapValue&quot;: { # A map value. # A map value.
        &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
          &quot;a_key&quot;: # Object with schema name: Value
        },
      },
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
      &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
    },
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
}</pre>
</div>

<div class="method">
    <code class="details" id="rollback">rollback(database, body=None, x__xgafv=None)</code>
  <pre>Rolls back a transaction.

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.Rollback.
  &quot;transaction&quot;: &quot;A String&quot;, # Required. The transaction to roll back.
}

  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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="runAggregationQuery">runAggregationQuery(parent, body=None, x__xgafv=None)</code>
  <pre>Runs an aggregation query. Rather than producing Document results like Firestore.RunQuery, this API allows running an aggregation to produce a series of AggregationResult server-side. High-Level Example: ``` -- Return the number of documents in table given a filter. SELECT COUNT(*) FROM ( SELECT * FROM k where a = true ); ```

Args:
  parent: string, Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents` or `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.RunAggregationQuery.
  &quot;newTransaction&quot;: { # Options for creating a new transaction. # Starts a new transaction as part of the query, defaulting to read-only. The new transaction ID will be returned as the first response in the stream.
    &quot;readOnly&quot;: { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
      &quot;readTime&quot;: &quot;A String&quot;, # Reads documents at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
    },
    &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. Firestore does not allow 3rd party auth requests to create read-write. transactions. # The transaction can be used for both read and write operations.
      &quot;retryTransaction&quot;: &quot;A String&quot;, # An optional transaction to retry.
    },
  },
  &quot;readTime&quot;: &quot;A String&quot;, # Executes the query at the given timestamp. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  &quot;structuredAggregationQuery&quot;: { # Firestore query for running an aggregation over a StructuredQuery. # An aggregation query.
    &quot;aggregations&quot;: [ # Optional. Series of aggregations to apply over the results of the `structured_query`. Requires: * A minimum of one and maximum of five aggregations per query.
      { # Defines an aggregation that produces a single result.
        &quot;alias&quot;: &quot;A String&quot;, # Optional. Optional name of the field to store the result of the aggregation into. If not provided, Firestore will pick a default name following the format `field_`. For example: ``` AGGREGATE COUNT_UP_TO(1) AS count_up_to_1, COUNT_UP_TO(2), COUNT_UP_TO(3) AS count_up_to_3, COUNT(*) OVER ( ... ); ``` becomes: ``` AGGREGATE COUNT_UP_TO(1) AS count_up_to_1, COUNT_UP_TO(2) AS field_1, COUNT_UP_TO(3) AS count_up_to_3, COUNT(*) AS field_2 OVER ( ... ); ``` Requires: * Must be unique across all aggregation aliases. * Conform to document field name limitations.
        &quot;avg&quot;: { # Average of the values of the requested field. * Only numeric values will be aggregated. All non-numeric values including `NULL` are skipped. * If the aggregated values contain `NaN`, returns `NaN`. Infinity math follows IEEE-754 standards. * If the aggregated value set is empty, returns `NULL`. * Always returns the result as a double. # Average aggregator.
          &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to aggregate on.
            &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
          },
        },
        &quot;count&quot;: { # Count of documents that match the query. The `COUNT(*)` aggregation function operates on the entire document so it does not require a field reference. # Count aggregator.
          &quot;upTo&quot;: &quot;A String&quot;, # Optional. Optional constraint on the maximum number of documents to count. This provides a way to set an upper bound on the number of documents to scan, limiting latency, and cost. Unspecified is interpreted as no bound. High-Level Example: ``` AGGREGATE COUNT_UP_TO(1000) OVER ( SELECT * FROM k ); ``` Requires: * Must be greater than zero when present.
        },
        &quot;sum&quot;: { # Sum of the values of the requested field. * Only numeric values will be aggregated. All non-numeric values including `NULL` are skipped. * If the aggregated values contain `NaN`, returns `NaN`. Infinity math follows IEEE-754 standards. * If the aggregated value set is empty, returns 0. * Returns a 64-bit integer if all aggregated numbers are integers and the sum result does not overflow. Otherwise, the result is returned as a double. Note that even if all the aggregated values are integers, the result is returned as a double if it cannot fit within a 64-bit signed integer. When this occurs, the returned value will lose precision. * When underflow occurs, floating-point aggregation is non-deterministic. This means that running the same query repeatedly without any changes to the underlying values could produce slightly different results each time. In those cases, values should be stored as integers over floating-point numbers. # Sum aggregator.
          &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to aggregate on.
            &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
          },
        },
      },
    ],
    &quot;structuredQuery&quot;: { # A Firestore query. # Nested structured query.
      &quot;endAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to end the query at. This is similar to `START_AT` but with it controlling the end position rather than the start position. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
        &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
        &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
          { # A message that can hold any of the supported value types.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
        ],
      },
      &quot;from&quot;: [ # The collections to query.
        { # A selection of a collection, such as `messages as m1`.
          &quot;allDescendants&quot;: True or False, # When false, selects only collections that are immediate children of the `parent` specified in the containing `RunQueryRequest`. When true, selects all descendant collections.
          &quot;collectionId&quot;: &quot;A String&quot;, # The collection ID. When set, selects only collections with this ID.
        },
      ],
      &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Requires: * The value must be greater than or equal to zero if specified.
      &quot;offset&quot;: 42, # The number of documents to skip before returning the first result. This applies after the constraints specified by the `WHERE`, `START AT`, &amp; `END AT` but before the `LIMIT` clause. Requires: * The value must be greater than or equal to zero if specified.
      &quot;orderBy&quot;: [ # The order to apply to the query results. Firestore allows callers to provide a full ordering, a partial ordering, or no ordering at all. In all cases, Firestore guarantees a stable ordering through the following rules: * The `order_by` is required to reference all fields used with an inequality filter. * All fields that are required to be in the `order_by` but are not already present are appended in lexicographical ordering of the field name. * If an order on `__name__` is not specified, it is appended by default. Fields are appended with the same sort direction as the last order specified, or &#x27;ASCENDING&#x27; if no order was specified. For example: * `ORDER BY a` becomes `ORDER BY a ASC, __name__ ASC` * `ORDER BY a DESC` becomes `ORDER BY a DESC, __name__ DESC` * `WHERE a &gt; 1` becomes `WHERE a &gt; 1 ORDER BY a ASC, __name__ ASC` * `WHERE __name__ &gt; ... AND a &gt; 1` becomes `WHERE __name__ &gt; ... AND a &gt; 1 ORDER BY a ASC, __name__ ASC`
        { # An order on a field.
          &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
          &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to order by.
            &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
          },
        },
      ],
      &quot;select&quot;: { # The projection of document&#x27;s fields to return. # Optional sub-set of the fields to return. This acts as a DocumentMask over the documents returned from a query. When not set, assumes that the caller wants all fields returned.
        &quot;fields&quot;: [ # The fields to return. If empty, all fields are returned. To only return the name of the document, use `[&#x27;__name__&#x27;]`.
          { # A reference to a field in a document, ex: `stats.operations`.
            &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
          },
        ],
      },
      &quot;startAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to start the query at. The ordering of the result set is based on the `ORDER BY` clause of the original query. ``` SELECT * FROM k WHERE a = 1 AND b &gt; 2 ORDER BY b ASC, __name__ ASC; ``` This query&#x27;s results are ordered by `(b ASC, __name__ ASC)`. Cursors can reference either the full ordering or a prefix of the location, though it cannot reference more fields than what are in the provided `ORDER BY`. Continuing off the example above, attaching the following start cursors will have varying impact: - `START BEFORE (2, /k/123)`: start the query right before `a = 1 AND b &gt; 2 AND __name__ &gt; /k/123`. - `START AFTER (10)`: start the query right after `a = 1 AND b &gt; 10`. Unlike `OFFSET` which requires scanning over the first N results to skip, a start cursor allows the query to begin at a logical position. This position is not required to match an actual result, it will scan forward from this position to find the next document. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
        &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
        &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
          { # A message that can hold any of the supported value types.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
        ],
      },
      &quot;where&quot;: { # A filter. # The filter to apply.
        &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
          &quot;filters&quot;: [ # The list of filters to combine. Requires: * At least one filter is present.
            # Object with schema name: Filter
          ],
          &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
        },
        &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
          &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to filter by.
            &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
          },
          &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
          &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
        },
        &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
          &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to which to apply the operator.
            &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
          },
          &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
        },
      },
    },
  },
  &quot;transaction&quot;: &quot;A String&quot;, # Run the aggregation within an already active transaction. The value here is the opaque transaction ID to execute the query in.
}

  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 Firestore.RunAggregationQuery.
  &quot;readTime&quot;: &quot;A String&quot;, # The time at which the aggregate result was computed. This is always monotonically increasing; in this case, the previous AggregationResult in the result stream are guaranteed not to have changed between their `read_time` and this one. If the query returns no results, a response with `read_time` and no `result` will be sent, and this represents the time at which the query was run.
  &quot;result&quot;: { # The result of a single bucket from a Firestore aggregation query. The keys of `aggregate_fields` are the same for all results in an aggregation query, unlike document queries which can have different fields present for each result. # A single aggregation result. Not present when reporting partial progress.
    &quot;aggregateFields&quot;: { # The result of the aggregation functions, ex: `COUNT(*) AS total_docs`. The key is the alias assigned to the aggregation function on input and the size of this map equals the number of aggregation functions in the query.
      &quot;a_key&quot;: { # A message that can hold any of the supported value types.
        &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
          &quot;values&quot;: [ # Values in the array.
            # Object with schema name: Value
          ],
        },
        &quot;booleanValue&quot;: True or False, # A boolean value.
        &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
        &quot;doubleValue&quot;: 3.14, # A double value.
        &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
        &quot;mapValue&quot;: { # A map value. # A map value.
          &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
            &quot;a_key&quot;: # Object with schema name: Value
          },
        },
        &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
        &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
        &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
      },
    },
  },
  &quot;transaction&quot;: &quot;A String&quot;, # The transaction that was started as part of this request. Only present on the first response when the request requested to start a new transaction.
}</pre>
</div>

<div class="method">
    <code class="details" id="runQuery">runQuery(parent, body=None, x__xgafv=None)</code>
  <pre>Runs a query.

Args:
  parent: string, Required. The parent resource name. In the format: `projects/{project_id}/databases/{database_id}/documents` or `projects/{project_id}/databases/{database_id}/documents/{document_path}`. For example: `projects/my-project/databases/my-database/documents` or `projects/my-project/databases/my-database/documents/chatrooms/my-chatroom` (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.RunQuery.
  &quot;newTransaction&quot;: { # Options for creating a new transaction. # Starts a new transaction and reads the documents. Defaults to a read-only transaction. The new transaction ID will be returned as the first response in the stream.
    &quot;readOnly&quot;: { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
      &quot;readTime&quot;: &quot;A String&quot;, # Reads documents at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
    },
    &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. Firestore does not allow 3rd party auth requests to create read-write. transactions. # The transaction can be used for both read and write operations.
      &quot;retryTransaction&quot;: &quot;A String&quot;, # An optional transaction to retry.
    },
  },
  &quot;readTime&quot;: &quot;A String&quot;, # Reads documents as they were at the given time. This must be a microsecond precision timestamp within the past one hour, or if Point-in-Time Recovery is enabled, can additionally be a whole minute timestamp within the past 7 days.
  &quot;structuredQuery&quot;: { # A Firestore query. # A structured query.
    &quot;endAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to end the query at. This is similar to `START_AT` but with it controlling the end position rather than the start position. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
      &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
      &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
    },
    &quot;from&quot;: [ # The collections to query.
      { # A selection of a collection, such as `messages as m1`.
        &quot;allDescendants&quot;: True or False, # When false, selects only collections that are immediate children of the `parent` specified in the containing `RunQueryRequest`. When true, selects all descendant collections.
        &quot;collectionId&quot;: &quot;A String&quot;, # The collection ID. When set, selects only collections with this ID.
      },
    ],
    &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Requires: * The value must be greater than or equal to zero if specified.
    &quot;offset&quot;: 42, # The number of documents to skip before returning the first result. This applies after the constraints specified by the `WHERE`, `START AT`, &amp; `END AT` but before the `LIMIT` clause. Requires: * The value must be greater than or equal to zero if specified.
    &quot;orderBy&quot;: [ # The order to apply to the query results. Firestore allows callers to provide a full ordering, a partial ordering, or no ordering at all. In all cases, Firestore guarantees a stable ordering through the following rules: * The `order_by` is required to reference all fields used with an inequality filter. * All fields that are required to be in the `order_by` but are not already present are appended in lexicographical ordering of the field name. * If an order on `__name__` is not specified, it is appended by default. Fields are appended with the same sort direction as the last order specified, or &#x27;ASCENDING&#x27; if no order was specified. For example: * `ORDER BY a` becomes `ORDER BY a ASC, __name__ ASC` * `ORDER BY a DESC` becomes `ORDER BY a DESC, __name__ DESC` * `WHERE a &gt; 1` becomes `WHERE a &gt; 1 ORDER BY a ASC, __name__ ASC` * `WHERE __name__ &gt; ... AND a &gt; 1` becomes `WHERE __name__ &gt; ... AND a &gt; 1 ORDER BY a ASC, __name__ ASC`
      { # An order on a field.
        &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
        &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to order by.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
      },
    ],
    &quot;select&quot;: { # The projection of document&#x27;s fields to return. # Optional sub-set of the fields to return. This acts as a DocumentMask over the documents returned from a query. When not set, assumes that the caller wants all fields returned.
      &quot;fields&quot;: [ # The fields to return. If empty, all fields are returned. To only return the name of the document, use `[&#x27;__name__&#x27;]`.
        { # A reference to a field in a document, ex: `stats.operations`.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
      ],
    },
    &quot;startAt&quot;: { # A position in a query result set. # A potential prefix of a position in the result set to start the query at. The ordering of the result set is based on the `ORDER BY` clause of the original query. ``` SELECT * FROM k WHERE a = 1 AND b &gt; 2 ORDER BY b ASC, __name__ ASC; ``` This query&#x27;s results are ordered by `(b ASC, __name__ ASC)`. Cursors can reference either the full ordering or a prefix of the location, though it cannot reference more fields than what are in the provided `ORDER BY`. Continuing off the example above, attaching the following start cursors will have varying impact: - `START BEFORE (2, /k/123)`: start the query right before `a = 1 AND b &gt; 2 AND __name__ &gt; /k/123`. - `START AFTER (10)`: start the query right after `a = 1 AND b &gt; 10`. Unlike `OFFSET` which requires scanning over the first N results to skip, a start cursor allows the query to begin at a logical position. This position is not required to match an actual result, it will scan forward from this position to find the next document. Requires: * The number of values cannot be greater than the number of fields specified in the `ORDER BY` clause.
      &quot;before&quot;: True or False, # If the position is just before or just after the given values, relative to the sort order defined by the query.
      &quot;values&quot;: [ # The values that represent a position, in the order they appear in the order by clause of a query. Can contain fewer values than specified in the order by clause.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
    },
    &quot;where&quot;: { # A filter. # The filter to apply.
      &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
        &quot;filters&quot;: [ # The list of filters to combine. Requires: * At least one filter is present.
          # Object with schema name: Filter
        ],
        &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
      },
      &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
        &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to filter by.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
        &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
        &quot;value&quot;: { # A message that can hold any of the supported value types. # The value to compare to.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      },
      &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
        &quot;field&quot;: { # A reference to a field in a document, ex: `stats.operations`. # The field to which to apply the operator.
          &quot;fieldPath&quot;: &quot;A String&quot;, # A reference to a field in a document. Requires: * MUST be a dot-delimited (`.`) string of segments, where each segment conforms to document field name limitations.
        },
        &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
      },
    },
  },
  &quot;transaction&quot;: &quot;A String&quot;, # Run the query within an already active transaction. The value here is the opaque transaction ID to execute the query in.
}

  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 Firestore.RunQuery.
  &quot;document&quot;: { # A Firestore document. Must not exceed 1 MiB - 4 bytes. # A query result, not set when reporting partial progress.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
    &quot;fields&quot;: {
      &quot;a_key&quot;: { # A message that can hold any of the supported value types.
        &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
          &quot;values&quot;: [ # Values in the array.
            # Object with schema name: Value
          ],
        },
        &quot;booleanValue&quot;: True or False, # A boolean value.
        &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
        &quot;doubleValue&quot;: 3.14, # A double value.
        &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
        &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
        &quot;mapValue&quot;: { # A map value. # A map value.
          &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
            &quot;a_key&quot;: # Object with schema name: Value
          },
        },
        &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
        &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
        &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
      },
    },
    &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
  },
  &quot;done&quot;: True or False, # If present, Firestore has completely finished the request and no more documents will be returned.
  &quot;readTime&quot;: &quot;A String&quot;, # The time at which the document was read. This may be monotonically increasing; in this case, the previous documents in the result stream are guaranteed not to have changed between their `read_time` and this one. If the query returns no results, a response with `read_time` and no `document` will be sent, and this represents the time at which the query was run.
  &quot;skippedResults&quot;: 42, # The number of results that have been skipped due to an offset between the last response and the current response.
  &quot;transaction&quot;: &quot;A String&quot;, # The transaction that was started as part of this request. Can only be set in the first response, and only if RunQueryRequest.new_transaction was set in the request. If set, no other fields will be set in this response.
}</pre>
</div>

<div class="method">
    <code class="details" id="write">write(database, body=None, x__xgafv=None)</code>
  <pre>Streams batches of document updates and deletes, in order. This method is only available via gRPC or WebChannel (not REST).

Args:
  database: string, Required. The database name. In the format: `projects/{project_id}/databases/{database_id}`. This is only required in the first message. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for Firestore.Write. The first request creates a stream, or resumes an existing one from a token. When creating a new stream, the server replies with a response containing only an ID and a token, to use in the next request. When resuming a stream, the server first streams any responses later than the given token, then a response containing only an up-to-date token, to use in the next request.
  &quot;labels&quot;: { # Labels associated with this write request.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;streamId&quot;: &quot;A String&quot;, # The ID of the write stream to resume. This may only be set in the first message. When left empty, a new write stream will be created.
  &quot;streamToken&quot;: &quot;A String&quot;, # A stream token that was previously sent by the server. The client should set this field to the token from the most recent WriteResponse it has received. This acknowledges that the client has received responses up to this token. After sending this token, earlier tokens may not be used anymore. The server may close the stream if there are too many unacknowledged responses. Leave this field unset when creating a new stream. To resume a stream at a specific point, set this field and the `stream_id` field. Leave this field unset when creating a new stream.
  &quot;writes&quot;: [ # The writes to apply. Always executed atomically and in order. This must be empty on the first request. This may be empty on the last request. This must not be empty on all other requests.
    { # A write on a document.
      &quot;currentDocument&quot;: { # A precondition on a document, used for conditional operations. # An optional precondition on the document. The write will fail if this is set and not met by the target document.
        &quot;exists&quot;: True or False, # When set to `true`, the target document must exist. When set to `false`, the target document must not exist.
        &quot;updateTime&quot;: &quot;A String&quot;, # When set, the target document must exist and have been last updated at that time. Timestamp must be microsecond aligned.
      },
      &quot;delete&quot;: &quot;A String&quot;, # A document name to delete. In the format: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      &quot;transform&quot;: { # A transformation of a document. # Applies a transformation to a document.
        &quot;document&quot;: &quot;A String&quot;, # The name of the document to transform.
        &quot;fieldTransforms&quot;: [ # The list of transformations to apply to the fields of the document, in order. This must not be empty.
          { # A transformation of a field of the document.
            &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
            &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
              &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
                &quot;values&quot;: [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              &quot;booleanValue&quot;: True or False, # A boolean value.
              &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
              &quot;doubleValue&quot;: 3.14, # A double value.
              &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
              &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
              &quot;mapValue&quot;: { # A map value. # A map value.
                &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                  &quot;a_key&quot;: # Object with schema name: Value
                },
              },
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
              &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            },
            &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
          },
        ],
      },
      &quot;update&quot;: { # A Firestore document. Must not exceed 1 MiB - 4 bytes. # A document to write.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was created. This value increases monotonically when a document is deleted then recreated. It can also be compared to values from other documents and the `read_time` of a query.
        &quot;fields&quot;: {
          &quot;a_key&quot;: { # A message that can hold any of the supported value types.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
        },
        &quot;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        &quot;updateTime&quot;: &quot;A String&quot;, # Output only. The time at which the document was last changed. This value is initially set to the `create_time` then increases monotonically with each change to the document. It can also be compared to values from other documents and the `read_time` of a query.
      },
      &quot;updateMask&quot;: { # A set of field paths on a document. Used to restrict a get or update operation on a document to a subset of its fields. This is different from standard field masks, as this is always scoped to a Document, and takes in account the dynamic nature of Value. # The fields to update in this write. This field can be set only when the operation is `update`. If the mask is not set for an `update` and the document exists, any existing data will be overwritten. If the mask is set and the document on the server has fields not covered by the mask, they are left unchanged. Fields referenced in the mask, but not present in the input document, are deleted from the document on the server. The field paths in this mask must not contain a reserved field name.
        &quot;fieldPaths&quot;: [ # The list of field paths in the mask. See Document.fields for a field path syntax reference.
          &quot;A String&quot;,
        ],
      },
      &quot;updateTransforms&quot;: [ # The transforms to perform after update. This field can be set only when the operation is `update`. If present, this write is equivalent to performing `update` and `transform` to the same document atomically and in order.
        { # A transformation of a field of the document.
          &quot;appendMissingElements&quot;: { # An array value. # Append the given elements in order if they are not already present in the current field value. If the field is not an array, or if the field does not yet exist, it is first set to the empty array. Equivalent numbers of different types (e.g. 3L and 3.0) are considered equal when checking if a value is missing. NaN is equal to NaN, and Null is equal to Null. If the input contains multiple equivalent values, only the first will be considered. The corresponding transform_result will be the null value.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;fieldPath&quot;: &quot;A String&quot;, # The path of the field. See Document.fields for the field path syntax reference.
          &quot;increment&quot;: { # A message that can hold any of the supported value types. # Adds the given value to the field&#x27;s current value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If either of the given value or the current field value are doubles, both values will be interpreted as doubles. Double arithmetic and representation of double values follow IEEE 754 semantics. If there is positive/negative integer overflow, the field is resolved to the largest magnitude positive/negative integer.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;maximum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the maximum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the given value. If a maximum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the larger operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and zero input value is always the stored value. The maximum of any numeric value x and NaN is NaN.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;minimum&quot;: { # A message that can hold any of the supported value types. # Sets the field to the minimum of its current value and the given value. This must be an integer or a double value. If the field is not an integer or double, or if the field does not yet exist, the transformation will set the field to the input value. If a minimum operation is applied where the field and the input value are of mixed types (that is - one is an integer and one is a double) the field takes on the type of the smaller operand. If the operands are equivalent (e.g. 3 and 3.0), the field does not change. 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and zero input value is always the stored value. The minimum of any numeric value x and NaN is NaN.
            &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
              &quot;values&quot;: [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            &quot;booleanValue&quot;: True or False, # A boolean value.
            &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
            &quot;doubleValue&quot;: 3.14, # A double value.
            &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
            &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
            &quot;mapValue&quot;: { # A map value. # A map value.
              &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
                &quot;a_key&quot;: # Object with schema name: Value
              },
            },
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
            &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          },
          &quot;removeAllFromArray&quot;: { # An array value. # Remove all of the given elements from the array in the field. If the field is not an array, or if the field does not yet exist, it is set to the empty array. Equivalent numbers of the different types (e.g. 3L and 3.0) are considered equal when deciding whether an element should be removed. NaN is equal to NaN, and Null is equal to Null. This will remove all equivalent values if there are duplicates. The corresponding transform_result will be the null value.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
        },
      ],
    },
  ],
}

  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 Firestore.Write.
  &quot;commitTime&quot;: &quot;A String&quot;, # The time at which the commit occurred. Any read with an equal or greater `read_time` is guaranteed to see the effects of the write.
  &quot;streamId&quot;: &quot;A String&quot;, # The ID of the stream. Only set on the first message, when a new stream was created.
  &quot;streamToken&quot;: &quot;A String&quot;, # A token that represents the position of this response in the stream. This can be used by a client to resume the stream at this point. This field is always set.
  &quot;writeResults&quot;: [ # The result of applying the writes. This i-th write result corresponds to the i-th write in the request.
    { # The result of applying a write.
      &quot;transformResults&quot;: [ # The results of applying each DocumentTransform.FieldTransform, in the same order.
        { # A message that can hold any of the supported value types.
          &quot;arrayValue&quot;: { # An array value. # An array value. Cannot directly contain another array value, though can contain an map which contains another array.
            &quot;values&quot;: [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          &quot;booleanValue&quot;: True or False, # A boolean value.
          &quot;bytesValue&quot;: &quot;A String&quot;, # A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes are considered by queries.
          &quot;doubleValue&quot;: 3.14, # A double value.
          &quot;geoPointValue&quot;: { # An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges. # A geo point value representing a point on the surface of Earth.
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            &quot;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
          &quot;integerValue&quot;: &quot;A String&quot;, # An integer value.
          &quot;mapValue&quot;: { # A map value. # A map value.
            &quot;fields&quot;: { # The map&#x27;s fields. The map keys represent field names. Field names matching the regular expression `__.*__` are reserved. Reserved field names are forbidden except in certain documented contexts. The map keys, represented as UTF-8, must not exceed 1,500 bytes and cannot be empty.
              &quot;a_key&quot;: # Object with schema name: Value
            },
          },
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;referenceValue&quot;: &quot;A String&quot;, # A reference to a document. For example: `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          &quot;stringValue&quot;: &quot;A String&quot;, # A string value. The string, represented as UTF-8, must not exceed 1 MiB - 89 bytes. Only the first 1,500 bytes of the UTF-8 representation are considered by queries.
          &quot;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # The last update time of the document after applying the write. Not set after a `delete`. If the write did not actually change the document, this will be the previous update_time.
    },
  ],
}</pre>
</div>

</body></html>