Cloud Firestore API . projects . databases . documents

Instance Methods

batchGet(database, body, x__xgafv=None)

Gets multiple documents.

beginTransaction(database, body, x__xgafv=None)

Starts a new transaction.

commit(database, body, x__xgafv=None)

Commits a transaction, while optionally updating documents.

createDocument(parent, collectionId, body, mask_fieldPaths=None, x__xgafv=None, documentId=None)

Creates a new document.

delete(name, currentDocument_updateTime=None, x__xgafv=None, currentDocument_exists=None)

Deletes a document.

get(name, transaction=None, mask_fieldPaths=None, x__xgafv=None, readTime=None)

Gets a single document.

list(parent, collectionId, orderBy=None, showMissing=None, pageSize=None, mask_fieldPaths=None, x__xgafv=None, pageToken=None, readTime=None, transaction=None)

Lists documents.

listCollectionIds(parent, body, x__xgafv=None)

Lists all the collection IDs underneath a document.

listCollectionIds_next(previous_request, previous_response)

Retrieves the next page of results.

list_next(previous_request, previous_response)

Retrieves the next page of results.

listen(database, body, x__xgafv=None)

Listens to changes.

patch(name, body, updateMask_fieldPaths=None, mask_fieldPaths=None, x__xgafv=None, currentDocument_updateTime=None, currentDocument_exists=None)

Updates or inserts a document.

rollback(database, body, x__xgafv=None)

Rolls back a transaction.

runQuery(parent, body, x__xgafv=None)

Runs a query.

write(database, body, x__xgafv=None)

Streams batches of document updates and deletes, in order.

Method Details

batchGet(database, body, x__xgafv=None)
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, The database name. In the format:
`projects/{project_id}/databases/{database_id}`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The request for Firestore.BatchGetDocuments.
    "newTransaction": { # 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.
      "readWrite": { # Options for a transaction that can be used to read and write documents. # The transaction can be used for both read and write operations.
        "retryTransaction": "A String", # An optional transaction to retry.
      },
      "readOnly": { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
        "readTime": "A String", # Reads documents at the given time.
            # This may not be older than 60 seconds.
      },
    },
    "transaction": "A String", # Reads documents in a transaction.
    "documents": [ # 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.
      "A String",
    ],
    "mask": { # A set of field paths on a document. # 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.
        # 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.
      "fieldPaths": [ # The list of field paths in the mask. See Document.fields for a field
          # path syntax reference.
        "A String",
      ],
    },
    "readTime": "A String", # Reads documents as they were at the given time.
        # This may not be older than 60 seconds.
  }

  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.
    "found": { # A Firestore document. # A document that was requested.
        #
        # Must not exceed 1 MiB - 4 bytes.
      "fields": { # The document'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
          # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
          # represented by the field path `foo.x&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&y` `` represents `x&y` and
          # `` `bak\`tik` `` represents `` bak`tik ``.
        "a_key": { # A message that can hold any of the supported value types.
          "bytesValue": "A String", # A bytes value.
              #
              # Must not exceed 1 MiB - 89 bytes.
              # Only the first 1,500 bytes are considered by queries.
          "timestampValue": "A String", # A timestamp value.
              #
              # Precise only to microseconds. When stored, any additional precision is
              # rounded down.
          "nullValue": "A String", # A null value.
          "referenceValue": "A String", # A reference to a document. For example:
              # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          "doubleValue": 3.14, # A double value.
          "mapValue": { # A map value. # A map value.
            "fields": { # The map'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.
              "a_key": # Object with schema name: Value
            },
          },
          "stringValue": "A String", # 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.
          "booleanValue": True or False, # A boolean value.
          "arrayValue": { # An array value. # An array value.
              #
              # Cannot directly contain another array value, though can contain an
              # map which contains another array.
            "values": [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          "integerValue": "A String", # An integer value.
          "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
              # of doubles representing degrees latitude and degrees longitude. Unless
              # specified otherwise, this must conform to the
              # WGS84
              # standard. Values must be within normalized ranges.
            "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
        },
      },
      "updateTime": "A String", # 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.
      "createTime": "A String", # 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.
      "name": "A String", # The resource name of the document, for example
          # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    },
    "missing": "A String", # A document name that was requested but does not exist. In the format:
        # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    "transaction": "A String", # 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.
    "readTime": "A String", # 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.
  }
beginTransaction(database, body, x__xgafv=None)
Starts a new transaction.

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

{ # The request for Firestore.BeginTransaction.
    "options": { # Options for creating a new transaction. # The options for the transaction.
        # Defaults to a read-write transaction.
      "readWrite": { # Options for a transaction that can be used to read and write documents. # The transaction can be used for both read and write operations.
        "retryTransaction": "A String", # An optional transaction to retry.
      },
      "readOnly": { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
        "readTime": "A String", # Reads documents at the given time.
            # This may not be older than 60 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.BeginTransaction.
    "transaction": "A String", # The transaction that was started.
  }
commit(database, body, x__xgafv=None)
Commits a transaction, while optionally updating documents.

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

{ # The request for Firestore.Commit.
    "writes": [ # The writes to apply.
        # 
        # Always executed atomically and in order.
      { # A write on a document.
        "delete": "A String", # A document name to delete. In the format:
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        "updateMask": { # A set of field paths on a document. # 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.
            # 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.
          "fieldPaths": [ # The list of field paths in the mask. See Document.fields for a field
              # path syntax reference.
            "A String",
          ],
        },
        "update": { # A Firestore document. # A document to write.
            #
            # Must not exceed 1 MiB - 4 bytes.
          "fields": { # The document'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
              # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
              # represented by the field path `foo.x&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&y` `` represents `x&y` and
              # `` `bak\`tik` `` represents `` bak`tik ``.
            "a_key": { # A message that can hold any of the supported value types.
              "bytesValue": "A String", # A bytes value.
                  #
                  # Must not exceed 1 MiB - 89 bytes.
                  # Only the first 1,500 bytes are considered by queries.
              "timestampValue": "A String", # A timestamp value.
                  #
                  # Precise only to microseconds. When stored, any additional precision is
                  # rounded down.
              "nullValue": "A String", # A null value.
              "referenceValue": "A String", # A reference to a document. For example:
                  # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              "doubleValue": 3.14, # A double value.
              "mapValue": { # A map value. # A map value.
                "fields": { # The map'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.
                  "a_key": # Object with schema name: Value
                },
              },
              "stringValue": "A String", # 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.
              "booleanValue": True or False, # A boolean value.
              "arrayValue": { # An array value. # An array value.
                  #
                  # Cannot directly contain another array value, though can contain an
                  # map which contains another array.
                "values": [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              "integerValue": "A String", # An integer value.
              "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                  # of doubles representing degrees latitude and degrees longitude. Unless
                  # specified otherwise, this must conform to the
                  # WGS84
                  # standard. Values must be within normalized ranges.
                "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
            },
          },
          "updateTime": "A String", # 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.
          "createTime": "A String", # 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.
          "name": "A String", # The resource name of the document, for example
              # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        },
        "currentDocument": { # 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.
          "updateTime": "A String", # When set, the target document must exist and have been last updated at
              # that time.
          "exists": True or False, # When set to `true`, the target document must exist.
              # When set to `false`, the target document must not exist.
        },
        "transform": { # A transformation of a document. # Applies a transformation to a document.
            # At most one `transform` per document is allowed in a given request.
            # An `update` cannot follow a `transform` on the same document in a given
            # request.
          "document": "A String", # The name of the document to transform.
          "fieldTransforms": [ # 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.
              "setToServerValue": "A String", # Sets the field to the given server value.
              "maximum": { # 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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "increment": { # A message that can hold any of the supported value types. # Adds the given value to the field'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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "fieldPath": "A String", # The path of the field. See Document.fields for the field path syntax
                  # reference.
              "minimum": { # 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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "appendMissingElements": { # 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.
                "values": [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              "removeAllFromArray": { # 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.
                "values": [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
            },
          ],
        },
      },
    ],
    "transaction": "A String", # If set, applies all writes in this transaction, and commits it.
  }

  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.
    "writeResults": [ # 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.
        "updateTime": "A String", # 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.
        "transformResults": [ # The results of applying each DocumentTransform.FieldTransform, in the
            # same order.
          { # A message that can hold any of the supported value types.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
        ],
      },
    ],
    "commitTime": "A String", # The time at which the commit occurred.
  }
createDocument(parent, collectionId, body, mask_fieldPaths=None, x__xgafv=None, documentId=None)
Creates a new document.

Args:
  parent: string, 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, The collection ID, relative to `parent`, to list. For example: `chatrooms`. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Firestore document.
    # 
    # Must not exceed 1 MiB - 4 bytes.
  "fields": { # The document'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
      # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
      # represented by the field path `foo.x&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&y` `` represents `x&y` and
      # `` `bak\`tik` `` represents `` bak`tik ``.
    "a_key": { # A message that can hold any of the supported value types.
      "bytesValue": "A String", # A bytes value.
          #
          # Must not exceed 1 MiB - 89 bytes.
          # Only the first 1,500 bytes are considered by queries.
      "timestampValue": "A String", # A timestamp value.
          #
          # Precise only to microseconds. When stored, any additional precision is
          # rounded down.
      "nullValue": "A String", # A null value.
      "referenceValue": "A String", # A reference to a document. For example:
          # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      "doubleValue": 3.14, # A double value.
      "mapValue": { # A map value. # A map value.
        "fields": { # The map'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.
          "a_key": # Object with schema name: Value
        },
      },
      "stringValue": "A String", # 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.
      "booleanValue": True or False, # A boolean value.
      "arrayValue": { # An array value. # An array value.
          #
          # Cannot directly contain another array value, though can contain an
          # map which contains another array.
        "values": [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      "integerValue": "A String", # An integer value.
      "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
          # of doubles representing degrees latitude and degrees longitude. Unless
          # specified otherwise, this must conform to the
          # WGS84
          # standard. Values must be within normalized ranges.
        "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
    },
  },
  "updateTime": "A String", # 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.
  "createTime": "A String", # 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.
  "name": "A String", # 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  documentId: string, The client-assigned document ID to use for this document.

Optional. If not specified, an ID will be assigned by the service.

Returns:
  An object of the form:

    { # A Firestore document.
      #
      # Must not exceed 1 MiB - 4 bytes.
    "fields": { # The document'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
        # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
        # represented by the field path `foo.x&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&y` `` represents `x&y` and
        # `` `bak\`tik` `` represents `` bak`tik ``.
      "a_key": { # A message that can hold any of the supported value types.
        "bytesValue": "A String", # A bytes value.
            #
            # Must not exceed 1 MiB - 89 bytes.
            # Only the first 1,500 bytes are considered by queries.
        "timestampValue": "A String", # A timestamp value.
            #
            # Precise only to microseconds. When stored, any additional precision is
            # rounded down.
        "nullValue": "A String", # A null value.
        "referenceValue": "A String", # A reference to a document. For example:
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        "doubleValue": 3.14, # A double value.
        "mapValue": { # A map value. # A map value.
          "fields": { # The map'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.
            "a_key": # Object with schema name: Value
          },
        },
        "stringValue": "A String", # 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.
        "booleanValue": True or False, # A boolean value.
        "arrayValue": { # An array value. # An array value.
            #
            # Cannot directly contain another array value, though can contain an
            # map which contains another array.
          "values": [ # Values in the array.
            # Object with schema name: Value
          ],
        },
        "integerValue": "A String", # An integer value.
        "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
            # of doubles representing degrees latitude and degrees longitude. Unless
            # specified otherwise, this must conform to the
            # WGS84
            # standard. Values must be within normalized ranges.
          "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
      },
    },
    "updateTime": "A String", # 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.
    "createTime": "A String", # 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.
    "name": "A String", # The resource name of the document, for example
        # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  }
delete(name, currentDocument_updateTime=None, x__xgafv=None, currentDocument_exists=None)
Deletes a document.

Args:
  name: string, The resource name of the Document to delete. In the format:
`projects/{project_id}/databases/{database_id}/documents/{document_path}`. (required)
  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
  currentDocument_exists: boolean, When set to `true`, the target document must exist.
When set to `false`, the target document must not exist.

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 `{}`.
  }
get(name, transaction=None, mask_fieldPaths=None, x__xgafv=None, readTime=None)
Gets a single document.

Args:
  name: string, 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  readTime: string, Reads the version of the document at the given time.
This may not be older than 60 seconds.

Returns:
  An object of the form:

    { # A Firestore document.
      #
      # Must not exceed 1 MiB - 4 bytes.
    "fields": { # The document'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
        # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
        # represented by the field path `foo.x&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&y` `` represents `x&y` and
        # `` `bak\`tik` `` represents `` bak`tik ``.
      "a_key": { # A message that can hold any of the supported value types.
        "bytesValue": "A String", # A bytes value.
            #
            # Must not exceed 1 MiB - 89 bytes.
            # Only the first 1,500 bytes are considered by queries.
        "timestampValue": "A String", # A timestamp value.
            #
            # Precise only to microseconds. When stored, any additional precision is
            # rounded down.
        "nullValue": "A String", # A null value.
        "referenceValue": "A String", # A reference to a document. For example:
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        "doubleValue": 3.14, # A double value.
        "mapValue": { # A map value. # A map value.
          "fields": { # The map'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.
            "a_key": # Object with schema name: Value
          },
        },
        "stringValue": "A String", # 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.
        "booleanValue": True or False, # A boolean value.
        "arrayValue": { # An array value. # An array value.
            #
            # Cannot directly contain another array value, though can contain an
            # map which contains another array.
          "values": [ # Values in the array.
            # Object with schema name: Value
          ],
        },
        "integerValue": "A String", # An integer value.
        "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
            # of doubles representing degrees latitude and degrees longitude. Unless
            # specified otherwise, this must conform to the
            # WGS84
            # standard. Values must be within normalized ranges.
          "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
      },
    },
    "updateTime": "A String", # 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.
    "createTime": "A String", # 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.
    "name": "A String", # The resource name of the document, for example
        # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  }
list(parent, collectionId, orderBy=None, showMissing=None, pageSize=None, mask_fieldPaths=None, x__xgafv=None, pageToken=None, readTime=None, transaction=None)
Lists documents.

Args:
  parent: string, 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, The collection ID, relative to `parent`, to list. For example: `chatrooms`
or `messages`. (required)
  orderBy: string, The order to sort results by. For example: `priority desc, name`.
  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`.
  pageSize: integer, The maximum number of documents to return.
  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
  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 60 seconds.
  transaction: string, Reads documents in a transaction.

Returns:
  An object of the form:

    { # The response for Firestore.ListDocuments.
    "nextPageToken": "A String", # The next page token.
    "documents": [ # The Documents found.
      { # A Firestore document.
          #
          # Must not exceed 1 MiB - 4 bytes.
        "fields": { # The document'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
            # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
            # represented by the field path `foo.x&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&y` `` represents `x&y` and
            # `` `bak\`tik` `` represents `` bak`tik ``.
          "a_key": { # A message that can hold any of the supported value types.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
        },
        "updateTime": "A String", # 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.
        "createTime": "A String", # 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.
        "name": "A String", # The resource name of the document, for example
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      },
    ],
  }
listCollectionIds(parent, body, x__xgafv=None)
Lists all the collection IDs underneath a document.

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

{ # The request for Firestore.ListCollectionIds.
    "pageToken": "A String", # A page token. Must be a value from
        # ListCollectionIdsResponse.
    "pageSize": 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.
    "nextPageToken": "A String", # A page token that may be used to continue the list.
    "collectionIds": [ # The collection ids.
      "A String",
    ],
  }
listCollectionIds_next(previous_request, previous_response)
Retrieves the next page of results.

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

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    
list_next(previous_request, previous_response)
Retrieves the next page of results.

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

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    
listen(database, body, x__xgafv=None)
Listens to changes.

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

{ # A request for Firestore.Listen
    "labels": { # Labels associated with this target change.
      "a_key": "A String",
    },
    "addTarget": { # A specification of a set of documents to listen to. # A target to add to this stream.
      "documents": { # A target specified by a set of documents names. # A target specified by a set of document names.
        "documents": [ # 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.
          "A String",
        ],
      },
      "resumeToken": "A String", # A resume token from a prior TargetChange for an identical target.
          #
          # Using a resume token with a different target is unsupported and may fail.
      "targetId": 42, # A client provided target ID.
          #
          # If not set, the server will assign an ID for the target.
          #
          # Used for resuming a target without changing IDs. The IDs can either be
          # client-assigned or be server-assigned in a previous stream. All targets
          # with client provided IDs must be added before adding a target that needs
          # a server-assigned id.
      "query": { # A target specified by a query. # A target specified by a query.
        "structuredQuery": { # A Firestore query. # A structured query.
          "orderBy": [ # 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 'ASCENDING' 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 > 1` becomes
              #    `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__`
            { # An order on a field.
              "field": { # A reference to a field, such as `max(messages.time) as max_time`. # The field to order by.
                "fieldPath": "A String",
              },
              "direction": "A String", # The direction to order by. Defaults to `ASCENDING`.
            },
          ],
          "startAt": { # A position in a query result set. # A starting point for the query results.
            "values": [ # 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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
            ],
            "before": True or False, # If the position is just before or just after the given values, relative
                # to the sort order defined by the query.
          },
          "endAt": { # A position in a query result set. # A end point for the query results.
            "values": [ # 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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
            ],
            "before": True or False, # If the position is just before or just after the given values, relative
                # to the sort order defined by the query.
          },
          "limit": 42, # The maximum number of results to return.
              #
              # Applies after all other constraints.
              # Must be >= 0 if specified.
          "offset": 42, # The number of results to skip.
              #
              # Applies before limit, but after all other constraints. Must be >= 0 if
              # specified.
          "from": [ # The collections to query.
            { # A selection of a collection, such as `messages as m1`.
              "allDescendants": 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.
              "collectionId": "A String", # The collection ID.
                  # When set, selects only collections with this ID.
            },
          ],
          "where": { # A filter. # The filter to apply.
            "compositeFilter": { # A filter that merges multiple other filters using the given operator. # A composite filter.
              "filters": [ # The list of filters to combine.
                  # Must contain at least one filter.
                # Object with schema name: Filter
              ],
              "op": "A String", # The operator for combining multiple filters.
            },
            "fieldFilter": { # A filter on a specific field. # A filter on a document field.
              "field": { # A reference to a field, such as `max(messages.time) as max_time`. # The field to filter by.
                "fieldPath": "A String",
              },
              "value": { # A message that can hold any of the supported value types. # The value to compare to.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "op": "A String", # The operator to filter by.
            },
            "unaryFilter": { # A filter with a single operand. # A filter that takes exactly one argument.
              "field": { # A reference to a field, such as `max(messages.time) as max_time`. # The field to which to apply the operator.
                "fieldPath": "A String",
              },
              "op": "A String", # The unary operator to apply.
            },
          },
          "select": { # The projection of document's fields to return. # The projection to return.
            "fields": [ # The fields to return.
                #
                # If empty, all fields are returned. To only return the name
                # of the document, use `['__name__']`.
              { # A reference to a field, such as `max(messages.time) as max_time`.
                "fieldPath": "A String",
              },
            ],
          },
        },
        "parent": "A String", # 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`
      },
      "readTime": "A String", # Start listening after a specific `read_time`.
          #
          # The client must know the state of matching documents at this time.
      "once": True or False, # If the target should be removed once it is current and consistent.
    },
    "removeTarget": 42, # The ID of a target to remove from this stream.
  }

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

Returns:
  An object of the form:

    { # The response for Firestore.Listen.
    "filter": { # 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.
      "count": 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.
      "targetId": 42, # The target ID to which this filter applies.
    },
    "documentDelete": { # A Document has been deleted. # 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.
      "document": "A String", # The resource name of the Document that was deleted.
      "removedTargetIds": [ # A set of target IDs for targets that previously matched this entity.
        42,
      ],
      "readTime": "A String", # The read timestamp at which the delete was observed.
          #
          # Greater or equal to the `commit_time` of the delete.
    },
    "documentRemove": { # A Document has been removed from the view of the targets. # A Document has been removed from a target (because it is no longer
        # relevant to that target).
        #
        # 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.
      "document": "A String", # The resource name of the Document that has gone out of view.
      "removedTargetIds": [ # A set of target IDs for targets that previously matched this document.
        42,
      ],
      "readTime": "A String", # The read timestamp at which the remove was observed.
          #
          # Greater or equal to the `commit_time` of the change/delete/remove.
    },
    "documentChange": { # A Document has changed. # 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.
      "removedTargetIds": [ # A set of target IDs for targets that no longer match this document.
        42,
      ],
      "document": { # A Firestore document. # The new state of the Document.
          #
          # If `mask` is set, contains only fields that were updated or added.
          #
          # Must not exceed 1 MiB - 4 bytes.
        "fields": { # The document'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
            # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
            # represented by the field path `foo.x&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&y` `` represents `x&y` and
            # `` `bak\`tik` `` represents `` bak`tik ``.
          "a_key": { # A message that can hold any of the supported value types.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
        },
        "updateTime": "A String", # 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.
        "createTime": "A String", # 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.
        "name": "A String", # The resource name of the document, for example
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      },
      "targetIds": [ # A set of target IDs of targets that match this document.
        42,
      ],
    },
    "targetChange": { # Targets being watched have changed. # Targets have changed.
      "resumeToken": "A String", # 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.
      "targetChangeType": "A String", # The type of change that occurred.
      "cause": { # The `Status` type defines a logical error model that is suitable for # The error that resulted in this change, if applicable.
          # different programming environments, including REST APIs and RPC APIs. It is
          # used by [gRPC](https://github.com/grpc). The error model is designed to be:
          #
          # - Simple to use and understand for most users
          # - Flexible enough to meet unexpected needs
          #
          # # Overview
          #
          # The `Status` message contains three pieces of data: error code, error
          # message, and error details. The error code should be an enum value of
          # google.rpc.Code, but it may accept additional error codes if needed.  The
          # error message should be a developer-facing English message that helps
          # developers *understand* and *resolve* the error. If a localized user-facing
          # error message is needed, put the localized message in the error details or
          # localize it in the client. The optional error details may contain arbitrary
          # information about the error. There is a predefined set of error detail types
          # in the package `google.rpc` that can be used for common error conditions.
          #
          # # Language mapping
          #
          # The `Status` message is the logical representation of the error model, but it
          # is not necessarily the actual wire format. When the `Status` message is
          # exposed in different client libraries and different wire protocols, it can be
          # mapped differently. For example, it will likely be mapped to some exceptions
          # in Java, but more likely mapped to some error codes in C.
          #
          # # Other uses
          #
          # The error model and the `Status` message can be used in a variety of
          # environments, either with or without APIs, to provide a
          # consistent developer experience across different environments.
          #
          # Example uses of this error model include:
          #
          # - Partial errors. If a service needs to return partial errors to the client,
          #     it may embed the `Status` in the normal response to indicate the partial
          #     errors.
          #
          # - Workflow errors. A typical workflow has multiple steps. Each step may
          #     have a `Status` message for error reporting.
          #
          # - Batch operations. If a client uses batch request and batch response, the
          #     `Status` message should be used directly inside batch response, one for
          #     each error sub-response.
          #
          # - Asynchronous operations. If an API call embeds asynchronous operation
          #     results in its response, the status of those operations should be
          #     represented directly using the `Status` message.
          #
          # - Logging. If some API errors are stored in logs, the message `Status` could
          #     be used directly after any stripping needed for security/privacy reasons.
        "message": "A String", # 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.
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "details": [ # A list of messages that carry the error details.  There is a common set of
            # message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
      },
      "targetIds": [ # The target IDs of targets that have changed.
          #
          # If empty, the change applies to all targets.
          #
          # For `target_change_type=ADD`, the order of the target IDs matches the order
          # of the requests to add the targets. This allows clients to unambiguously
          # associate server-assigned target IDs with added targets.
          #
          # For other states, the order of the target IDs is not defined.
        42,
      ],
      "readTime": "A String", # 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.
    },
  }
patch(name, body, updateMask_fieldPaths=None, mask_fieldPaths=None, x__xgafv=None, currentDocument_updateTime=None, currentDocument_exists=None)
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. (required)
    The object takes the form of:

{ # A Firestore document.
    # 
    # Must not exceed 1 MiB - 4 bytes.
  "fields": { # The document'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
      # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
      # represented by the field path `foo.x&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&y` `` represents `x&y` and
      # `` `bak\`tik` `` represents `` bak`tik ``.
    "a_key": { # A message that can hold any of the supported value types.
      "bytesValue": "A String", # A bytes value.
          #
          # Must not exceed 1 MiB - 89 bytes.
          # Only the first 1,500 bytes are considered by queries.
      "timestampValue": "A String", # A timestamp value.
          #
          # Precise only to microseconds. When stored, any additional precision is
          # rounded down.
      "nullValue": "A String", # A null value.
      "referenceValue": "A String", # A reference to a document. For example:
          # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
      "doubleValue": 3.14, # A double value.
      "mapValue": { # A map value. # A map value.
        "fields": { # The map'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.
          "a_key": # Object with schema name: Value
        },
      },
      "stringValue": "A String", # 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.
      "booleanValue": True or False, # A boolean value.
      "arrayValue": { # An array value. # An array value.
          #
          # Cannot directly contain another array value, though can contain an
          # map which contains another array.
        "values": [ # Values in the array.
          # Object with schema name: Value
        ],
      },
      "integerValue": "A String", # An integer value.
      "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
          # of doubles representing degrees latitude and degrees longitude. Unless
          # specified otherwise, this must conform to the
          # WGS84
          # standard. Values must be within normalized ranges.
        "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
        "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
      },
    },
  },
  "updateTime": "A String", # 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.
  "createTime": "A String", # 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.
  "name": "A String", # The resource name of the document, for example
      # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
}

  updateMask_fieldPaths: string, The list of field paths in the mask. See Document.fields for a field
path syntax reference. (repeated)
  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
  currentDocument_updateTime: string, When set, the target document must exist and have been last updated at
that time.
  currentDocument_exists: boolean, When set to `true`, the target document must exist.
When set to `false`, the target document must not exist.

Returns:
  An object of the form:

    { # A Firestore document.
      #
      # Must not exceed 1 MiB - 4 bytes.
    "fields": { # The document'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
        # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
        # represented by the field path `foo.x&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&y` `` represents `x&y` and
        # `` `bak\`tik` `` represents `` bak`tik ``.
      "a_key": { # A message that can hold any of the supported value types.
        "bytesValue": "A String", # A bytes value.
            #
            # Must not exceed 1 MiB - 89 bytes.
            # Only the first 1,500 bytes are considered by queries.
        "timestampValue": "A String", # A timestamp value.
            #
            # Precise only to microseconds. When stored, any additional precision is
            # rounded down.
        "nullValue": "A String", # A null value.
        "referenceValue": "A String", # A reference to a document. For example:
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        "doubleValue": 3.14, # A double value.
        "mapValue": { # A map value. # A map value.
          "fields": { # The map'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.
            "a_key": # Object with schema name: Value
          },
        },
        "stringValue": "A String", # 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.
        "booleanValue": True or False, # A boolean value.
        "arrayValue": { # An array value. # An array value.
            #
            # Cannot directly contain another array value, though can contain an
            # map which contains another array.
          "values": [ # Values in the array.
            # Object with schema name: Value
          ],
        },
        "integerValue": "A String", # An integer value.
        "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
            # of doubles representing degrees latitude and degrees longitude. Unless
            # specified otherwise, this must conform to the
            # WGS84
            # standard. Values must be within normalized ranges.
          "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
          "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
        },
      },
    },
    "updateTime": "A String", # 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.
    "createTime": "A String", # 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.
    "name": "A String", # The resource name of the document, for example
        # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
  }
rollback(database, body, x__xgafv=None)
Rolls back a transaction.

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

{ # The request for Firestore.Rollback.
    "transaction": "A String", # 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 `{}`.
  }
runQuery(parent, body, x__xgafv=None)
Runs a query.

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

{ # The request for Firestore.RunQuery.
    "newTransaction": { # 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.
      "readWrite": { # Options for a transaction that can be used to read and write documents. # The transaction can be used for both read and write operations.
        "retryTransaction": "A String", # An optional transaction to retry.
      },
      "readOnly": { # Options for a transaction that can only be used to read documents. # The transaction can only be used for read operations.
        "readTime": "A String", # Reads documents at the given time.
            # This may not be older than 60 seconds.
      },
    },
    "transaction": "A String", # Reads documents in a transaction.
    "structuredQuery": { # A Firestore query. # A structured query.
      "orderBy": [ # 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 'ASCENDING' 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 > 1` becomes
          #    `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__`
        { # An order on a field.
          "field": { # A reference to a field, such as `max(messages.time) as max_time`. # The field to order by.
            "fieldPath": "A String",
          },
          "direction": "A String", # The direction to order by. Defaults to `ASCENDING`.
        },
      ],
      "startAt": { # A position in a query result set. # A starting point for the query results.
        "values": [ # 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.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
        ],
        "before": True or False, # If the position is just before or just after the given values, relative
            # to the sort order defined by the query.
      },
      "endAt": { # A position in a query result set. # A end point for the query results.
        "values": [ # 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.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
        ],
        "before": True or False, # If the position is just before or just after the given values, relative
            # to the sort order defined by the query.
      },
      "limit": 42, # The maximum number of results to return.
          #
          # Applies after all other constraints.
          # Must be >= 0 if specified.
      "offset": 42, # The number of results to skip.
          #
          # Applies before limit, but after all other constraints. Must be >= 0 if
          # specified.
      "from": [ # The collections to query.
        { # A selection of a collection, such as `messages as m1`.
          "allDescendants": 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.
          "collectionId": "A String", # The collection ID.
              # When set, selects only collections with this ID.
        },
      ],
      "where": { # A filter. # The filter to apply.
        "compositeFilter": { # A filter that merges multiple other filters using the given operator. # A composite filter.
          "filters": [ # The list of filters to combine.
              # Must contain at least one filter.
            # Object with schema name: Filter
          ],
          "op": "A String", # The operator for combining multiple filters.
        },
        "fieldFilter": { # A filter on a specific field. # A filter on a document field.
          "field": { # A reference to a field, such as `max(messages.time) as max_time`. # The field to filter by.
            "fieldPath": "A String",
          },
          "value": { # A message that can hold any of the supported value types. # The value to compare to.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
          "op": "A String", # The operator to filter by.
        },
        "unaryFilter": { # A filter with a single operand. # A filter that takes exactly one argument.
          "field": { # A reference to a field, such as `max(messages.time) as max_time`. # The field to which to apply the operator.
            "fieldPath": "A String",
          },
          "op": "A String", # The unary operator to apply.
        },
      },
      "select": { # The projection of document's fields to return. # The projection to return.
        "fields": [ # The fields to return.
            #
            # If empty, all fields are returned. To only return the name
            # of the document, use `['__name__']`.
          { # A reference to a field, such as `max(messages.time) as max_time`.
            "fieldPath": "A String",
          },
        ],
      },
    },
    "readTime": "A String", # Reads documents as they were at the given time.
        # This may not be older than 60 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.
    "skippedResults": 42, # The number of results that have been skipped due to an offset between
        # the last response and the current response.
    "transaction": "A String", # 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.
    "document": { # A Firestore document. # A query result.
        # Not set when reporting partial progress.
        #
        # Must not exceed 1 MiB - 4 bytes.
      "fields": { # The document'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
          # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
          # represented by the field path `foo.x&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&y` `` represents `x&y` and
          # `` `bak\`tik` `` represents `` bak`tik ``.
        "a_key": { # A message that can hold any of the supported value types.
          "bytesValue": "A String", # A bytes value.
              #
              # Must not exceed 1 MiB - 89 bytes.
              # Only the first 1,500 bytes are considered by queries.
          "timestampValue": "A String", # A timestamp value.
              #
              # Precise only to microseconds. When stored, any additional precision is
              # rounded down.
          "nullValue": "A String", # A null value.
          "referenceValue": "A String", # A reference to a document. For example:
              # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
          "doubleValue": 3.14, # A double value.
          "mapValue": { # A map value. # A map value.
            "fields": { # The map'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.
              "a_key": # Object with schema name: Value
            },
          },
          "stringValue": "A String", # 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.
          "booleanValue": True or False, # A boolean value.
          "arrayValue": { # An array value. # An array value.
              #
              # Cannot directly contain another array value, though can contain an
              # map which contains another array.
            "values": [ # Values in the array.
              # Object with schema name: Value
            ],
          },
          "integerValue": "A String", # An integer value.
          "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
              # of doubles representing degrees latitude and degrees longitude. Unless
              # specified otherwise, this must conform to the
              # WGS84
              # standard. Values must be within normalized ranges.
            "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
            "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
          },
        },
      },
      "updateTime": "A String", # 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.
      "createTime": "A String", # 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.
      "name": "A String", # The resource name of the document, for example
          # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
    },
    "readTime": "A String", # 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.
  }
write(database, body, x__xgafv=None)
Streams batches of document updates and deletes, in order.

Args:
  database: string, 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. (required)
    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.
    "writes": [ # 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.
        "delete": "A String", # A document name to delete. In the format:
            # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        "updateMask": { # A set of field paths on a document. # 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.
            # 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.
          "fieldPaths": [ # The list of field paths in the mask. See Document.fields for a field
              # path syntax reference.
            "A String",
          ],
        },
        "update": { # A Firestore document. # A document to write.
            #
            # Must not exceed 1 MiB - 4 bytes.
          "fields": { # The document'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
              # `"foo" : { map_value: { "x&y" : { string_value: "hello" }}}` would be
              # represented by the field path `foo.x&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&y` `` represents `x&y` and
              # `` `bak\`tik` `` represents `` bak`tik ``.
            "a_key": { # A message that can hold any of the supported value types.
              "bytesValue": "A String", # A bytes value.
                  #
                  # Must not exceed 1 MiB - 89 bytes.
                  # Only the first 1,500 bytes are considered by queries.
              "timestampValue": "A String", # A timestamp value.
                  #
                  # Precise only to microseconds. When stored, any additional precision is
                  # rounded down.
              "nullValue": "A String", # A null value.
              "referenceValue": "A String", # A reference to a document. For example:
                  # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
              "doubleValue": 3.14, # A double value.
              "mapValue": { # A map value. # A map value.
                "fields": { # The map'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.
                  "a_key": # Object with schema name: Value
                },
              },
              "stringValue": "A String", # 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.
              "booleanValue": True or False, # A boolean value.
              "arrayValue": { # An array value. # An array value.
                  #
                  # Cannot directly contain another array value, though can contain an
                  # map which contains another array.
                "values": [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              "integerValue": "A String", # An integer value.
              "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                  # of doubles representing degrees latitude and degrees longitude. Unless
                  # specified otherwise, this must conform to the
                  # WGS84
                  # standard. Values must be within normalized ranges.
                "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
              },
            },
          },
          "updateTime": "A String", # 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.
          "createTime": "A String", # 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.
          "name": "A String", # The resource name of the document, for example
              # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
        },
        "currentDocument": { # 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.
          "updateTime": "A String", # When set, the target document must exist and have been last updated at
              # that time.
          "exists": True or False, # When set to `true`, the target document must exist.
              # When set to `false`, the target document must not exist.
        },
        "transform": { # A transformation of a document. # Applies a transformation to a document.
            # At most one `transform` per document is allowed in a given request.
            # An `update` cannot follow a `transform` on the same document in a given
            # request.
          "document": "A String", # The name of the document to transform.
          "fieldTransforms": [ # 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.
              "setToServerValue": "A String", # Sets the field to the given server value.
              "maximum": { # 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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "increment": { # A message that can hold any of the supported value types. # Adds the given value to the field'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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "fieldPath": "A String", # The path of the field. See Document.fields for the field path syntax
                  # reference.
              "minimum": { # 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.
                "bytesValue": "A String", # A bytes value.
                    #
                    # Must not exceed 1 MiB - 89 bytes.
                    # Only the first 1,500 bytes are considered by queries.
                "timestampValue": "A String", # A timestamp value.
                    #
                    # Precise only to microseconds. When stored, any additional precision is
                    # rounded down.
                "nullValue": "A String", # A null value.
                "referenceValue": "A String", # A reference to a document. For example:
                    # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
                "doubleValue": 3.14, # A double value.
                "mapValue": { # A map value. # A map value.
                  "fields": { # The map'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.
                    "a_key": # Object with schema name: Value
                  },
                },
                "stringValue": "A String", # 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.
                "booleanValue": True or False, # A boolean value.
                "arrayValue": { # An array value. # An array value.
                    #
                    # Cannot directly contain another array value, though can contain an
                    # map which contains another array.
                  "values": [ # Values in the array.
                    # Object with schema name: Value
                  ],
                },
                "integerValue": "A String", # An integer value.
                "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                    # of doubles representing degrees latitude and degrees longitude. Unless
                    # specified otherwise, this must conform to the
                    # WGS84
                    # standard. Values must be within normalized ranges.
                  "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
                  "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
                },
              },
              "appendMissingElements": { # 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.
                "values": [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
              "removeAllFromArray": { # 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.
                "values": [ # Values in the array.
                  # Object with schema name: Value
                ],
              },
            },
          ],
        },
      },
    ],
    "labels": { # Labels associated with this write request.
      "a_key": "A String",
    },
    "streamToken": "A String", # 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.
    "streamId": "A String", # 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.
    "writeResults": [ # 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.
        "updateTime": "A String", # 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.
        "transformResults": [ # The results of applying each DocumentTransform.FieldTransform, in the
            # same order.
          { # A message that can hold any of the supported value types.
            "bytesValue": "A String", # A bytes value.
                #
                # Must not exceed 1 MiB - 89 bytes.
                # Only the first 1,500 bytes are considered by queries.
            "timestampValue": "A String", # A timestamp value.
                #
                # Precise only to microseconds. When stored, any additional precision is
                # rounded down.
            "nullValue": "A String", # A null value.
            "referenceValue": "A String", # A reference to a document. For example:
                # `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
            "doubleValue": 3.14, # A double value.
            "mapValue": { # A map value. # A map value.
              "fields": { # The map'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.
                "a_key": # Object with schema name: Value
              },
            },
            "stringValue": "A String", # 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.
            "booleanValue": True or False, # A boolean value.
            "arrayValue": { # An array value. # An array value.
                #
                # Cannot directly contain another array value, though can contain an
                # map which contains another array.
              "values": [ # Values in the array.
                # Object with schema name: Value
              ],
            },
            "integerValue": "A String", # An integer value.
            "geoPointValue": { # An object representing a latitude/longitude pair. This is expressed as a pair # A geo point value representing a point on the surface of Earth.
                # of doubles representing degrees latitude and degrees longitude. Unless
                # specified otherwise, this must conform to the
                # WGS84
                # standard. Values must be within normalized ranges.
              "latitude": 3.14, # The latitude in degrees. It must be in the range [-90.0, +90.0].
              "longitude": 3.14, # The longitude in degrees. It must be in the range [-180.0, +180.0].
            },
          },
        ],
      },
    ],
    "streamToken": "A String", # 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.
    "commitTime": "A String", # The time at which the commit occurred.
    "streamId": "A String", # The ID of the stream.
        # Only set on the first message, when a new stream was created.
  }