<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, mask_fieldPaths=None, documentId=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, transaction=None, mask_fieldPaths=None, readTime=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, showMissing=None, pageToken=None, readTime=None, pageSize=None, orderBy=None, transaction=None, mask_fieldPaths=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(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#listen">listen(database, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Listens to changes.</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(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, currentDocument_exists=None, updateMask_fieldPaths=None, currentDocument_updateTime=None, mask_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="#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.</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;readTime&quot;: &quot;A String&quot;, # Reads documents as they were at the given time. This may not be older than 270 seconds.
    &quot;transaction&quot;: &quot;A String&quot;, # Reads documents in a transaction.
    &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 may not be older than 60 seconds.
      },
      &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. # 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 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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          },
          &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
          &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
        },
      },
      &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    },
    &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.
    &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;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}`.
  }</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;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.
        },
        &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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
            &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
            &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;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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
          },
        ],
        &quot;transform&quot;: { # A transformation of a document. # Applies a transformation to a document.
          &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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
              &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &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;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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
            },
          ],
          &quot;document&quot;: &quot;A String&quot;, # The name of the document to transform.
        },
        &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;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;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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
          },
          &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        },
      },
    ],
    &quot;labels&quot;: { # Labels associated with this batch write.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  }

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

Returns:
  An object of the form:

    { # 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;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;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;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;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.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
    ],
  }</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 may not be older than 60 seconds.
      },
      &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. # 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.
        },
        &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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
            &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
            &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;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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
          },
        ],
        &quot;transform&quot;: { # A transformation of a document. # Applies a transformation to a document.
          &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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
              &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &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;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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
            },
          ],
          &quot;document&quot;: &quot;A String&quot;, # The name of the document to transform.
        },
        &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;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;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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
          },
          &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        },
      },
    ],
  }

  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;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.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="createDocument">createDocument(parent, collectionId, body=None, mask_fieldPaths=None, documentId=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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
    &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
      },
      &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
      &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
    },
  },
  &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
}

  mask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  documentId: string, The client-assigned document ID to use for this document. Optional. If not specified, an ID will be assigned by the service.
  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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
      &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
        &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        },
        &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
        &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
      },
    },
    &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  }</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.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, transaction=None, mask_fieldPaths=None, readTime=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)
  transaction: string, Reads the document in a transaction.
  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 may not be older than 270 seconds.
  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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
      &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
        &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        },
        &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
        &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
      },
    },
    &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, collectionId, showMissing=None, pageToken=None, readTime=None, pageSize=None, orderBy=None, transaction=None, mask_fieldPaths=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, Required. The collection ID, relative to `parent`, to list. For example: `chatrooms` or `messages`. (required)
  showMissing: boolean, If the list should show missing documents. A missing document is a document that does not exist but has sub-documents. These documents will be returned with a key but will not have fields, Document.create_time, or Document.update_time set. Requests with `show_missing` may not specify `where` or `order_by`.
  pageToken: string, The `next_page_token` value returned from a previous List request, if any.
  readTime: string, Reads documents as they were at the given time. This may not be older than 270 seconds.
  pageSize: integer, The maximum number of documents to return.
  orderBy: string, The order to sort results by. For example: `priority desc, name`.
  transaction: string, Reads documents in a transaction.
  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:

    { # The response for Firestore.ListDocuments.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The next page token.
    &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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
          &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        },
        &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      },
    ],
  }</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;pageToken&quot;: &quot;A String&quot;, # A page token. Must be a value from ListCollectionIdsResponse.
    &quot;pageSize&quot;: 42, # The maximum number of results to return.
  }

  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;nextPageToken&quot;: &quot;A String&quot;, # A page token that may be used to continue the list.
    &quot;collectionIds&quot;: [ # The collection ids.
      &quot;A String&quot;,
    ],
  }</pre>
</div>

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

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

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

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

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

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

<div class="method">
    <code class="details" id="listen">listen(database, body=None, x__xgafv=None)</code>
  <pre>Listens to changes.

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;query&quot;: { # A target specified by a query. # A target specified by a query.
        &quot;structuredQuery&quot;: { # A Firestore query. # A structured query.
          &quot;orderBy&quot;: [ # The order to apply to the query results. Firestore guarantees a stable ordering through the following rules: * Any field required to appear in `order_by`, that is not already specified in `order_by`, is appended to the order in field name order by default. * 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: * `SELECT * FROM Foo ORDER BY A` becomes `SELECT * FROM Foo ORDER BY A, __name__` * `SELECT * FROM Foo ORDER BY A DESC` becomes `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC` * `SELECT * FROM Foo WHERE A &gt; 1` becomes `SELECT * FROM Foo WHERE A &gt; 1 ORDER BY A, __name__`
            { # An order on a field.
              &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to order by.
                &quot;fieldPath&quot;: &quot;A String&quot;,
              },
              &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
            },
          ],
          &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;endAt&quot;: { # A position in a query result set. # A end point for the query results.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
            ],
          },
          &quot;where&quot;: { # A filter. # The filter to apply.
            &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
              &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to which to apply the operator.
                &quot;fieldPath&quot;: &quot;A String&quot;,
              },
              &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
            },
            &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
              &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
              &quot;filters&quot;: [ # The list of filters to combine. Must contain at least one filter.
                # Object with schema name: Filter
              ],
            },
            &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
              &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
              &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to filter by.
                &quot;fieldPath&quot;: &quot;A String&quot;,
              },
            },
          },
          &quot;offset&quot;: 42, # The number of results to skip. Applies before limit, but after all other constraints. Must be &gt;= 0 if specified.
          &quot;select&quot;: { # The projection of document&#x27;s fields to return. # The projection to return.
            &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, such as `max(messages.time) as max_time`.
                &quot;fieldPath&quot;: &quot;A String&quot;,
              },
            ],
          },
          &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Must be &gt;= 0 if specified.
          &quot;startAt&quot;: { # A position in a query result set. # A starting point for the query results.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
            ],
          },
        },
        &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;once&quot;: True or False, # If the target should be removed once it is current and consistent.
      &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;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;targetId&quot;: 42, # The target ID that identifies the target on the stream. Must be a positive number and non-zero.
      &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;removeTarget&quot;: 42, # The ID of a target to remove from this stream.
    &quot;labels&quot;: { # Labels associated with this target change.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  }

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

Returns:
  An object of the form:

    { # 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;targetIds&quot;: [ # A set of target IDs of targets that match this document.
        42,
      ],
      &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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
          &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        },
        &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      },
      &quot;removedTargetIds&quot;: [ # A set of target IDs for targets that no longer match this document.
        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;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;document&quot;: &quot;A String&quot;, # The resource name of the Document that has gone out of view.
    },
    &quot;targetChange&quot;: { # Targets being watched have changed. # Targets have changed.
      &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;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,
      ],
      &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;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
        &quot;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;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;targetChangeType&quot;: &quot;A String&quot;, # The type of change that occurred.
    },
    &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.
      &quot;targetId&quot;: 42, # The target ID to which this filter applies.
    },
    &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;removedTargetIds&quot;: [ # A set of target IDs for targets that previously matched this entity.
        42,
      ],
      &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.
    },
  }</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;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;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;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;orderBy&quot;: [ # The order to apply to the query results. Firestore guarantees a stable ordering through the following rules: * Any field required to appear in `order_by`, that is not already specified in `order_by`, is appended to the order in field name order by default. * 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: * `SELECT * FROM Foo ORDER BY A` becomes `SELECT * FROM Foo ORDER BY A, __name__` * `SELECT * FROM Foo ORDER BY A DESC` becomes `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC` * `SELECT * FROM Foo WHERE A &gt; 1` becomes `SELECT * FROM Foo WHERE A &gt; 1 ORDER BY A, __name__`
        { # An order on a field.
          &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to order by.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
          &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
        },
      ],
      &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;endAt&quot;: { # A position in a query result set. # A end point for the query results.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
      &quot;where&quot;: { # A filter. # The filter to apply.
        &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
          &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to which to apply the operator.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
          &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
        },
        &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
          &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
          &quot;filters&quot;: [ # The list of filters to combine. Must contain at least one filter.
            # Object with schema name: Filter
          ],
        },
        &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
          &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
          &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
          &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to filter by.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;offset&quot;: 42, # The number of results to skip. Applies before limit, but after all other constraints. Must be &gt;= 0 if specified.
      &quot;select&quot;: { # The projection of document&#x27;s fields to return. # The projection to return.
        &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, such as `max(messages.time) as max_time`.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Must be &gt;= 0 if specified.
      &quot;startAt&quot;: { # A position in a query result set. # A starting point for the query results.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer 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.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.
      { # 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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
    ],
  }</pre>
</div>

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

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

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

<div class="method">
    <code class="details" id="patch">patch(name, body=None, currentDocument_exists=None, updateMask_fieldPaths=None, currentDocument_updateTime=None, mask_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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
    &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
      &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
      &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
      },
      &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
      &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
    },
  },
  &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
}

  currentDocument_exists: boolean, When set to `true`, the target document must exist. When set to `false`, the target document must not exist.
  updateMask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field path syntax reference. (repeated)
  currentDocument_updateTime: string, When set, the target document must exist and have been last updated at that time.
  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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
      &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
        &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
        &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        },
        &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
        &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
      },
    },
    &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  }</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); } The JSON representation for `Empty` is empty JSON object `{}`.
  }</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;transaction&quot;: &quot;A String&quot;, # Reads documents in a transaction.
    &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 may not be older than 60 seconds.
      },
      &quot;readWrite&quot;: { # Options for a transaction that can be used to read and write documents. # The transaction can be used for both read and write operations.
        &quot;retryTransaction&quot;: &quot;A String&quot;, # An optional transaction to retry.
      },
    },
    &quot;structuredQuery&quot;: { # A Firestore query. # A structured query.
      &quot;orderBy&quot;: [ # The order to apply to the query results. Firestore guarantees a stable ordering through the following rules: * Any field required to appear in `order_by`, that is not already specified in `order_by`, is appended to the order in field name order by default. * 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: * `SELECT * FROM Foo ORDER BY A` becomes `SELECT * FROM Foo ORDER BY A, __name__` * `SELECT * FROM Foo ORDER BY A DESC` becomes `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC` * `SELECT * FROM Foo WHERE A &gt; 1` becomes `SELECT * FROM Foo WHERE A &gt; 1 ORDER BY A, __name__`
        { # An order on a field.
          &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to order by.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
          &quot;direction&quot;: &quot;A String&quot;, # The direction to order by. Defaults to `ASCENDING`.
        },
      ],
      &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;endAt&quot;: { # A position in a query result set. # A end point for the query results.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
      &quot;where&quot;: { # A filter. # The filter to apply.
        &quot;unaryFilter&quot;: { # A filter with a single operand. # A filter that takes exactly one argument.
          &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to which to apply the operator.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
          &quot;op&quot;: &quot;A String&quot;, # The unary operator to apply.
        },
        &quot;compositeFilter&quot;: { # A filter that merges multiple other filters using the given operator. # A composite filter.
          &quot;op&quot;: &quot;A String&quot;, # The operator for combining multiple filters.
          &quot;filters&quot;: [ # The list of filters to combine. Must contain at least one filter.
            # Object with schema name: Filter
          ],
        },
        &quot;fieldFilter&quot;: { # A filter on a specific field. # A filter on a document field.
          &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
          &quot;op&quot;: &quot;A String&quot;, # The operator to filter by.
          &quot;field&quot;: { # A reference to a field, such as `max(messages.time) as max_time`. # The field to filter by.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
        },
      },
      &quot;offset&quot;: 42, # The number of results to skip. Applies before limit, but after all other constraints. Must be &gt;= 0 if specified.
      &quot;select&quot;: { # The projection of document&#x27;s fields to return. # The projection to return.
        &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, such as `max(messages.time) as max_time`.
            &quot;fieldPath&quot;: &quot;A String&quot;,
          },
        ],
      },
      &quot;limit&quot;: 42, # The maximum number of results to return. Applies after all other constraints. Must be &gt;= 0 if specified.
      &quot;startAt&quot;: { # A position in a query result set. # A starting point for the query results.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
    },
    &quot;readTime&quot;: &quot;A String&quot;, # Reads documents as they were at the given time. This may not be older than 270 seconds.
  }

  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;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;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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
          &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
          &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          },
          &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
          &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
        },
      },
      &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    },
    &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.
    &quot;skippedResults&quot;: 42, # The number of results that have been skipped due to an offset between the last response and the current 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.

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;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.
        },
        &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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
            &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
            &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;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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
          },
        ],
        &quot;transform&quot;: { # A transformation of a document. # Applies a transformation to a document.
          &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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &quot;setToServerValue&quot;: &quot;A String&quot;, # Sets the field to the given server value.
              &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
              &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;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;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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
                &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
                &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                  &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                },
                &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
                &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
              },
            },
          ],
          &quot;document&quot;: &quot;A String&quot;, # The name of the document to transform.
        },
        &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;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;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;: { # The document&#x27;s fields. The map keys represent field names. A simple field name contains only characters `a` to `z`, `A` to `Z`, `0` to `9`, or `_`, and must not start with `0` to `9`. For example, `foo_bar_17`. 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. Field paths may be used in other contexts to refer to structured fields defined here. For `map_value`, the field path is represented by the simple or quoted field names of the containing fields, delimited by `.`. For example, the structured field `&quot;foo&quot; : { map_value: { &quot;x&amp;y&quot; : { string_value: &quot;hello&quot; }}}` would be represented by the field path `foo.x&amp;y`. Within a field path, a quoted field name starts and ends with `` ` `` and may contain any character. Some characters, including `` ` ``, must be escaped using a `\`. For example, `` `x&amp;y` `` represents `x&amp;y` and `` `bak\`tik` `` represents `` bak`tik ``.
            &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
              &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
              &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              },
              &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
              &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
            },
          },
          &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;name&quot;: &quot;A String&quot;, # The resource name of the document, for example `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        },
      },
    ],
    &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.
  }

  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;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;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.
        &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;timestampValue&quot;: &quot;A String&quot;, # A timestamp value. Precise only to microseconds. When stored, any additional precision is rounded down.
            &quot;nullValue&quot;: &quot;A String&quot;, # A null value.
            &quot;geoPointValue&quot;: { # An object representing a latitude/longitude pair. This is expressed as a pair of doubles representing degrees latitude and degrees longitude. Unless specified otherwise, this 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;longitude&quot;: 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              &quot;latitude&quot;: 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            },
            &quot;doubleValue&quot;: 3.14, # A double 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;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;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;booleanValue&quot;: True or False, # A boolean value.
            &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;integerValue&quot;: &quot;A String&quot;, # An integer value.
          },
        ],
      },
    ],
    &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.
  }</pre>
</div>

</body></html>