text: // NOTE: This file was generated by the ServiceGenerator.
  
  // ----------------------------------------------------------------------------
  // API:
  //   Cloud Firestore API (firestore/v1)
  // Description:
  //   Accesses the NoSQL document database built for automatic scaling, high
  //   performance, and ease of application development.
  // Documentation:
  //   https://cloud.google.com/firestore
  
  #if GTLR_BUILT_AS_FRAMEWORK
    #import "GTLR/GTLRObject.h"
  #else
    #import "GTLRObject.h"
  #endif
  
  #if GTLR_RUNTIME_VERSION != 3000
  #error This file was generated by a different version of ServiceGenerator which is incompatible with this GTLR library source.
  #endif
  
  @class GTLRFirestore_ArrayValue;
  @class GTLRFirestore_CollectionSelector;
  @class GTLRFirestore_CompositeFilter;
  @class GTLRFirestore_Cursor;
  @class GTLRFirestore_Document;
  @class GTLRFirestore_Document_Fields;
  @class GTLRFirestore_DocumentChange;
  @class GTLRFirestore_DocumentDelete;
  @class GTLRFirestore_DocumentMask;
  @class GTLRFirestore_DocumentRemove;
  @class GTLRFirestore_DocumentsTarget;
  @class GTLRFirestore_DocumentTransform;
  @class GTLRFirestore_ExistenceFilter;
  @class GTLRFirestore_FieldFilter;
  @class GTLRFirestore_FieldReference;
  @class GTLRFirestore_FieldTransform;
  @class GTLRFirestore_Filter;
  @class GTLRFirestore_GoogleFirestoreAdminV1Field;
  @class GTLRFirestore_GoogleFirestoreAdminV1Index;
  @class GTLRFirestore_GoogleFirestoreAdminV1IndexConfig;
  @class GTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta;
  @class GTLRFirestore_GoogleFirestoreAdminV1IndexField;
  @class GTLRFirestore_GoogleFirestoreAdminV1Progress;
  @class GTLRFirestore_GoogleLongrunningOperation;
  @class GTLRFirestore_GoogleLongrunningOperation_Metadata;
  @class GTLRFirestore_GoogleLongrunningOperation_Response;
  @class GTLRFirestore_LatLng;
  @class GTLRFirestore_ListenRequest_Labels;
  @class GTLRFirestore_Location;
  @class GTLRFirestore_Location_Labels;
  @class GTLRFirestore_Location_Metadata;
  @class GTLRFirestore_MapValue;
  @class GTLRFirestore_MapValue_Fields;
  @class GTLRFirestore_Order;
  @class GTLRFirestore_Precondition;
  @class GTLRFirestore_Projection;
  @class GTLRFirestore_QueryTarget;
  @class GTLRFirestore_ReadOnly;
  @class GTLRFirestore_ReadWrite;
  @class GTLRFirestore_Status;
  @class GTLRFirestore_Status_Details_Item;
  @class GTLRFirestore_StructuredQuery;
  @class GTLRFirestore_Target;
  @class GTLRFirestore_TargetChange;
  @class GTLRFirestore_TransactionOptions;
  @class GTLRFirestore_UnaryFilter;
  @class GTLRFirestore_Value;
  @class GTLRFirestore_Write;
  @class GTLRFirestore_WriteRequest_Labels;
  @class GTLRFirestore_WriteResult;
  
  // Generated comments include content from the discovery document; avoid them
  // causing warnings since clang's checks are some what arbitrary.
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wdocumentation"
  
  NS_ASSUME_NONNULL_BEGIN
  
  // ----------------------------------------------------------------------------
  // Constants - For some of the classes' properties below.
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_CompositeFilter.op
  
  /**
   *  The results are required to satisfy each of the combined filters.
   *
   *  Value: "AND"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_CompositeFilter_Op_And;
  /**
   *  Unspecified. This value must not be used.
   *
   *  Value: "OPERATOR_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_CompositeFilter_Op_OperatorUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_FieldFilter.op
  
  /**
   *  Contains. Requires that the field is an array.
   *
   *  Value: "ARRAY_CONTAINS"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_ArrayContains;
  /**
   *  Equal.
   *
   *  Value: "EQUAL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_Equal;
  /**
   *  Greater than. Requires that the field come first in `order_by`.
   *
   *  Value: "GREATER_THAN"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_GreaterThan;
  /**
   *  Greater than or equal. Requires that the field come first in
   *  `order_by`.
   *
   *  Value: "GREATER_THAN_OR_EQUAL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_GreaterThanOrEqual;
  /**
   *  Less than. Requires that the field come first in `order_by`.
   *
   *  Value: "LESS_THAN"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_LessThan;
  /**
   *  Less than or equal. Requires that the field come first in `order_by`.
   *
   *  Value: "LESS_THAN_OR_EQUAL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_LessThanOrEqual;
  /**
   *  Unspecified. This value must not be used.
   *
   *  Value: "OPERATOR_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldFilter_Op_OperatorUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_FieldTransform.setToServerValue
  
  /**
   *  The time at which the server processed the request, with millisecond
   *  precision.
   *
   *  Value: "REQUEST_TIME"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldTransform_SetToServerValue_RequestTime;
  /**
   *  Unspecified. This value must not be used.
   *
   *  Value: "SERVER_VALUE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_FieldTransform_SetToServerValue_ServerValueUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata.operationState
  
  /**
   *  Request has finished being cancelled after user called
   *  google.longrunning.Operations.CancelOperation.
   *
   *  Value: "CANCELLED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Cancelled;
  /**
   *  Request is in the process of being cancelled after user called
   *  google.longrunning.Operations.CancelOperation on the operation.
   *
   *  Value: "CANCELLING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Cancelling;
  /**
   *  Request has finished being processed, but encountered an error.
   *
   *  Value: "FAILED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Failed;
  /**
   *  Request has been processed and is in its finalization stage.
   *
   *  Value: "FINALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Finalizing;
  /**
   *  Request is being prepared for processing.
   *
   *  Value: "INITIALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Initializing;
  /**
   *  Unspecified.
   *
   *  Value: "OPERATION_STATE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_OperationStateUnspecified;
  /**
   *  Request is actively being processed.
   *
   *  Value: "PROCESSING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Processing;
  /**
   *  Request has completed successfully.
   *
   *  Value: "SUCCESSFUL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Successful;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata.state
  
  /**
   *  Request has finished being cancelled after user called
   *  google.longrunning.Operations.CancelOperation.
   *
   *  Value: "CANCELLED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Cancelled;
  /**
   *  Request is in the process of being cancelled after user called
   *  google.longrunning.Operations.CancelOperation on the operation.
   *
   *  Value: "CANCELLING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Cancelling;
  /**
   *  Request has finished being processed, but encountered an error.
   *
   *  Value: "FAILED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Failed;
  /**
   *  Request has been processed and is in its finalization stage.
   *
   *  Value: "FINALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Finalizing;
  /**
   *  Request is being prepared for processing.
   *
   *  Value: "INITIALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Initializing;
  /**
   *  Unspecified.
   *
   *  Value: "OPERATION_STATE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_OperationStateUnspecified;
  /**
   *  Request is actively being processed.
   *
   *  Value: "PROCESSING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Processing;
  /**
   *  Request has completed successfully.
   *
   *  Value: "SUCCESSFUL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Successful;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata.operationState
  
  /**
   *  Request has finished being cancelled after user called
   *  google.longrunning.Operations.CancelOperation.
   *
   *  Value: "CANCELLED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Cancelled;
  /**
   *  Request is in the process of being cancelled after user called
   *  google.longrunning.Operations.CancelOperation on the operation.
   *
   *  Value: "CANCELLING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Cancelling;
  /**
   *  Request has finished being processed, but encountered an error.
   *
   *  Value: "FAILED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Failed;
  /**
   *  Request has been processed and is in its finalization stage.
   *
   *  Value: "FINALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Finalizing;
  /**
   *  Request is being prepared for processing.
   *
   *  Value: "INITIALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Initializing;
  /**
   *  Unspecified.
   *
   *  Value: "OPERATION_STATE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_OperationStateUnspecified;
  /**
   *  Request is actively being processed.
   *
   *  Value: "PROCESSING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Processing;
  /**
   *  Request has completed successfully.
   *
   *  Value: "SUCCESSFUL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Successful;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1Index.queryScope
  
  /**
   *  Indexes with a collection query scope specified allow queries
   *  against a collection that is the child of a specific document, specified
   *  at query time, and that has the collection id specified by the index.
   *
   *  Value: "COLLECTION"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1Index_QueryScope_Collection;
  /**
   *  The query scope is unspecified. Not a valid option.
   *
   *  Value: "QUERY_SCOPE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1Index_QueryScope_QueryScopeUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1Index.state
  
  /**
   *  The index is being created.
   *  There is an active long-running operation for the index.
   *  The index is updated when writing a document.
   *  Some index data may exist.
   *
   *  Value: "CREATING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1Index_State_Creating;
  /**
   *  The index was being created, but something went wrong.
   *  There is no active long-running operation for the index,
   *  and the most recently finished long-running operation failed.
   *  The index is not updated when writing a document.
   *  Some index data may exist.
   *  Use the google.longrunning.Operations API to determine why the operation
   *  that last attempted to create this index failed, then re-create the
   *  index.
   *
   *  Value: "NEEDS_REPAIR"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1Index_State_NeedsRepair;
  /**
   *  The index is ready to be used.
   *  The index is updated when writing a document.
   *  The index is fully populated from all stored documents it applies to.
   *
   *  Value: "READY"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1Index_State_Ready;
  /**
   *  The state is unspecified.
   *
   *  Value: "STATE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1Index_State_StateUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta.changeType
  
  /**
   *  The single field index is being added.
   *
   *  Value: "ADD"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta_ChangeType_Add;
  /**
   *  The type of change is not specified or known.
   *
   *  Value: "CHANGE_TYPE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta_ChangeType_ChangeTypeUnspecified;
  /**
   *  The single field index is being removed.
   *
   *  Value: "REMOVE"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta_ChangeType_Remove;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1IndexField.arrayConfig
  
  /**
   *  The index does not support additional array queries.
   *
   *  Value: "ARRAY_CONFIG_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexField_ArrayConfig_ArrayConfigUnspecified;
  /**
   *  The index supports array containment queries.
   *
   *  Value: "CONTAINS"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexField_ArrayConfig_Contains;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1IndexField.order
  
  /**
   *  The field is ordered by ascending field value.
   *
   *  Value: "ASCENDING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexField_Order_Ascending;
  /**
   *  The field is ordered by descending field value.
   *
   *  Value: "DESCENDING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexField_Order_Descending;
  /**
   *  The ordering is unspecified. Not a valid option.
   *
   *  Value: "ORDER_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexField_Order_OrderUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata.state
  
  /**
   *  Request has finished being cancelled after user called
   *  google.longrunning.Operations.CancelOperation.
   *
   *  Value: "CANCELLED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Cancelled;
  /**
   *  Request is in the process of being cancelled after user called
   *  google.longrunning.Operations.CancelOperation on the operation.
   *
   *  Value: "CANCELLING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Cancelling;
  /**
   *  Request has finished being processed, but encountered an error.
   *
   *  Value: "FAILED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Failed;
  /**
   *  Request has been processed and is in its finalization stage.
   *
   *  Value: "FINALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Finalizing;
  /**
   *  Request is being prepared for processing.
   *
   *  Value: "INITIALIZING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Initializing;
  /**
   *  Unspecified.
   *
   *  Value: "OPERATION_STATE_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_OperationStateUnspecified;
  /**
   *  Request is actively being processed.
   *
   *  Value: "PROCESSING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Processing;
  /**
   *  Request has completed successfully.
   *
   *  Value: "SUCCESSFUL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Successful;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_Order.direction
  
  /**
   *  Ascending.
   *
   *  Value: "ASCENDING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_Order_Direction_Ascending;
  /**
   *  Descending.
   *
   *  Value: "DESCENDING"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_Order_Direction_Descending;
  /**
   *  Unspecified.
   *
   *  Value: "DIRECTION_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_Order_Direction_DirectionUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_TargetChange.targetChangeType
  
  /**
   *  The targets have been added.
   *
   *  Value: "ADD"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_TargetChange_TargetChangeType_Add;
  /**
   *  The targets reflect all changes committed before the targets were added
   *  to the stream.
   *  This will be sent after or with a `read_time` that is greater than or
   *  equal to the time at which the targets were added.
   *  Listeners can wait for this change if read-after-write semantics
   *  are desired.
   *
   *  Value: "CURRENT"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_TargetChange_TargetChangeType_Current;
  /**
   *  No change has occurred. Used only to send an updated `resume_token`.
   *
   *  Value: "NO_CHANGE"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_TargetChange_TargetChangeType_NoChange;
  /**
   *  The targets have been removed.
   *
   *  Value: "REMOVE"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_TargetChange_TargetChangeType_Remove;
  /**
   *  The targets have been reset, and a new initial state for the targets
   *  will be returned in subsequent changes.
   *  After the initial state is complete, `CURRENT` will be returned even
   *  if the target was previously indicated to be `CURRENT`.
   *
   *  Value: "RESET"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_TargetChange_TargetChangeType_Reset;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_UnaryFilter.op
  
  /**
   *  Test if a field is equal to NaN.
   *
   *  Value: "IS_NAN"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_UnaryFilter_Op_IsNan;
  /**
   *  Test if an exprestion evaluates to Null.
   *
   *  Value: "IS_NULL"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_UnaryFilter_Op_IsNull;
  /**
   *  Unspecified. This value must not be used.
   *
   *  Value: "OPERATOR_UNSPECIFIED"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_UnaryFilter_Op_OperatorUnspecified;
  
  // ----------------------------------------------------------------------------
  // GTLRFirestore_Value.nullValue
  
  /**
   *  Null value.
   *
   *  Value: "NULL_VALUE"
   */
  GTLR_EXTERN NSString * const kGTLRFirestore_Value_NullValue_NullValue;
  
  /**
   *  An array value.
   */
  @interface GTLRFirestore_ArrayValue : GTLRObject
  
  /** Values in the array. */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Value *> *values;
  
  @end
  
  
  /**
   *  The request for Firestore.BatchGetDocuments.
   */
  @interface GTLRFirestore_BatchGetDocumentsRequest : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *documents;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentMask *mask;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_TransactionOptions *newTransaction NS_RETURNS_NOT_RETAINED;
  
  /**
   *  Reads documents as they were at the given time.
   *  This may not be older than 60 seconds.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  Reads documents in a transaction.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  @end
  
  
  /**
   *  The streamed response for Firestore.BatchGetDocuments.
   */
  @interface GTLRFirestore_BatchGetDocumentsResponse : GTLRObject
  
  /** A document that was requested. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Document *found;
  
  /**
   *  A document name that was requested but does not exist. In the format:
   *  `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
   */
  @property(nonatomic, copy, nullable) NSString *missing;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  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.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  @end
  
  
  /**
   *  The request for Firestore.BeginTransaction.
   */
  @interface GTLRFirestore_BeginTransactionRequest : GTLRObject
  
  /**
   *  The options for the transaction.
   *  Defaults to a read-write transaction.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_TransactionOptions *options;
  
  @end
  
  
  /**
   *  The response for Firestore.BeginTransaction.
   */
  @interface GTLRFirestore_BeginTransactionResponse : GTLRObject
  
  /**
   *  The transaction that was started.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  @end
  
  
  /**
   *  A selection of a collection, such as `messages as m1`.
   */
  @interface GTLRFirestore_CollectionSelector : GTLRObject
  
  /**
   *  When false, selects only collections that are immediate children of
   *  the `parent` specified in the containing `RunQueryRequest`.
   *  When true, selects all descendant collections.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *allDescendants;
  
  /**
   *  The collection ID.
   *  When set, selects only collections with this ID.
   */
  @property(nonatomic, copy, nullable) NSString *collectionId;
  
  @end
  
  
  /**
   *  The request for Firestore.Commit.
   */
  @interface GTLRFirestore_CommitRequest : GTLRObject
  
  /**
   *  If set, applies all writes in this transaction, and commits it.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  /**
   *  The writes to apply.
   *  Always executed atomically and in order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Write *> *writes;
  
  @end
  
  
  /**
   *  The response for Firestore.Commit.
   */
  @interface GTLRFirestore_CommitResponse : GTLRObject
  
  /** The time at which the commit occurred. */
  @property(nonatomic, strong, nullable) GTLRDateTime *commitTime;
  
  /**
   *  The result of applying the writes.
   *  This i-th write result corresponds to the i-th write in the
   *  request.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_WriteResult *> *writeResults;
  
  @end
  
  
  /**
   *  A filter that merges multiple other filters using the given operator.
   */
  @interface GTLRFirestore_CompositeFilter : GTLRObject
  
  /**
   *  The list of filters to combine.
   *  Must contain at least one filter.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Filter *> *filters;
  
  /**
   *  The operator for combining multiple filters.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_CompositeFilter_Op_And The results are required to
   *        satisfy each of the combined filters. (Value: "AND")
   *    @arg @c kGTLRFirestore_CompositeFilter_Op_OperatorUnspecified Unspecified.
   *        This value must not be used. (Value: "OPERATOR_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *op;
  
  @end
  
  
  /**
   *  A position in a query result set.
   */
  @interface GTLRFirestore_Cursor : GTLRObject
  
  /**
   *  If the position is just before or just after the given values, relative
   *  to the sort order defined by the query.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *before;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Value *> *values;
  
  @end
  
  
  /**
   *  A Firestore document.
   *  Must not exceed 1 MiB - 4 bytes.
   */
  @interface GTLRFirestore_Document : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  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 ``.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Document_Fields *fields;
  
  /**
   *  The resource name of the document, for example
   *  `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  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 ``.
   *
   *  @note This class is documented as having more properties of
   *        GTLRFirestore_Value. Use @c -additionalJSONKeys and @c
   *        -additionalPropertyForName: to get the list of properties and then
   *        fetch them; or @c -additionalProperties to fetch them all at once.
   */
  @interface GTLRFirestore_Document_Fields : GTLRObject
  @end
  
  
  /**
   *  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.
   */
  @interface GTLRFirestore_DocumentChange : GTLRObject
  
  /**
   *  The new state of the Document.
   *  If `mask` is set, contains only fields that were updated or added.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Document *document;
  
  /**
   *  A set of target IDs for targets that no longer match this document.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSArray<NSNumber *> *removedTargetIds;
  
  /**
   *  A set of target IDs of targets that match this document.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSArray<NSNumber *> *targetIds;
  
  @end
  
  
  /**
   *  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.
   */
  @interface GTLRFirestore_DocumentDelete : GTLRObject
  
  /** The resource name of the Document that was deleted. */
  @property(nonatomic, copy, nullable) NSString *document;
  
  /**
   *  The read timestamp at which the delete was observed.
   *  Greater or equal to the `commit_time` of the delete.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  A set of target IDs for targets that previously matched this entity.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSArray<NSNumber *> *removedTargetIds;
  
  @end
  
  
  /**
   *  A set of field paths on a document.
   *  Used to restrict a get or update operation on a document to a subset of its
   *  fields.
   *  This is different from standard field masks, as this is always scoped to a
   *  Document, and takes in account the dynamic nature of Value.
   */
  @interface GTLRFirestore_DocumentMask : GTLRObject
  
  /**
   *  The list of field paths in the mask. See Document.fields for a field
   *  path syntax reference.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *fieldPaths;
  
  @end
  
  
  /**
   *  A Document has been removed from the view of the targets.
   *  Sent if the document is no longer relevant to a target and is out of view.
   *  Can be sent instead of a DocumentDelete or a DocumentChange if the server
   *  can not send the new value of the document.
   *  Multiple DocumentRemove messages may be returned for the same logical
   *  write or delete, if multiple targets are affected.
   */
  @interface GTLRFirestore_DocumentRemove : GTLRObject
  
  /** The resource name of the Document that has gone out of view. */
  @property(nonatomic, copy, nullable) NSString *document;
  
  /**
   *  The read timestamp at which the remove was observed.
   *  Greater or equal to the `commit_time` of the change/delete/remove.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  A set of target IDs for targets that previously matched this document.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSArray<NSNumber *> *removedTargetIds;
  
  @end
  
  
  /**
   *  A target specified by a set of documents names.
   */
  @interface GTLRFirestore_DocumentsTarget : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *documents;
  
  @end
  
  
  /**
   *  A transformation of a document.
   */
  @interface GTLRFirestore_DocumentTransform : GTLRObject
  
  /** The name of the document to transform. */
  @property(nonatomic, copy, nullable) NSString *document;
  
  /**
   *  The list of transformations to apply to the fields of the document, in
   *  order.
   *  This must not be empty.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_FieldTransform *> *fieldTransforms;
  
  @end
  
  
  /**
   *  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 `{}`.
   */
  @interface GTLRFirestore_Empty : GTLRObject
  @end
  
  
  /**
   *  A digest of all the documents that match a given target.
   */
  @interface GTLRFirestore_ExistenceFilter : GTLRObject
  
  /**
   *  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.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *count;
  
  /**
   *  The target ID to which this filter applies.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *targetId;
  
  @end
  
  
  /**
   *  A filter on a specific field.
   */
  @interface GTLRFirestore_FieldFilter : GTLRObject
  
  /** The field to filter by. */
  @property(nonatomic, strong, nullable) GTLRFirestore_FieldReference *field;
  
  /**
   *  The operator to filter by.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_FieldFilter_Op_ArrayContains Contains. Requires
   *        that the field is an array. (Value: "ARRAY_CONTAINS")
   *    @arg @c kGTLRFirestore_FieldFilter_Op_Equal Equal. (Value: "EQUAL")
   *    @arg @c kGTLRFirestore_FieldFilter_Op_GreaterThan Greater than. Requires
   *        that the field come first in `order_by`. (Value: "GREATER_THAN")
   *    @arg @c kGTLRFirestore_FieldFilter_Op_GreaterThanOrEqual Greater than or
   *        equal. Requires that the field come first in
   *        `order_by`. (Value: "GREATER_THAN_OR_EQUAL")
   *    @arg @c kGTLRFirestore_FieldFilter_Op_LessThan Less than. Requires that
   *        the field come first in `order_by`. (Value: "LESS_THAN")
   *    @arg @c kGTLRFirestore_FieldFilter_Op_LessThanOrEqual Less than or equal.
   *        Requires that the field come first in `order_by`. (Value:
   *        "LESS_THAN_OR_EQUAL")
   *    @arg @c kGTLRFirestore_FieldFilter_Op_OperatorUnspecified Unspecified.
   *        This value must not be used. (Value: "OPERATOR_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *op;
  
  /** The value to compare to. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Value *value;
  
  @end
  
  
  /**
   *  A reference to a field, such as `max(messages.time) as max_time`.
   */
  @interface GTLRFirestore_FieldReference : GTLRObject
  
  @property(nonatomic, copy, nullable) NSString *fieldPath;
  
  @end
  
  
  /**
   *  A transformation of a field of the document.
   */
  @interface GTLRFirestore_FieldTransform : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_ArrayValue *appendMissingElements;
  
  /**
   *  The path of the field. See Document.fields for the field path syntax
   *  reference.
   */
  @property(nonatomic, copy, nullable) NSString *fieldPath;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Value *increment;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Value *maximum;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Value *minimum;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_ArrayValue *removeAllFromArray;
  
  /**
   *  Sets the field to the given server value.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_FieldTransform_SetToServerValue_RequestTime The
   *        time at which the server processed the request, with millisecond
   *        precision. (Value: "REQUEST_TIME")
   *    @arg @c kGTLRFirestore_FieldTransform_SetToServerValue_ServerValueUnspecified
   *        Unspecified. This value must not be used. (Value:
   *        "SERVER_VALUE_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *setToServerValue;
  
  @end
  
  
  /**
   *  A filter.
   */
  @interface GTLRFirestore_Filter : GTLRObject
  
  /** A composite filter. */
  @property(nonatomic, strong, nullable) GTLRFirestore_CompositeFilter *compositeFilter;
  
  /** A filter on a document field. */
  @property(nonatomic, strong, nullable) GTLRFirestore_FieldFilter *fieldFilter;
  
  /** A filter that takes exactly one argument. */
  @property(nonatomic, strong, nullable) GTLRFirestore_UnaryFilter *unaryFilter;
  
  @end
  
  
  /**
   *  Metadata for google.longrunning.Operation results from
   *  FirestoreAdmin.ExportDocuments.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata : GTLRObject
  
  /** Which collection ids are being exported. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *collectionIds;
  
  /**
   *  The time this operation completed. Will be unset if operation still in
   *  progress.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *endTime;
  
  /**
   *  The state of the export operation.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Cancelled
   *        Request has finished being cancelled after user called
   *        google.longrunning.Operations.CancelOperation. (Value: "CANCELLED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Cancelling
   *        Request is in the process of being cancelled after user called
   *        google.longrunning.Operations.CancelOperation on the operation.
   *        (Value: "CANCELLING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Failed
   *        Request has finished being processed, but encountered an error.
   *        (Value: "FAILED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Finalizing
   *        Request has been processed and is in its finalization stage. (Value:
   *        "FINALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Initializing
   *        Request is being prepared for processing. (Value: "INITIALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_OperationStateUnspecified
   *        Unspecified. (Value: "OPERATION_STATE_UNSPECIFIED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Processing
   *        Request is actively being processed. (Value: "PROCESSING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsMetadata_OperationState_Successful
   *        Request has completed successfully. (Value: "SUCCESSFUL")
   */
  @property(nonatomic, copy, nullable) NSString *operationState;
  
  /** Where the entities are being exported to. */
  @property(nonatomic, copy, nullable) NSString *outputUriPrefix;
  
  /** The progress, in bytes, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressBytes;
  
  /** The progress, in documents, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressDocuments;
  
  /** The time this operation started. */
  @property(nonatomic, strong, nullable) GTLRDateTime *startTime;
  
  @end
  
  
  /**
   *  The request for FirestoreAdmin.ExportDocuments.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsRequest : GTLRObject
  
  /** Which collection ids to export. Unspecified means all collections. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *collectionIds;
  
  /**
   *  The output URI. Currently only supports Google Cloud Storage URIs of the
   *  form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the name
   *  of the Google Cloud Storage bucket and `NAMESPACE_PATH` is an optional
   *  Google Cloud Storage namespace path. When
   *  choosing a name, be sure to consider Google Cloud Storage naming
   *  guidelines: https://cloud.google.com/storage/docs/naming.
   *  If the URI is a bucket (without a namespace path), a prefix will be
   *  generated based on the start time.
   */
  @property(nonatomic, copy, nullable) NSString *outputUriPrefix;
  
  @end
  
  
  /**
   *  Returned in the google.longrunning.Operation response field.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ExportDocumentsResponse : GTLRObject
  
  /**
   *  Location of the output files. This can be used to begin an import
   *  into Cloud Firestore (this project or another project) after the operation
   *  completes successfully.
   */
  @property(nonatomic, copy, nullable) NSString *outputUriPrefix;
  
  @end
  
  
  /**
   *  Represents a single field in the database.
   *  Fields are grouped by their "Collection Group", which represent all
   *  collections in the database with the same id.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1Field : GTLRObject
  
  /**
   *  The index configuration for this field. If unset, field indexing will
   *  revert to the configuration defined by the `ancestor_field`. To
   *  explicitly remove all indexes for this field, specify an index config
   *  with an empty list of indexes.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1IndexConfig *indexConfig;
  
  /**
   *  A field name of the form
   *  `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}`
   *  A field path may be a simple field name, e.g. `address` or a path to fields
   *  within map_value , e.g. `address.city`,
   *  or a special field path. The only valid special field is `*`, which
   *  represents any field.
   *  Field paths may be quoted using ` (backtick). The only character that needs
   *  to be escaped within a quoted field path is the backtick character itself,
   *  escaped using a backslash. Special characters in field paths that
   *  must be quoted include: `*`, `.`,
   *  ``` (backtick), `[`, `]`, as well as any ascii symbolic characters.
   *  Examples:
   *  (Note: Comments here are written in markdown syntax, so there is an
   *  additional layer of backticks to represent a code block)
   *  `\\`address.city\\`` represents a field named `address.city`, not the map
   *  key
   *  `city` in the field `address`.
   *  `\\`*\\`` represents a field named `*`, not any field.
   *  A special `Field` contains the default indexing settings for all fields.
   *  This field's resource name is:
   *  `projects/{project_id}/databases/{database_id}/collectionGroups/__default__/fields/
   *  *`
   *  Indexes defined on this `Field` will be applied to all fields which do not
   *  have their own `Field` index configuration.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  @end
  
  
  /**
   *  Metadata for google.longrunning.Operation results from
   *  FirestoreAdmin.UpdateField.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata : GTLRObject
  
  /**
   *  The time this operation completed. Will be unset if operation still in
   *  progress.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *endTime;
  
  /**
   *  The field resource that this operation is acting on. For example:
   *  `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/fields/{field_path}`
   */
  @property(nonatomic, copy, nullable) NSString *field;
  
  /**
   *  A list of IndexConfigDelta, which describe the intent of this
   *  operation.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta *> *indexConfigDeltas;
  
  /** The progress, in bytes, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressBytes;
  
  /** The progress, in documents, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressDocuments;
  
  /** The time this operation started. */
  @property(nonatomic, strong, nullable) GTLRDateTime *startTime;
  
  /**
   *  The state of the operation.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Cancelled
   *        Request has finished being cancelled after user called
   *        google.longrunning.Operations.CancelOperation. (Value: "CANCELLED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Cancelling
   *        Request is in the process of being cancelled after user called
   *        google.longrunning.Operations.CancelOperation on the operation.
   *        (Value: "CANCELLING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Failed
   *        Request has finished being processed, but encountered an error.
   *        (Value: "FAILED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Finalizing
   *        Request has been processed and is in its finalization stage. (Value:
   *        "FINALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Initializing
   *        Request is being prepared for processing. (Value: "INITIALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_OperationStateUnspecified
   *        Unspecified. (Value: "OPERATION_STATE_UNSPECIFIED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Processing
   *        Request is actively being processed. (Value: "PROCESSING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1FieldOperationMetadata_State_Successful
   *        Request has completed successfully. (Value: "SUCCESSFUL")
   */
  @property(nonatomic, copy, nullable) NSString *state;
  
  @end
  
  
  /**
   *  Metadata for google.longrunning.Operation results from
   *  FirestoreAdmin.ImportDocuments.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata : GTLRObject
  
  /** Which collection ids are being imported. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *collectionIds;
  
  /**
   *  The time this operation completed. Will be unset if operation still in
   *  progress.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *endTime;
  
  /** The location of the documents being imported. */
  @property(nonatomic, copy, nullable) NSString *inputUriPrefix;
  
  /**
   *  The state of the import operation.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Cancelled
   *        Request has finished being cancelled after user called
   *        google.longrunning.Operations.CancelOperation. (Value: "CANCELLED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Cancelling
   *        Request is in the process of being cancelled after user called
   *        google.longrunning.Operations.CancelOperation on the operation.
   *        (Value: "CANCELLING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Failed
   *        Request has finished being processed, but encountered an error.
   *        (Value: "FAILED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Finalizing
   *        Request has been processed and is in its finalization stage. (Value:
   *        "FINALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Initializing
   *        Request is being prepared for processing. (Value: "INITIALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_OperationStateUnspecified
   *        Unspecified. (Value: "OPERATION_STATE_UNSPECIFIED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Processing
   *        Request is actively being processed. (Value: "PROCESSING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsMetadata_OperationState_Successful
   *        Request has completed successfully. (Value: "SUCCESSFUL")
   */
  @property(nonatomic, copy, nullable) NSString *operationState;
  
  /** The progress, in bytes, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressBytes;
  
  /** The progress, in documents, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressDocuments;
  
  /** The time this operation started. */
  @property(nonatomic, strong, nullable) GTLRDateTime *startTime;
  
  @end
  
  
  /**
   *  The request for FirestoreAdmin.ImportDocuments.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ImportDocumentsRequest : GTLRObject
  
  /**
   *  Which collection ids to import. Unspecified means all collections included
   *  in the import.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *collectionIds;
  
  /**
   *  Location of the exported files.
   *  This must match the output_uri_prefix of an ExportDocumentsResponse from
   *  an export that has completed successfully.
   *  See:
   *  google.firestore.admin.v1.ExportDocumentsResponse.output_uri_prefix.
   */
  @property(nonatomic, copy, nullable) NSString *inputUriPrefix;
  
  @end
  
  
  /**
   *  Cloud Firestore indexes enable simple and complex queries against
   *  documents in a database.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1Index : GTLRObject
  
  /**
   *  The fields supported by this index.
   *  For composite indexes, this is always 2 or more fields.
   *  The last field entry is always for the field path `__name__`. If, on
   *  creation, `__name__` was not specified as the last field, it will be added
   *  automatically with the same direction as that of the last field defined. If
   *  the final field in a composite index is not directional, the `__name__`
   *  will be ordered ASCENDING (unless explicitly specified).
   *  For single field indexes, this will always be exactly one entry with a
   *  field path equal to the field path of the associated field.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_GoogleFirestoreAdminV1IndexField *> *fields;
  
  /**
   *  Output only.
   *  A server defined name for this index.
   *  The form of this name for composite indexes will be:
   *  `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{composite_index_id}`
   *  For single field indexes, this field will be empty.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Indexes with a collection query scope specified allow queries
   *  against a collection that is the child of a specific document, specified at
   *  query time, and that has the same collection id.
   *  Indexes with a collection group query scope specified allow queries against
   *  all collections descended from a specific document, specified at query
   *  time, and that have the same collection id as this index.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1Index_QueryScope_Collection
   *        Indexes with a collection query scope specified allow queries
   *        against a collection that is the child of a specific document,
   *        specified
   *        at query time, and that has the collection id specified by the index.
   *        (Value: "COLLECTION")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1Index_QueryScope_QueryScopeUnspecified
   *        The query scope is unspecified. Not a valid option. (Value:
   *        "QUERY_SCOPE_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *queryScope;
  
  /**
   *  Output only.
   *  The serving state of the index.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1Index_State_Creating The
   *        index is being created.
   *        There is an active long-running operation for the index.
   *        The index is updated when writing a document.
   *        Some index data may exist. (Value: "CREATING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1Index_State_NeedsRepair The
   *        index was being created, but something went wrong.
   *        There is no active long-running operation for the index,
   *        and the most recently finished long-running operation failed.
   *        The index is not updated when writing a document.
   *        Some index data may exist.
   *        Use the google.longrunning.Operations API to determine why the
   *        operation
   *        that last attempted to create this index failed, then re-create the
   *        index. (Value: "NEEDS_REPAIR")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1Index_State_Ready The index
   *        is ready to be used.
   *        The index is updated when writing a document.
   *        The index is fully populated from all stored documents it applies to.
   *        (Value: "READY")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1Index_State_StateUnspecified
   *        The state is unspecified. (Value: "STATE_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *state;
  
  @end
  
  
  /**
   *  The index configuration for this field.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1IndexConfig : GTLRObject
  
  /**
   *  Output only.
   *  Specifies the resource name of the `Field` from which this field's
   *  index configuration is set (when `uses_ancestor_config` is true),
   *  or from which it *would* be set if this field had no index configuration
   *  (when `uses_ancestor_config` is false).
   */
  @property(nonatomic, copy, nullable) NSString *ancestorField;
  
  /** The indexes supported for this field. */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_GoogleFirestoreAdminV1Index *> *indexes;
  
  /**
   *  Output only
   *  When true, the `Field`'s index configuration is in the process of being
   *  reverted. Once complete, the index config will transition to the same
   *  state as the field specified by `ancestor_field`, at which point
   *  `uses_ancestor_config` will be `true` and `reverting` will be `false`.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *reverting;
  
  /**
   *  Output only.
   *  When true, the `Field`'s index configuration is set from the
   *  configuration specified by the `ancestor_field`.
   *  When false, the `Field`'s index configuration is defined explicitly.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *usesAncestorConfig;
  
  @end
  
  
  /**
   *  Information about an index configuration change.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta : GTLRObject
  
  /**
   *  Specifies how the index is changing.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta_ChangeType_Add
   *        The single field index is being added. (Value: "ADD")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta_ChangeType_ChangeTypeUnspecified
   *        The type of change is not specified or known. (Value:
   *        "CHANGE_TYPE_UNSPECIFIED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexConfigDelta_ChangeType_Remove
   *        The single field index is being removed. (Value: "REMOVE")
   */
  @property(nonatomic, copy, nullable) NSString *changeType;
  
  /** The index being changed. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Index *index;
  
  @end
  
  
  /**
   *  A field in an index.
   *  The field_path describes which field is indexed, the value_mode describes
   *  how the field value is indexed.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1IndexField : GTLRObject
  
  /**
   *  Indicates that this field supports operations on `array_value`s.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexField_ArrayConfig_ArrayConfigUnspecified
   *        The index does not support additional array queries. (Value:
   *        "ARRAY_CONFIG_UNSPECIFIED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexField_ArrayConfig_Contains
   *        The index supports array containment queries. (Value: "CONTAINS")
   */
  @property(nonatomic, copy, nullable) NSString *arrayConfig;
  
  /**
   *  Can be __name__.
   *  For single field indexes, this must match the name of the field or may
   *  be omitted.
   */
  @property(nonatomic, copy, nullable) NSString *fieldPath;
  
  /**
   *  Indicates that this field supports ordering by the specified order or
   *  comparing using =, <, <=, >, >=.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexField_Order_Ascending
   *        The field is ordered by ascending field value. (Value: "ASCENDING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexField_Order_Descending
   *        The field is ordered by descending field value. (Value: "DESCENDING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexField_Order_OrderUnspecified
   *        The ordering is unspecified. Not a valid option. (Value:
   *        "ORDER_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *order;
  
  @end
  
  
  /**
   *  Metadata for google.longrunning.Operation results from
   *  FirestoreAdmin.CreateIndex.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata : GTLRObject
  
  /**
   *  The time this operation completed. Will be unset if operation still in
   *  progress.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *endTime;
  
  /**
   *  The index resource that this operation is acting on. For example:
   *  `projects/{project_id}/databases/{database_id}/collectionGroups/{collection_id}/indexes/{index_id}`
   */
  @property(nonatomic, copy, nullable) NSString *index;
  
  /** The progress, in bytes, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressBytes;
  
  /** The progress, in documents, of this operation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleFirestoreAdminV1Progress *progressDocuments;
  
  /** The time this operation started. */
  @property(nonatomic, strong, nullable) GTLRDateTime *startTime;
  
  /**
   *  The state of the operation.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Cancelled
   *        Request has finished being cancelled after user called
   *        google.longrunning.Operations.CancelOperation. (Value: "CANCELLED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Cancelling
   *        Request is in the process of being cancelled after user called
   *        google.longrunning.Operations.CancelOperation on the operation.
   *        (Value: "CANCELLING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Failed
   *        Request has finished being processed, but encountered an error.
   *        (Value: "FAILED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Finalizing
   *        Request has been processed and is in its finalization stage. (Value:
   *        "FINALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Initializing
   *        Request is being prepared for processing. (Value: "INITIALIZING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_OperationStateUnspecified
   *        Unspecified. (Value: "OPERATION_STATE_UNSPECIFIED")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Processing
   *        Request is actively being processed. (Value: "PROCESSING")
   *    @arg @c kGTLRFirestore_GoogleFirestoreAdminV1IndexOperationMetadata_State_Successful
   *        Request has completed successfully. (Value: "SUCCESSFUL")
   */
  @property(nonatomic, copy, nullable) NSString *state;
  
  @end
  
  
  /**
   *  The response for FirestoreAdmin.ListFields.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "fields" property. If returned as the result of a query, it should
   *        support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ListFieldsResponse : GTLRCollectionObject
  
  /**
   *  The requested fields.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_GoogleFirestoreAdminV1Field *> *fields;
  
  /**
   *  A page token that may be used to request another page of results. If blank,
   *  this is the last page.
   */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  The response for FirestoreAdmin.ListIndexes.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "indexes" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1ListIndexesResponse : GTLRCollectionObject
  
  /**
   *  The requested indexes.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_GoogleFirestoreAdminV1Index *> *indexes;
  
  /**
   *  A page token that may be used to request another page of results. If blank,
   *  this is the last page.
   */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  The metadata message for google.cloud.location.Location.metadata.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1LocationMetadata : GTLRObject
  @end
  
  
  /**
   *  Describes the progress of the operation.
   *  Unit of work is generic and must be interpreted based on where Progress
   *  is used.
   */
  @interface GTLRFirestore_GoogleFirestoreAdminV1Progress : GTLRObject
  
  /**
   *  The amount of work completed.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *completedWork;
  
  /**
   *  The amount of work estimated.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *estimatedWork;
  
  @end
  
  
  /**
   *  The request message for Operations.CancelOperation.
   */
  @interface GTLRFirestore_GoogleLongrunningCancelOperationRequest : GTLRObject
  @end
  
  
  /**
   *  The response message for Operations.ListOperations.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "operations" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRFirestore_GoogleLongrunningListOperationsResponse : GTLRCollectionObject
  
  /** The standard List next-page token. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  /**
   *  A list of operations that matches the specified filter in the request.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_GoogleLongrunningOperation *> *operations;
  
  @end
  
  
  /**
   *  This resource represents a long-running operation that is the result of a
   *  network API call.
   */
  @interface GTLRFirestore_GoogleLongrunningOperation : GTLRObject
  
  /**
   *  If the value is `false`, it means the operation is still in progress.
   *  If `true`, the operation is completed, and either `error` or `response` is
   *  available.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *done;
  
  /** The error result of the operation in case of failure or cancellation. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Status *error;
  
  /**
   *  Service-specific metadata associated with the operation. It typically
   *  contains progress information and common metadata such as create time.
   *  Some services might not provide such metadata. Any method that returns a
   *  long-running operation should document the metadata type, if any.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleLongrunningOperation_Metadata *metadata;
  
  /**
   *  The server-assigned name, which is only unique within the same service that
   *  originally returns it. If you use the default HTTP mapping, the
   *  `name` should have the format of `operations/some/unique/name`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The normal response of the operation in case of success. If the original
   *  method returns no data on success, such as `Delete`, the response is
   *  `google.protobuf.Empty`. If the original method is standard
   *  `Get`/`Create`/`Update`, the response should be the resource. For other
   *  methods, the response should have the type `XxxResponse`, where `Xxx`
   *  is the original method name. For example, if the original method name
   *  is `TakeSnapshot()`, the inferred response type is
   *  `TakeSnapshotResponse`.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_GoogleLongrunningOperation_Response *response;
  
  @end
  
  
  /**
   *  Service-specific metadata associated with the operation. It typically
   *  contains progress information and common metadata such as create time.
   *  Some services might not provide such metadata. Any method that returns a
   *  long-running operation should document the metadata type, if any.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRFirestore_GoogleLongrunningOperation_Metadata : GTLRObject
  @end
  
  
  /**
   *  The normal response of the operation in case of success. If the original
   *  method returns no data on success, such as `Delete`, the response is
   *  `google.protobuf.Empty`. If the original method is standard
   *  `Get`/`Create`/`Update`, the response should be the resource. For other
   *  methods, the response should have the type `XxxResponse`, where `Xxx`
   *  is the original method name. For example, if the original method name
   *  is `TakeSnapshot()`, the inferred response type is
   *  `TakeSnapshotResponse`.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRFirestore_GoogleLongrunningOperation_Response : GTLRObject
  @end
  
  
  /**
   *  An object representing a latitude/longitude pair. This is expressed as a
   *  pair
   *  of doubles representing degrees latitude and degrees longitude. Unless
   *  specified otherwise, this must conform to the
   *  <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
   *  standard</a>. Values must be within normalized ranges.
   */
  @interface GTLRFirestore_LatLng : GTLRObject
  
  /**
   *  The latitude in degrees. It must be in the range [-90.0, +90.0].
   *
   *  Uses NSNumber of doubleValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *latitude;
  
  /**
   *  The longitude in degrees. It must be in the range [-180.0, +180.0].
   *
   *  Uses NSNumber of doubleValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *longitude;
  
  @end
  
  
  /**
   *  The request for Firestore.ListCollectionIds.
   */
  @interface GTLRFirestore_ListCollectionIdsRequest : GTLRObject
  
  /**
   *  The maximum number of results to return.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *pageSize;
  
  /**
   *  A page token. Must be a value from
   *  ListCollectionIdsResponse.
   */
  @property(nonatomic, copy, nullable) NSString *pageToken;
  
  @end
  
  
  /**
   *  The response from Firestore.ListCollectionIds.
   */
  @interface GTLRFirestore_ListCollectionIdsResponse : GTLRObject
  
  /** The collection ids. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *collectionIds;
  
  /** A page token that may be used to continue the list. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  The response for Firestore.ListDocuments.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "documents" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRFirestore_ListDocumentsResponse : GTLRCollectionObject
  
  /**
   *  The Documents found.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Document *> *documents;
  
  /** The next page token. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  A request for Firestore.Listen
   */
  @interface GTLRFirestore_ListenRequest : GTLRObject
  
  /** A target to add to this stream. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Target *addTarget;
  
  /** Labels associated with this target change. */
  @property(nonatomic, strong, nullable) GTLRFirestore_ListenRequest_Labels *labels;
  
  /**
   *  The ID of a target to remove from this stream.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *removeTarget;
  
  @end
  
  
  /**
   *  Labels associated with this target change.
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRFirestore_ListenRequest_Labels : GTLRObject
  @end
  
  
  /**
   *  The response for Firestore.Listen.
   */
  @interface GTLRFirestore_ListenResponse : GTLRObject
  
  /** A Document has changed. */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentChange *documentChange;
  
  /** A Document has been deleted. */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentDelete *documentDelete;
  
  /**
   *  A Document has been removed from a target (because it is no longer
   *  relevant to that target).
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentRemove *documentRemove;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_ExistenceFilter *filter;
  
  /** Targets have changed. */
  @property(nonatomic, strong, nullable) GTLRFirestore_TargetChange *targetChange;
  
  @end
  
  
  /**
   *  The response message for Locations.ListLocations.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "locations" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRFirestore_ListLocationsResponse : GTLRCollectionObject
  
  /**
   *  A list of locations that matches the specified filter in the request.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Location *> *locations;
  
  /** The standard List next-page token. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  A resource that represents Google Cloud Platform location.
   */
  @interface GTLRFirestore_Location : GTLRObject
  
  /**
   *  The friendly name for this location, typically a nearby city name.
   *  For example, "Tokyo".
   */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /**
   *  Cross-service attributes for the location. For example
   *  {"cloud.googleapis.com/region": "us-east1"}
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Location_Labels *labels;
  
  /** The canonical id for this location. For example: `"us-east1"`. */
  @property(nonatomic, copy, nullable) NSString *locationId;
  
  /**
   *  Service-specific metadata. For example the available capacity at the given
   *  location.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Location_Metadata *metadata;
  
  /**
   *  Resource name for the location, which may vary between implementations.
   *  For example: `"projects/example-project/locations/us-east1"`
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  @end
  
  
  /**
   *  Cross-service attributes for the location. For example
   *  {"cloud.googleapis.com/region": "us-east1"}
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRFirestore_Location_Labels : GTLRObject
  @end
  
  
  /**
   *  Service-specific metadata. For example the available capacity at the given
   *  location.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRFirestore_Location_Metadata : GTLRObject
  @end
  
  
  /**
   *  A map value.
   */
  @interface GTLRFirestore_MapValue : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_MapValue_Fields *fields;
  
  @end
  
  
  /**
   *  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.
   *
   *  @note This class is documented as having more properties of
   *        GTLRFirestore_Value. Use @c -additionalJSONKeys and @c
   *        -additionalPropertyForName: to get the list of properties and then
   *        fetch them; or @c -additionalProperties to fetch them all at once.
   */
  @interface GTLRFirestore_MapValue_Fields : GTLRObject
  @end
  
  
  /**
   *  An order on a field.
   */
  @interface GTLRFirestore_Order : GTLRObject
  
  /**
   *  The direction to order by. Defaults to `ASCENDING`.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_Order_Direction_Ascending Ascending. (Value:
   *        "ASCENDING")
   *    @arg @c kGTLRFirestore_Order_Direction_Descending Descending. (Value:
   *        "DESCENDING")
   *    @arg @c kGTLRFirestore_Order_Direction_DirectionUnspecified Unspecified.
   *        (Value: "DIRECTION_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *direction;
  
  /** The field to order by. */
  @property(nonatomic, strong, nullable) GTLRFirestore_FieldReference *field;
  
  @end
  
  
  /**
   *  A precondition on a document, used for conditional operations.
   */
  @interface GTLRFirestore_Precondition : GTLRObject
  
  /**
   *  When set to `true`, the target document must exist.
   *  When set to `false`, the target document must not exist.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *exists;
  
  /**
   *  When set, the target document must exist and have been last updated at
   *  that time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  The projection of document's fields to return.
   */
  @interface GTLRFirestore_Projection : GTLRObject
  
  /**
   *  The fields to return.
   *  If empty, all fields are returned. To only return the name
   *  of the document, use `['__name__']`.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_FieldReference *> *fields;
  
  @end
  
  
  /**
   *  A target specified by a query.
   */
  @interface GTLRFirestore_QueryTarget : GTLRObject
  
  /**
   *  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`
   */
  @property(nonatomic, copy, nullable) NSString *parent;
  
  /** A structured query. */
  @property(nonatomic, strong, nullable) GTLRFirestore_StructuredQuery *structuredQuery;
  
  @end
  
  
  /**
   *  Options for a transaction that can only be used to read documents.
   */
  @interface GTLRFirestore_ReadOnly : GTLRObject
  
  /**
   *  Reads documents at the given time.
   *  This may not be older than 60 seconds.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  @end
  
  
  /**
   *  Options for a transaction that can be used to read and write documents.
   */
  @interface GTLRFirestore_ReadWrite : GTLRObject
  
  /**
   *  An optional transaction to retry.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *retryTransaction;
  
  @end
  
  
  /**
   *  The request for Firestore.Rollback.
   */
  @interface GTLRFirestore_RollbackRequest : GTLRObject
  
  /**
   *  The transaction to roll back.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  @end
  
  
  /**
   *  The request for Firestore.RunQuery.
   */
  @interface GTLRFirestore_RunQueryRequest : GTLRObject
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_TransactionOptions *newTransaction NS_RETURNS_NOT_RETAINED;
  
  /**
   *  Reads documents as they were at the given time.
   *  This may not be older than 60 seconds.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /** A structured query. */
  @property(nonatomic, strong, nullable) GTLRFirestore_StructuredQuery *structuredQuery;
  
  /**
   *  Reads documents in a transaction.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  @end
  
  
  /**
   *  The response for Firestore.RunQuery.
   */
  @interface GTLRFirestore_RunQueryResponse : GTLRObject
  
  /**
   *  A query result.
   *  Not set when reporting partial progress.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Document *document;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  The number of results that have been skipped due to an offset between
   *  the last response and the current response.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *skippedResults;
  
  /**
   *  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.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *transaction;
  
  @end
  
  
  /**
   *  The `Status` type defines a logical error model that is suitable for
   *  different programming environments, including REST APIs and RPC APIs. It is
   *  used by [gRPC](https://github.com/grpc). 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.
   */
  @interface GTLRFirestore_Status : GTLRObject
  
  /**
   *  The status code, which should be an enum value of google.rpc.Code.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *code;
  
  /**
   *  A list of messages that carry the error details. There is a common set of
   *  message types for APIs to use.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Status_Details_Item *> *details;
  
  /**
   *  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.
   */
  @property(nonatomic, copy, nullable) NSString *message;
  
  @end
  
  
  /**
   *  GTLRFirestore_Status_Details_Item
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRFirestore_Status_Details_Item : GTLRObject
  @end
  
  
  /**
   *  A Firestore query.
   */
  @interface GTLRFirestore_StructuredQuery : GTLRObject
  
  /** A end point for the query results. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Cursor *endAt;
  
  /** The collections to query. */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_CollectionSelector *> *from;
  
  /**
   *  The maximum number of results to return.
   *  Applies after all other constraints.
   *  Must be >= 0 if specified.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *limit;
  
  /**
   *  The number of results to skip.
   *  Applies before limit, but after all other constraints. Must be >= 0 if
   *  specified.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *offset;
  
  /**
   *  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__`
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Order *> *orderBy;
  
  /** The projection to return. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Projection *select;
  
  /** A starting point for the query results. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Cursor *startAt;
  
  /** The filter to apply. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Filter *where;
  
  @end
  
  
  /**
   *  A specification of a set of documents to listen to.
   */
  @interface GTLRFirestore_Target : GTLRObject
  
  /** A target specified by a set of document names. */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentsTarget *documents;
  
  /**
   *  If the target should be removed once it is current and consistent.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *once;
  
  /** A target specified by a query. */
  @property(nonatomic, strong, nullable) GTLRFirestore_QueryTarget *query;
  
  /**
   *  Start listening after a specific `read_time`.
   *  The client must know the state of matching documents at this time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  A resume token from a prior TargetChange for an identical target.
   *  Using a resume token with a different target is unsupported and may fail.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *resumeToken;
  
  /**
   *  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.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *targetId;
  
  @end
  
  
  /**
   *  Targets being watched have changed.
   */
  @interface GTLRFirestore_TargetChange : GTLRObject
  
  /** The error that resulted in this change, if applicable. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Status *cause;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *readTime;
  
  /**
   *  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.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *resumeToken;
  
  /**
   *  The type of change that occurred.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_TargetChange_TargetChangeType_Add The targets have
   *        been added. (Value: "ADD")
   *    @arg @c kGTLRFirestore_TargetChange_TargetChangeType_Current The targets
   *        reflect all changes committed before the targets were added
   *        to the stream.
   *        This will be sent after or with a `read_time` that is greater than or
   *        equal to the time at which the targets were added.
   *        Listeners can wait for this change if read-after-write semantics
   *        are desired. (Value: "CURRENT")
   *    @arg @c kGTLRFirestore_TargetChange_TargetChangeType_NoChange No change
   *        has occurred. Used only to send an updated `resume_token`. (Value:
   *        "NO_CHANGE")
   *    @arg @c kGTLRFirestore_TargetChange_TargetChangeType_Remove The targets
   *        have been removed. (Value: "REMOVE")
   *    @arg @c kGTLRFirestore_TargetChange_TargetChangeType_Reset The targets
   *        have been reset, and a new initial state for the targets
   *        will be returned in subsequent changes.
   *        After the initial state is complete, `CURRENT` will be returned even
   *        if the target was previously indicated to be `CURRENT`. (Value:
   *        "RESET")
   */
  @property(nonatomic, copy, nullable) NSString *targetChangeType;
  
  /**
   *  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.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSArray<NSNumber *> *targetIds;
  
  @end
  
  
  /**
   *  Options for creating a new transaction.
   */
  @interface GTLRFirestore_TransactionOptions : GTLRObject
  
  /** The transaction can only be used for read operations. */
  @property(nonatomic, strong, nullable) GTLRFirestore_ReadOnly *readOnly;
  
  /** The transaction can be used for both read and write operations. */
  @property(nonatomic, strong, nullable) GTLRFirestore_ReadWrite *readWrite;
  
  @end
  
  
  /**
   *  A filter with a single operand.
   */
  @interface GTLRFirestore_UnaryFilter : GTLRObject
  
  /** The field to which to apply the operator. */
  @property(nonatomic, strong, nullable) GTLRFirestore_FieldReference *field;
  
  /**
   *  The unary operator to apply.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_UnaryFilter_Op_IsNan Test if a field is equal to
   *        NaN. (Value: "IS_NAN")
   *    @arg @c kGTLRFirestore_UnaryFilter_Op_IsNull Test if an exprestion
   *        evaluates to Null. (Value: "IS_NULL")
   *    @arg @c kGTLRFirestore_UnaryFilter_Op_OperatorUnspecified Unspecified.
   *        This value must not be used. (Value: "OPERATOR_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *op;
  
  @end
  
  
  /**
   *  A message that can hold any of the supported value types.
   */
  @interface GTLRFirestore_Value : GTLRObject
  
  /**
   *  An array value.
   *  Cannot directly contain another array value, though can contain an
   *  map which contains another array.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_ArrayValue *arrayValue;
  
  /**
   *  A boolean value.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *booleanValue;
  
  /**
   *  A bytes value.
   *  Must not exceed 1 MiB - 89 bytes.
   *  Only the first 1,500 bytes are considered by queries.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *bytesValue;
  
  /**
   *  A double value.
   *
   *  Uses NSNumber of doubleValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *doubleValue;
  
  /** A geo point value representing a point on the surface of Earth. */
  @property(nonatomic, strong, nullable) GTLRFirestore_LatLng *geoPointValue;
  
  /**
   *  An integer value.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *integerValue;
  
  /** A map value. */
  @property(nonatomic, strong, nullable) GTLRFirestore_MapValue *mapValue;
  
  /**
   *  A null value.
   *
   *  Likely values:
   *    @arg @c kGTLRFirestore_Value_NullValue_NullValue Null value. (Value:
   *        "NULL_VALUE")
   */
  @property(nonatomic, copy, nullable) NSString *nullValue;
  
  /**
   *  A reference to a document. For example:
   *  `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
   */
  @property(nonatomic, copy, nullable) NSString *referenceValue;
  
  /**
   *  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.
   */
  @property(nonatomic, copy, nullable) NSString *stringValue;
  
  /**
   *  A timestamp value.
   *  Precise only to microseconds. When stored, any additional precision is
   *  rounded down.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *timestampValue;
  
  @end
  
  
  /**
   *  A write on a document.
   */
  @interface GTLRFirestore_Write : GTLRObject
  
  /**
   *  An optional precondition on the document.
   *  The write will fail if this is set and not met by the target document.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_Precondition *currentDocument;
  
  /**
   *  A document name to delete. In the format:
   *  `projects/{project_id}/databases/{database_id}/documents/{document_path}`.
   *
   *  Remapped to 'deleteProperty' to avoid language reserved word 'delete'.
   */
  @property(nonatomic, copy, nullable) NSString *deleteProperty;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentTransform *transform;
  
  /** A document to write. */
  @property(nonatomic, strong, nullable) GTLRFirestore_Document *update;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRFirestore_DocumentMask *updateMask;
  
  @end
  
  
  /**
   *  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.
   */
  @interface GTLRFirestore_WriteRequest : GTLRObject
  
  /** Labels associated with this write request. */
  @property(nonatomic, strong, nullable) GTLRFirestore_WriteRequest_Labels *labels;
  
  /**
   *  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.
   */
  @property(nonatomic, copy, nullable) NSString *streamId;
  
  /**
   *  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.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *streamToken;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Write *> *writes;
  
  @end
  
  
  /**
   *  Labels associated with this write request.
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRFirestore_WriteRequest_Labels : GTLRObject
  @end
  
  
  /**
   *  The response for Firestore.Write.
   */
  @interface GTLRFirestore_WriteResponse : GTLRObject
  
  /** The time at which the commit occurred. */
  @property(nonatomic, strong, nullable) GTLRDateTime *commitTime;
  
  /**
   *  The ID of the stream.
   *  Only set on the first message, when a new stream was created.
   */
  @property(nonatomic, copy, nullable) NSString *streamId;
  
  /**
   *  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.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *streamToken;
  
  /**
   *  The result of applying the writes.
   *  This i-th write result corresponds to the i-th write in the
   *  request.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_WriteResult *> *writeResults;
  
  @end
  
  
  /**
   *  The result of applying a write.
   */
  @interface GTLRFirestore_WriteResult : GTLRObject
  
  /**
   *  The results of applying each DocumentTransform.FieldTransform, in the
   *  same order.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRFirestore_Value *> *transformResults;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  NS_ASSUME_NONNULL_END
  
  #pragma clang diagnostic pop
  