diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.0`
 
 
 ## Description
diff --git a/gen/Network/Google/FireStore.hs b/gen/Network/Google/FireStore.hs
--- a/gen/Network/Google/FireStore.hs
+++ b/gen/Network/Google/FireStore.hs
@@ -649,8 +649,11 @@
     , fieldTransform
     , ftFieldPath
     , ftAppendMissingElements
+    , ftMaximum
+    , ftMinimum
     , ftSetToServerValue
     , ftRemoveAllFromArray
+    , ftIncrement
 
     -- ** MapValueFields
     , MapValueFields
diff --git a/gen/Network/Google/FireStore/Types.hs b/gen/Network/Google/FireStore/Types.hs
--- a/gen/Network/Google/FireStore/Types.hs
+++ b/gen/Network/Google/FireStore/Types.hs
@@ -555,8 +555,11 @@
     , fieldTransform
     , ftFieldPath
     , ftAppendMissingElements
+    , ftMaximum
+    , ftMinimum
     , ftSetToServerValue
     , ftRemoveAllFromArray
+    , ftIncrement
 
     -- * MapValueFields
     , MapValueFields
@@ -622,8 +625,8 @@
 
 -- | View and manage your data across Google Cloud Platform services
 cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
-cloudPlatformScope = Proxy;
+cloudPlatformScope = Proxy
 
 -- | View and manage your Google Cloud Datastore data
 datastoreScope :: Proxy '["https://www.googleapis.com/auth/datastore"]
-datastoreScope = Proxy;
+datastoreScope = Proxy
diff --git a/gen/Network/Google/FireStore/Types/Product.hs b/gen/Network/Google/FireStore/Types/Product.hs
--- a/gen/Network/Google/FireStore/Types/Product.hs
+++ b/gen/Network/Google/FireStore/Types/Product.hs
@@ -28,4881 +28,5137 @@
 -- only an up-to-date token, to use in the next request.
 --
 -- /See:/ 'writeRequest' smart constructor.
-data WriteRequest = WriteRequest'
-    { _wrStreamToken :: !(Maybe Bytes)
-    , _wrLabels      :: !(Maybe WriteRequestLabels)
-    , _wrWrites      :: !(Maybe [Write])
-    , _wrStreamId    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WriteRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wrStreamToken'
---
--- * 'wrLabels'
---
--- * 'wrWrites'
---
--- * 'wrStreamId'
-writeRequest
-    :: WriteRequest
-writeRequest =
-    WriteRequest'
-    { _wrStreamToken = Nothing
-    , _wrLabels = Nothing
-    , _wrWrites = Nothing
-    , _wrStreamId = Nothing
-    }
-
--- | 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.
-wrStreamToken :: Lens' WriteRequest (Maybe ByteString)
-wrStreamToken
-  = lens _wrStreamToken
-      (\ s a -> s{_wrStreamToken = a})
-      . mapping _Bytes
-
--- | Labels associated with this write request.
-wrLabels :: Lens' WriteRequest (Maybe WriteRequestLabels)
-wrLabels = lens _wrLabels (\ s a -> s{_wrLabels = a})
-
--- | 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.
-wrWrites :: Lens' WriteRequest [Write]
-wrWrites
-  = lens _wrWrites (\ s a -> s{_wrWrites = a}) .
-      _Default
-      . _Coerce
-
--- | 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.
-wrStreamId :: Lens' WriteRequest (Maybe Text)
-wrStreamId
-  = lens _wrStreamId (\ s a -> s{_wrStreamId = a})
-
-instance FromJSON WriteRequest where
-        parseJSON
-          = withObject "WriteRequest"
-              (\ o ->
-                 WriteRequest' <$>
-                   (o .:? "streamToken") <*> (o .:? "labels") <*>
-                     (o .:? "writes" .!= mempty)
-                     <*> (o .:? "streamId"))
-
-instance ToJSON WriteRequest where
-        toJSON WriteRequest'{..}
-          = object
-              (catMaybes
-                 [("streamToken" .=) <$> _wrStreamToken,
-                  ("labels" .=) <$> _wrLabels,
-                  ("writes" .=) <$> _wrWrites,
-                  ("streamId" .=) <$> _wrStreamId])
-
--- | 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
--- <http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf WGS84 standard>.
--- Values must be within normalized ranges.
---
--- /See:/ 'latLng' smart constructor.
-data LatLng = LatLng'
-    { _llLatitude  :: !(Maybe (Textual Double))
-    , _llLongitude :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LatLng' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'llLatitude'
---
--- * 'llLongitude'
-latLng
-    :: LatLng
-latLng =
-    LatLng'
-    { _llLatitude = Nothing
-    , _llLongitude = Nothing
-    }
-
--- | The latitude in degrees. It must be in the range [-90.0, +90.0].
-llLatitude :: Lens' LatLng (Maybe Double)
-llLatitude
-  = lens _llLatitude (\ s a -> s{_llLatitude = a}) .
-      mapping _Coerce
-
--- | The longitude in degrees. It must be in the range [-180.0, +180.0].
-llLongitude :: Lens' LatLng (Maybe Double)
-llLongitude
-  = lens _llLongitude (\ s a -> s{_llLongitude = a}) .
-      mapping _Coerce
-
-instance FromJSON LatLng where
-        parseJSON
-          = withObject "LatLng"
-              (\ o ->
-                 LatLng' <$>
-                   (o .:? "latitude") <*> (o .:? "longitude"))
-
-instance ToJSON LatLng where
-        toJSON LatLng'{..}
-          = object
-              (catMaybes
-                 [("latitude" .=) <$> _llLatitude,
-                  ("longitude" .=) <$> _llLongitude])
-
--- | The result of applying a write.
---
--- /See:/ 'writeResult' smart constructor.
-data WriteResult = WriteResult'
-    { _wrUpdateTime       :: !(Maybe DateTime')
-    , _wrTransformResults :: !(Maybe [Value])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WriteResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wrUpdateTime'
---
--- * 'wrTransformResults'
-writeResult
-    :: WriteResult
-writeResult =
-    WriteResult'
-    { _wrUpdateTime = Nothing
-    , _wrTransformResults = Nothing
-    }
-
--- | 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.
-wrUpdateTime :: Lens' WriteResult (Maybe UTCTime)
-wrUpdateTime
-  = lens _wrUpdateTime (\ s a -> s{_wrUpdateTime = a})
-      . mapping _DateTime
-
--- | The results of applying each DocumentTransform.FieldTransform, in the
--- same order.
-wrTransformResults :: Lens' WriteResult [Value]
-wrTransformResults
-  = lens _wrTransformResults
-      (\ s a -> s{_wrTransformResults = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON WriteResult where
-        parseJSON
-          = withObject "WriteResult"
-              (\ o ->
-                 WriteResult' <$>
-                   (o .:? "updateTime") <*>
-                     (o .:? "transformResults" .!= mempty))
-
-instance ToJSON WriteResult where
-        toJSON WriteResult'{..}
-          = object
-              (catMaybes
-                 [("updateTime" .=) <$> _wrUpdateTime,
-                  ("transformResults" .=) <$> _wrTransformResults])
-
--- | 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.
---
--- /See:/ 'googleFirestoreAdminV1Field' smart constructor.
-data GoogleFirestoreAdminV1Field = GoogleFirestoreAdminV1Field'
-    { _gfavfIndexConfig :: !(Maybe GoogleFirestoreAdminV1IndexConfig)
-    , _gfavfName        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1Field' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavfIndexConfig'
---
--- * 'gfavfName'
-googleFirestoreAdminV1Field
-    :: GoogleFirestoreAdminV1Field
-googleFirestoreAdminV1Field =
-    GoogleFirestoreAdminV1Field'
-    { _gfavfIndexConfig = Nothing
-    , _gfavfName = Nothing
-    }
-
--- | 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.
-gfavfIndexConfig :: Lens' GoogleFirestoreAdminV1Field (Maybe GoogleFirestoreAdminV1IndexConfig)
-gfavfIndexConfig
-  = lens _gfavfIndexConfig
-      (\ s a -> s{_gfavfIndexConfig = a})
-
--- | 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.
-gfavfName :: Lens' GoogleFirestoreAdminV1Field (Maybe Text)
-gfavfName
-  = lens _gfavfName (\ s a -> s{_gfavfName = a})
-
-instance FromJSON GoogleFirestoreAdminV1Field where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1Field"
-              (\ o ->
-                 GoogleFirestoreAdminV1Field' <$>
-                   (o .:? "indexConfig") <*> (o .:? "name"))
-
-instance ToJSON GoogleFirestoreAdminV1Field where
-        toJSON GoogleFirestoreAdminV1Field'{..}
-          = object
-              (catMaybes
-                 [("indexConfig" .=) <$> _gfavfIndexConfig,
-                  ("name" .=) <$> _gfavfName])
-
--- | Options for creating a new transaction.
---
--- /See:/ 'transactionOptions' smart constructor.
-data TransactionOptions = TransactionOptions'
-    { _toReadWrite :: !(Maybe ReadWrite)
-    , _toReadOnly  :: !(Maybe ReadOnly)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TransactionOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'toReadWrite'
---
--- * 'toReadOnly'
-transactionOptions
-    :: TransactionOptions
-transactionOptions =
-    TransactionOptions'
-    { _toReadWrite = Nothing
-    , _toReadOnly = Nothing
-    }
-
--- | The transaction can be used for both read and write operations.
-toReadWrite :: Lens' TransactionOptions (Maybe ReadWrite)
-toReadWrite
-  = lens _toReadWrite (\ s a -> s{_toReadWrite = a})
-
--- | The transaction can only be used for read operations.
-toReadOnly :: Lens' TransactionOptions (Maybe ReadOnly)
-toReadOnly
-  = lens _toReadOnly (\ s a -> s{_toReadOnly = a})
-
-instance FromJSON TransactionOptions where
-        parseJSON
-          = withObject "TransactionOptions"
-              (\ o ->
-                 TransactionOptions' <$>
-                   (o .:? "readWrite") <*> (o .:? "readOnly"))
-
-instance ToJSON TransactionOptions where
-        toJSON TransactionOptions'{..}
-          = object
-              (catMaybes
-                 [("readWrite" .=) <$> _toReadWrite,
-                  ("readOnly" .=) <$> _toReadOnly])
-
--- | 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.
---
--- /See:/ 'status' smart constructor.
-data Status = Status'
-    { _sDetails :: !(Maybe [StatusDetailsItem])
-    , _sCode    :: !(Maybe (Textual Int32))
-    , _sMessage :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Status' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sDetails'
---
--- * 'sCode'
---
--- * 'sMessage'
-status
-    :: Status
-status =
-    Status'
-    { _sDetails = Nothing
-    , _sCode = Nothing
-    , _sMessage = Nothing
-    }
-
--- | A list of messages that carry the error details. There is a common set
--- of message types for APIs to use.
-sDetails :: Lens' Status [StatusDetailsItem]
-sDetails
-  = lens _sDetails (\ s a -> s{_sDetails = a}) .
-      _Default
-      . _Coerce
-
--- | The status code, which should be an enum value of google.rpc.Code.
-sCode :: Lens' Status (Maybe Int32)
-sCode
-  = lens _sCode (\ s a -> s{_sCode = a}) .
-      mapping _Coerce
-
--- | 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.
-sMessage :: Lens' Status (Maybe Text)
-sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
-
-instance FromJSON Status where
-        parseJSON
-          = withObject "Status"
-              (\ o ->
-                 Status' <$>
-                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
-                     (o .:? "message"))
-
-instance ToJSON Status where
-        toJSON Status'{..}
-          = object
-              (catMaybes
-                 [("details" .=) <$> _sDetails,
-                  ("code" .=) <$> _sCode,
-                  ("message" .=) <$> _sMessage])
-
--- | 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.
---
--- /See:/ 'googleLongrunningOperationMetadata' smart constructor.
-newtype GoogleLongrunningOperationMetadata = GoogleLongrunningOperationMetadata'
-    { _glomAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleLongrunningOperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'glomAddtional'
-googleLongrunningOperationMetadata
-    :: HashMap Text JSONValue -- ^ 'glomAddtional'
-    -> GoogleLongrunningOperationMetadata
-googleLongrunningOperationMetadata pGlomAddtional_ =
-    GoogleLongrunningOperationMetadata'
-    { _glomAddtional = _Coerce # pGlomAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-glomAddtional :: Lens' GoogleLongrunningOperationMetadata (HashMap Text JSONValue)
-glomAddtional
-  = lens _glomAddtional
-      (\ s a -> s{_glomAddtional = a})
-      . _Coerce
-
-instance FromJSON GoogleLongrunningOperationMetadata
-         where
-        parseJSON
-          = withObject "GoogleLongrunningOperationMetadata"
-              (\ o ->
-                 GoogleLongrunningOperationMetadata' <$>
-                   (parseJSONObject o))
-
-instance ToJSON GoogleLongrunningOperationMetadata
-         where
-        toJSON = toJSON . _glomAddtional
-
--- | A precondition on a document, used for conditional operations.
---
--- /See:/ 'precondition' smart constructor.
-data Precondition = Precondition'
-    { _pExists     :: !(Maybe Bool)
-    , _pUpdateTime :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Precondition' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pExists'
---
--- * 'pUpdateTime'
-precondition
-    :: Precondition
-precondition =
-    Precondition'
-    { _pExists = Nothing
-    , _pUpdateTime = Nothing
-    }
-
--- | When set to \`true\`, the target document must exist. When set to
--- \`false\`, the target document must not exist.
-pExists :: Lens' Precondition (Maybe Bool)
-pExists = lens _pExists (\ s a -> s{_pExists = a})
-
--- | When set, the target document must exist and have been last updated at
--- that time.
-pUpdateTime :: Lens' Precondition (Maybe UTCTime)
-pUpdateTime
-  = lens _pUpdateTime (\ s a -> s{_pUpdateTime = a}) .
-      mapping _DateTime
-
-instance FromJSON Precondition where
-        parseJSON
-          = withObject "Precondition"
-              (\ o ->
-                 Precondition' <$>
-                   (o .:? "exists") <*> (o .:? "updateTime"))
-
-instance ToJSON Precondition where
-        toJSON Precondition'{..}
-          = object
-              (catMaybes
-                 [("exists" .=) <$> _pExists,
-                  ("updateTime" .=) <$> _pUpdateTime])
-
--- | Options for a transaction that can be used to read and write documents.
---
--- /See:/ 'readWrite' smart constructor.
-newtype ReadWrite = ReadWrite'
-    { _rwRetryTransaction :: Maybe Bytes
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReadWrite' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rwRetryTransaction'
-readWrite
-    :: ReadWrite
-readWrite =
-    ReadWrite'
-    { _rwRetryTransaction = Nothing
-    }
-
--- | An optional transaction to retry.
-rwRetryTransaction :: Lens' ReadWrite (Maybe ByteString)
-rwRetryTransaction
-  = lens _rwRetryTransaction
-      (\ s a -> s{_rwRetryTransaction = a})
-      . mapping _Bytes
-
-instance FromJSON ReadWrite where
-        parseJSON
-          = withObject "ReadWrite"
-              (\ o -> ReadWrite' <$> (o .:? "retryTransaction"))
-
-instance ToJSON ReadWrite where
-        toJSON ReadWrite'{..}
-          = object
-              (catMaybes
-                 [("retryTransaction" .=) <$> _rwRetryTransaction])
-
--- | The request for Firestore.Rollback.
---
--- /See:/ 'rollbackRequest' smart constructor.
-newtype RollbackRequest = RollbackRequest'
-    { _rrTransaction :: Maybe Bytes
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RollbackRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrTransaction'
-rollbackRequest
-    :: RollbackRequest
-rollbackRequest =
-    RollbackRequest'
-    { _rrTransaction = Nothing
-    }
-
--- | The transaction to roll back.
-rrTransaction :: Lens' RollbackRequest (Maybe ByteString)
-rrTransaction
-  = lens _rrTransaction
-      (\ s a -> s{_rrTransaction = a})
-      . mapping _Bytes
-
-instance FromJSON RollbackRequest where
-        parseJSON
-          = withObject "RollbackRequest"
-              (\ o -> RollbackRequest' <$> (o .:? "transaction"))
-
-instance ToJSON RollbackRequest where
-        toJSON RollbackRequest'{..}
-          = object
-              (catMaybes [("transaction" .=) <$> _rrTransaction])
-
--- | The request for FirestoreAdmin.ExportDocuments.
---
--- /See:/ 'googleFirestoreAdminV1ExportDocumentsRequest' smart constructor.
-data GoogleFirestoreAdminV1ExportDocumentsRequest = GoogleFirestoreAdminV1ExportDocumentsRequest'
-    { _gfavedrCollectionIds   :: !(Maybe [Text])
-    , _gfavedrOutputURIPrefix :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ExportDocumentsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavedrCollectionIds'
---
--- * 'gfavedrOutputURIPrefix'
-googleFirestoreAdminV1ExportDocumentsRequest
-    :: GoogleFirestoreAdminV1ExportDocumentsRequest
-googleFirestoreAdminV1ExportDocumentsRequest =
-    GoogleFirestoreAdminV1ExportDocumentsRequest'
-    { _gfavedrCollectionIds = Nothing
-    , _gfavedrOutputURIPrefix = Nothing
-    }
-
--- | Which collection ids to export. Unspecified means all collections.
-gfavedrCollectionIds :: Lens' GoogleFirestoreAdminV1ExportDocumentsRequest [Text]
-gfavedrCollectionIds
-  = lens _gfavedrCollectionIds
-      (\ s a -> s{_gfavedrCollectionIds = a})
-      . _Default
-      . _Coerce
-
--- | 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.
-gfavedrOutputURIPrefix :: Lens' GoogleFirestoreAdminV1ExportDocumentsRequest (Maybe Text)
-gfavedrOutputURIPrefix
-  = lens _gfavedrOutputURIPrefix
-      (\ s a -> s{_gfavedrOutputURIPrefix = a})
-
-instance FromJSON
-         GoogleFirestoreAdminV1ExportDocumentsRequest where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ExportDocumentsRequest"
-              (\ o ->
-                 GoogleFirestoreAdminV1ExportDocumentsRequest' <$>
-                   (o .:? "collectionIds" .!= mempty) <*>
-                     (o .:? "outputUriPrefix"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ExportDocumentsRequest where
-        toJSON
-          GoogleFirestoreAdminV1ExportDocumentsRequest'{..}
-          = object
-              (catMaybes
-                 [("collectionIds" .=) <$> _gfavedrCollectionIds,
-                  ("outputUriPrefix" .=) <$> _gfavedrOutputURIPrefix])
-
--- | Targets being watched have changed.
---
--- /See:/ 'targetChange' smart constructor.
-data TargetChange = TargetChange'
-    { _tcReadTime         :: !(Maybe DateTime')
-    , _tcResumeToken      :: !(Maybe Bytes)
-    , _tcCause            :: !(Maybe Status)
-    , _tcTargetChangeType :: !(Maybe TargetChangeTargetChangeType)
-    , _tcTargetIds        :: !(Maybe [Textual Int32])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TargetChange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tcReadTime'
---
--- * 'tcResumeToken'
---
--- * 'tcCause'
---
--- * 'tcTargetChangeType'
---
--- * 'tcTargetIds'
-targetChange
-    :: TargetChange
-targetChange =
-    TargetChange'
-    { _tcReadTime = Nothing
-    , _tcResumeToken = Nothing
-    , _tcCause = Nothing
-    , _tcTargetChangeType = Nothing
-    , _tcTargetIds = Nothing
-    }
-
--- | 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.
-tcReadTime :: Lens' TargetChange (Maybe UTCTime)
-tcReadTime
-  = lens _tcReadTime (\ s a -> s{_tcReadTime = a}) .
-      mapping _DateTime
-
--- | 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.
-tcResumeToken :: Lens' TargetChange (Maybe ByteString)
-tcResumeToken
-  = lens _tcResumeToken
-      (\ s a -> s{_tcResumeToken = a})
-      . mapping _Bytes
-
--- | The error that resulted in this change, if applicable.
-tcCause :: Lens' TargetChange (Maybe Status)
-tcCause = lens _tcCause (\ s a -> s{_tcCause = a})
-
--- | The type of change that occurred.
-tcTargetChangeType :: Lens' TargetChange (Maybe TargetChangeTargetChangeType)
-tcTargetChangeType
-  = lens _tcTargetChangeType
-      (\ s a -> s{_tcTargetChangeType = a})
-
--- | 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.
-tcTargetIds :: Lens' TargetChange [Int32]
-tcTargetIds
-  = lens _tcTargetIds (\ s a -> s{_tcTargetIds = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON TargetChange where
-        parseJSON
-          = withObject "TargetChange"
-              (\ o ->
-                 TargetChange' <$>
-                   (o .:? "readTime") <*> (o .:? "resumeToken") <*>
-                     (o .:? "cause")
-                     <*> (o .:? "targetChangeType")
-                     <*> (o .:? "targetIds" .!= mempty))
-
-instance ToJSON TargetChange where
-        toJSON TargetChange'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _tcReadTime,
-                  ("resumeToken" .=) <$> _tcResumeToken,
-                  ("cause" .=) <$> _tcCause,
-                  ("targetChangeType" .=) <$> _tcTargetChangeType,
-                  ("targetIds" .=) <$> _tcTargetIds])
-
--- | The response message for Locations.ListLocations.
---
--- /See:/ 'listLocationsResponse' smart constructor.
-data ListLocationsResponse = ListLocationsResponse'
-    { _llrNextPageToken :: !(Maybe Text)
-    , _llrLocations     :: !(Maybe [Location])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListLocationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'llrNextPageToken'
---
--- * 'llrLocations'
-listLocationsResponse
-    :: ListLocationsResponse
-listLocationsResponse =
-    ListLocationsResponse'
-    { _llrNextPageToken = Nothing
-    , _llrLocations = Nothing
-    }
-
--- | The standard List next-page token.
-llrNextPageToken :: Lens' ListLocationsResponse (Maybe Text)
-llrNextPageToken
-  = lens _llrNextPageToken
-      (\ s a -> s{_llrNextPageToken = a})
-
--- | A list of locations that matches the specified filter in the request.
-llrLocations :: Lens' ListLocationsResponse [Location]
-llrLocations
-  = lens _llrLocations (\ s a -> s{_llrLocations = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListLocationsResponse where
-        parseJSON
-          = withObject "ListLocationsResponse"
-              (\ o ->
-                 ListLocationsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "locations" .!= mempty))
-
-instance ToJSON ListLocationsResponse where
-        toJSON ListLocationsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _llrNextPageToken,
-                  ("locations" .=) <$> _llrLocations])
-
--- | A position in a query result set.
---
--- /See:/ 'cursor' smart constructor.
-data Cursor = Cursor'
-    { _cValues :: !(Maybe [Value])
-    , _cBefore :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Cursor' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cValues'
---
--- * 'cBefore'
-cursor
-    :: Cursor
-cursor =
-    Cursor'
-    { _cValues = Nothing
-    , _cBefore = Nothing
-    }
-
--- | 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.
-cValues :: Lens' Cursor [Value]
-cValues
-  = lens _cValues (\ s a -> s{_cValues = a}) . _Default
-      . _Coerce
-
--- | If the position is just before or just after the given values, relative
--- to the sort order defined by the query.
-cBefore :: Lens' Cursor (Maybe Bool)
-cBefore = lens _cBefore (\ s a -> s{_cBefore = a})
-
-instance FromJSON Cursor where
-        parseJSON
-          = withObject "Cursor"
-              (\ o ->
-                 Cursor' <$>
-                   (o .:? "values" .!= mempty) <*> (o .:? "before"))
-
-instance ToJSON Cursor where
-        toJSON Cursor'{..}
-          = object
-              (catMaybes
-                 [("values" .=) <$> _cValues,
-                  ("before" .=) <$> _cBefore])
-
--- | Metadata for google.longrunning.Operation results from
--- FirestoreAdmin.ImportDocuments.
---
--- /See:/ 'googleFirestoreAdminV1ImportDocumentsMetadata' smart constructor.
-data GoogleFirestoreAdminV1ImportDocumentsMetadata = GoogleFirestoreAdminV1ImportDocumentsMetadata'
-    { _gfavidmProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfavidmStartTime         :: !(Maybe DateTime')
-    , _gfavidmInputURIPrefix    :: !(Maybe Text)
-    , _gfavidmCollectionIds     :: !(Maybe [Text])
-    , _gfavidmProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfavidmEndTime           :: !(Maybe DateTime')
-    , _gfavidmOperationState    :: !(Maybe GoogleFirestoreAdminV1ImportDocumentsMetadataOperationState)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ImportDocumentsMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavidmProgressBytes'
---
--- * 'gfavidmStartTime'
---
--- * 'gfavidmInputURIPrefix'
---
--- * 'gfavidmCollectionIds'
---
--- * 'gfavidmProgressDocuments'
---
--- * 'gfavidmEndTime'
---
--- * 'gfavidmOperationState'
-googleFirestoreAdminV1ImportDocumentsMetadata
-    :: GoogleFirestoreAdminV1ImportDocumentsMetadata
-googleFirestoreAdminV1ImportDocumentsMetadata =
-    GoogleFirestoreAdminV1ImportDocumentsMetadata'
-    { _gfavidmProgressBytes = Nothing
-    , _gfavidmStartTime = Nothing
-    , _gfavidmInputURIPrefix = Nothing
-    , _gfavidmCollectionIds = Nothing
-    , _gfavidmProgressDocuments = Nothing
-    , _gfavidmEndTime = Nothing
-    , _gfavidmOperationState = Nothing
-    }
-
--- | The progress, in bytes, of this operation.
-gfavidmProgressBytes :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfavidmProgressBytes
-  = lens _gfavidmProgressBytes
-      (\ s a -> s{_gfavidmProgressBytes = a})
-
--- | The time this operation started.
-gfavidmStartTime :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe UTCTime)
-gfavidmStartTime
-  = lens _gfavidmStartTime
-      (\ s a -> s{_gfavidmStartTime = a})
-      . mapping _DateTime
-
--- | The location of the documents being imported.
-gfavidmInputURIPrefix :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe Text)
-gfavidmInputURIPrefix
-  = lens _gfavidmInputURIPrefix
-      (\ s a -> s{_gfavidmInputURIPrefix = a})
-
--- | Which collection ids are being imported.
-gfavidmCollectionIds :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata [Text]
-gfavidmCollectionIds
-  = lens _gfavidmCollectionIds
-      (\ s a -> s{_gfavidmCollectionIds = a})
-      . _Default
-      . _Coerce
-
--- | The progress, in documents, of this operation.
-gfavidmProgressDocuments :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfavidmProgressDocuments
-  = lens _gfavidmProgressDocuments
-      (\ s a -> s{_gfavidmProgressDocuments = a})
-
--- | The time this operation completed. Will be unset if operation still in
--- progress.
-gfavidmEndTime :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe UTCTime)
-gfavidmEndTime
-  = lens _gfavidmEndTime
-      (\ s a -> s{_gfavidmEndTime = a})
-      . mapping _DateTime
-
--- | The state of the import operation.
-gfavidmOperationState :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe GoogleFirestoreAdminV1ImportDocumentsMetadataOperationState)
-gfavidmOperationState
-  = lens _gfavidmOperationState
-      (\ s a -> s{_gfavidmOperationState = a})
-
-instance FromJSON
-         GoogleFirestoreAdminV1ImportDocumentsMetadata where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ImportDocumentsMetadata"
-              (\ o ->
-                 GoogleFirestoreAdminV1ImportDocumentsMetadata' <$>
-                   (o .:? "progressBytes") <*> (o .:? "startTime") <*>
-                     (o .:? "inputUriPrefix")
-                     <*> (o .:? "collectionIds" .!= mempty)
-                     <*> (o .:? "progressDocuments")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "operationState"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ImportDocumentsMetadata where
-        toJSON
-          GoogleFirestoreAdminV1ImportDocumentsMetadata'{..}
-          = object
-              (catMaybes
-                 [("progressBytes" .=) <$> _gfavidmProgressBytes,
-                  ("startTime" .=) <$> _gfavidmStartTime,
-                  ("inputUriPrefix" .=) <$> _gfavidmInputURIPrefix,
-                  ("collectionIds" .=) <$> _gfavidmCollectionIds,
-                  ("progressDocuments" .=) <$>
-                    _gfavidmProgressDocuments,
-                  ("endTime" .=) <$> _gfavidmEndTime,
-                  ("operationState" .=) <$> _gfavidmOperationState])
-
--- | The request for Firestore.BeginTransaction.
---
--- /See:/ 'beginTransactionRequest' smart constructor.
-newtype BeginTransactionRequest = BeginTransactionRequest'
-    { _btrOptions :: Maybe TransactionOptions
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BeginTransactionRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'btrOptions'
-beginTransactionRequest
-    :: BeginTransactionRequest
-beginTransactionRequest =
-    BeginTransactionRequest'
-    { _btrOptions = Nothing
-    }
-
--- | The options for the transaction. Defaults to a read-write transaction.
-btrOptions :: Lens' BeginTransactionRequest (Maybe TransactionOptions)
-btrOptions
-  = lens _btrOptions (\ s a -> s{_btrOptions = a})
-
-instance FromJSON BeginTransactionRequest where
-        parseJSON
-          = withObject "BeginTransactionRequest"
-              (\ o ->
-                 BeginTransactionRequest' <$> (o .:? "options"))
-
-instance ToJSON BeginTransactionRequest where
-        toJSON BeginTransactionRequest'{..}
-          = object (catMaybes [("options" .=) <$> _btrOptions])
-
--- | The request for Firestore.RunQuery.
---
--- /See:/ 'runQueryRequest' smart constructor.
-data RunQueryRequest = RunQueryRequest'
-    { _rqrReadTime        :: !(Maybe DateTime')
-    , _rqrNewTransaction  :: !(Maybe TransactionOptions)
-    , _rqrStructuredQuery :: !(Maybe StructuredQuery)
-    , _rqrTransaction     :: !(Maybe Bytes)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RunQueryRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rqrReadTime'
---
--- * 'rqrNewTransaction'
---
--- * 'rqrStructuredQuery'
---
--- * 'rqrTransaction'
-runQueryRequest
-    :: RunQueryRequest
-runQueryRequest =
-    RunQueryRequest'
-    { _rqrReadTime = Nothing
-    , _rqrNewTransaction = Nothing
-    , _rqrStructuredQuery = Nothing
-    , _rqrTransaction = Nothing
-    }
-
--- | Reads documents as they were at the given time. This may not be older
--- than 60 seconds.
-rqrReadTime :: Lens' RunQueryRequest (Maybe UTCTime)
-rqrReadTime
-  = lens _rqrReadTime (\ s a -> s{_rqrReadTime = a}) .
-      mapping _DateTime
-
--- | 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.
-rqrNewTransaction :: Lens' RunQueryRequest (Maybe TransactionOptions)
-rqrNewTransaction
-  = lens _rqrNewTransaction
-      (\ s a -> s{_rqrNewTransaction = a})
-
--- | A structured query.
-rqrStructuredQuery :: Lens' RunQueryRequest (Maybe StructuredQuery)
-rqrStructuredQuery
-  = lens _rqrStructuredQuery
-      (\ s a -> s{_rqrStructuredQuery = a})
-
--- | Reads documents in a transaction.
-rqrTransaction :: Lens' RunQueryRequest (Maybe ByteString)
-rqrTransaction
-  = lens _rqrTransaction
-      (\ s a -> s{_rqrTransaction = a})
-      . mapping _Bytes
-
-instance FromJSON RunQueryRequest where
-        parseJSON
-          = withObject "RunQueryRequest"
-              (\ o ->
-                 RunQueryRequest' <$>
-                   (o .:? "readTime") <*> (o .:? "newTransaction") <*>
-                     (o .:? "structuredQuery")
-                     <*> (o .:? "transaction"))
-
-instance ToJSON RunQueryRequest where
-        toJSON RunQueryRequest'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _rqrReadTime,
-                  ("newTransaction" .=) <$> _rqrNewTransaction,
-                  ("structuredQuery" .=) <$> _rqrStructuredQuery,
-                  ("transaction" .=) <$> _rqrTransaction])
-
--- | Information about an index configuration change.
---
--- /See:/ 'googleFirestoreAdminV1IndexConfigDelta' smart constructor.
-data GoogleFirestoreAdminV1IndexConfigDelta = GoogleFirestoreAdminV1IndexConfigDelta'
-    { _gfavicdIndex      :: !(Maybe GoogleFirestoreAdminV1Index)
-    , _gfavicdChangeType :: !(Maybe GoogleFirestoreAdminV1IndexConfigDeltaChangeType)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1IndexConfigDelta' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavicdIndex'
---
--- * 'gfavicdChangeType'
-googleFirestoreAdminV1IndexConfigDelta
-    :: GoogleFirestoreAdminV1IndexConfigDelta
-googleFirestoreAdminV1IndexConfigDelta =
-    GoogleFirestoreAdminV1IndexConfigDelta'
-    { _gfavicdIndex = Nothing
-    , _gfavicdChangeType = Nothing
-    }
-
--- | The index being changed.
-gfavicdIndex :: Lens' GoogleFirestoreAdminV1IndexConfigDelta (Maybe GoogleFirestoreAdminV1Index)
-gfavicdIndex
-  = lens _gfavicdIndex (\ s a -> s{_gfavicdIndex = a})
-
--- | Specifies how the index is changing.
-gfavicdChangeType :: Lens' GoogleFirestoreAdminV1IndexConfigDelta (Maybe GoogleFirestoreAdminV1IndexConfigDeltaChangeType)
-gfavicdChangeType
-  = lens _gfavicdChangeType
-      (\ s a -> s{_gfavicdChangeType = a})
-
-instance FromJSON
-         GoogleFirestoreAdminV1IndexConfigDelta where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1IndexConfigDelta"
-              (\ o ->
-                 GoogleFirestoreAdminV1IndexConfigDelta' <$>
-                   (o .:? "index") <*> (o .:? "changeType"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1IndexConfigDelta where
-        toJSON GoogleFirestoreAdminV1IndexConfigDelta'{..}
-          = object
-              (catMaybes
-                 [("index" .=) <$> _gfavicdIndex,
-                  ("changeType" .=) <$> _gfavicdChangeType])
-
--- | The index configuration for this field.
---
--- /See:/ 'googleFirestoreAdminV1IndexConfig' smart constructor.
-data GoogleFirestoreAdminV1IndexConfig = GoogleFirestoreAdminV1IndexConfig'
-    { _gfavicAncestorField      :: !(Maybe Text)
-    , _gfavicReverting          :: !(Maybe Bool)
-    , _gfavicIndexes            :: !(Maybe [GoogleFirestoreAdminV1Index])
-    , _gfavicUsesAncestorConfig :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1IndexConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavicAncestorField'
---
--- * 'gfavicReverting'
---
--- * 'gfavicIndexes'
---
--- * 'gfavicUsesAncestorConfig'
-googleFirestoreAdminV1IndexConfig
-    :: GoogleFirestoreAdminV1IndexConfig
-googleFirestoreAdminV1IndexConfig =
-    GoogleFirestoreAdminV1IndexConfig'
-    { _gfavicAncestorField = Nothing
-    , _gfavicReverting = Nothing
-    , _gfavicIndexes = Nothing
-    , _gfavicUsesAncestorConfig = Nothing
-    }
-
--- | 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).
-gfavicAncestorField :: Lens' GoogleFirestoreAdminV1IndexConfig (Maybe Text)
-gfavicAncestorField
-  = lens _gfavicAncestorField
-      (\ s a -> s{_gfavicAncestorField = a})
-
--- | 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\`.
-gfavicReverting :: Lens' GoogleFirestoreAdminV1IndexConfig (Maybe Bool)
-gfavicReverting
-  = lens _gfavicReverting
-      (\ s a -> s{_gfavicReverting = a})
-
--- | The indexes supported for this field.
-gfavicIndexes :: Lens' GoogleFirestoreAdminV1IndexConfig [GoogleFirestoreAdminV1Index]
-gfavicIndexes
-  = lens _gfavicIndexes
-      (\ s a -> s{_gfavicIndexes = a})
-      . _Default
-      . _Coerce
-
--- | 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.
-gfavicUsesAncestorConfig :: Lens' GoogleFirestoreAdminV1IndexConfig (Maybe Bool)
-gfavicUsesAncestorConfig
-  = lens _gfavicUsesAncestorConfig
-      (\ s a -> s{_gfavicUsesAncestorConfig = a})
-
-instance FromJSON GoogleFirestoreAdminV1IndexConfig
-         where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1IndexConfig"
-              (\ o ->
-                 GoogleFirestoreAdminV1IndexConfig' <$>
-                   (o .:? "ancestorField") <*> (o .:? "reverting") <*>
-                     (o .:? "indexes" .!= mempty)
-                     <*> (o .:? "usesAncestorConfig"))
-
-instance ToJSON GoogleFirestoreAdminV1IndexConfig
-         where
-        toJSON GoogleFirestoreAdminV1IndexConfig'{..}
-          = object
-              (catMaybes
-                 [("ancestorField" .=) <$> _gfavicAncestorField,
-                  ("reverting" .=) <$> _gfavicReverting,
-                  ("indexes" .=) <$> _gfavicIndexes,
-                  ("usesAncestorConfig" .=) <$>
-                    _gfavicUsesAncestorConfig])
-
--- | A field in an index. The field_path describes which field is indexed,
--- the value_mode describes how the field value is indexed.
---
--- /See:/ 'googleFirestoreAdminV1IndexField' smart constructor.
-data GoogleFirestoreAdminV1IndexField = GoogleFirestoreAdminV1IndexField'
-    { _gfavifFieldPath   :: !(Maybe Text)
-    , _gfavifArrayConfig :: !(Maybe GoogleFirestoreAdminV1IndexFieldArrayConfig)
-    , _gfavifOrder       :: !(Maybe GoogleFirestoreAdminV1IndexFieldOrder)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1IndexField' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavifFieldPath'
---
--- * 'gfavifArrayConfig'
---
--- * 'gfavifOrder'
-googleFirestoreAdminV1IndexField
-    :: GoogleFirestoreAdminV1IndexField
-googleFirestoreAdminV1IndexField =
-    GoogleFirestoreAdminV1IndexField'
-    { _gfavifFieldPath = Nothing
-    , _gfavifArrayConfig = Nothing
-    , _gfavifOrder = Nothing
-    }
-
--- | Can be __name__. For single field indexes, this must match the name of
--- the field or may be omitted.
-gfavifFieldPath :: Lens' GoogleFirestoreAdminV1IndexField (Maybe Text)
-gfavifFieldPath
-  = lens _gfavifFieldPath
-      (\ s a -> s{_gfavifFieldPath = a})
-
--- | Indicates that this field supports operations on \`array_value\`s.
-gfavifArrayConfig :: Lens' GoogleFirestoreAdminV1IndexField (Maybe GoogleFirestoreAdminV1IndexFieldArrayConfig)
-gfavifArrayConfig
-  = lens _gfavifArrayConfig
-      (\ s a -> s{_gfavifArrayConfig = a})
-
--- | Indicates that this field supports ordering by the specified order or
--- comparing using =, \<, \<=, >, >=.
-gfavifOrder :: Lens' GoogleFirestoreAdminV1IndexField (Maybe GoogleFirestoreAdminV1IndexFieldOrder)
-gfavifOrder
-  = lens _gfavifOrder (\ s a -> s{_gfavifOrder = a})
-
-instance FromJSON GoogleFirestoreAdminV1IndexField
-         where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1IndexField"
-              (\ o ->
-                 GoogleFirestoreAdminV1IndexField' <$>
-                   (o .:? "fieldPath") <*> (o .:? "arrayConfig") <*>
-                     (o .:? "order"))
-
-instance ToJSON GoogleFirestoreAdminV1IndexField
-         where
-        toJSON GoogleFirestoreAdminV1IndexField'{..}
-          = object
-              (catMaybes
-                 [("fieldPath" .=) <$> _gfavifFieldPath,
-                  ("arrayConfig" .=) <$> _gfavifArrayConfig,
-                  ("order" .=) <$> _gfavifOrder])
-
--- | A write on a document.
---
--- /See:/ 'write' smart constructor.
-data Write = Write'
-    { _wTransform       :: !(Maybe DocumentTransform)
-    , _wUpdateMask      :: !(Maybe DocumentMask)
-    , _wCurrentDocument :: !(Maybe Precondition)
-    , _wDelete          :: !(Maybe Text)
-    , _wUpdate          :: !(Maybe Document)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Write' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wTransform'
---
--- * 'wUpdateMask'
---
--- * 'wCurrentDocument'
---
--- * 'wDelete'
---
--- * 'wUpdate'
-write
-    :: Write
-write =
-    Write'
-    { _wTransform = Nothing
-    , _wUpdateMask = Nothing
-    , _wCurrentDocument = Nothing
-    , _wDelete = Nothing
-    , _wUpdate = Nothing
-    }
-
--- | Applies a tranformation 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.
-wTransform :: Lens' Write (Maybe DocumentTransform)
-wTransform
-  = lens _wTransform (\ s a -> s{_wTransform = a})
-
--- | 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.
-wUpdateMask :: Lens' Write (Maybe DocumentMask)
-wUpdateMask
-  = lens _wUpdateMask (\ s a -> s{_wUpdateMask = a})
-
--- | An optional precondition on the document. The write will fail if this is
--- set and not met by the target document.
-wCurrentDocument :: Lens' Write (Maybe Precondition)
-wCurrentDocument
-  = lens _wCurrentDocument
-      (\ s a -> s{_wCurrentDocument = a})
-
--- | A document name to delete. In the format:
--- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
-wDelete :: Lens' Write (Maybe Text)
-wDelete = lens _wDelete (\ s a -> s{_wDelete = a})
-
--- | A document to write.
-wUpdate :: Lens' Write (Maybe Document)
-wUpdate = lens _wUpdate (\ s a -> s{_wUpdate = a})
-
-instance FromJSON Write where
-        parseJSON
-          = withObject "Write"
-              (\ o ->
-                 Write' <$>
-                   (o .:? "transform") <*> (o .:? "updateMask") <*>
-                     (o .:? "currentDocument")
-                     <*> (o .:? "delete")
-                     <*> (o .:? "update"))
-
-instance ToJSON Write where
-        toJSON Write'{..}
-          = object
-              (catMaybes
-                 [("transform" .=) <$> _wTransform,
-                  ("updateMask" .=) <$> _wUpdateMask,
-                  ("currentDocument" .=) <$> _wCurrentDocument,
-                  ("delete" .=) <$> _wDelete,
-                  ("update" .=) <$> _wUpdate])
-
--- | A resource that represents Google Cloud Platform location.
---
--- /See:/ 'location' smart constructor.
-data Location = Location'
-    { _lName        :: !(Maybe Text)
-    , _lMetadata    :: !(Maybe LocationMetadata)
-    , _lDisplayName :: !(Maybe Text)
-    , _lLabels      :: !(Maybe LocationLabels)
-    , _lLocationId  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Location' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lName'
---
--- * 'lMetadata'
---
--- * 'lDisplayName'
---
--- * 'lLabels'
---
--- * 'lLocationId'
-location
-    :: Location
-location =
-    Location'
-    { _lName = Nothing
-    , _lMetadata = Nothing
-    , _lDisplayName = Nothing
-    , _lLabels = Nothing
-    , _lLocationId = Nothing
-    }
-
--- | Resource name for the location, which may vary between implementations.
--- For example: \`\"projects\/example-project\/locations\/us-east1\"\`
-lName :: Lens' Location (Maybe Text)
-lName = lens _lName (\ s a -> s{_lName = a})
-
--- | Service-specific metadata. For example the available capacity at the
--- given location.
-lMetadata :: Lens' Location (Maybe LocationMetadata)
-lMetadata
-  = lens _lMetadata (\ s a -> s{_lMetadata = a})
-
--- | The friendly name for this location, typically a nearby city name. For
--- example, \"Tokyo\".
-lDisplayName :: Lens' Location (Maybe Text)
-lDisplayName
-  = lens _lDisplayName (\ s a -> s{_lDisplayName = a})
-
--- | Cross-service attributes for the location. For example
--- {\"cloud.googleapis.com\/region\": \"us-east1\"}
-lLabels :: Lens' Location (Maybe LocationLabels)
-lLabels = lens _lLabels (\ s a -> s{_lLabels = a})
-
--- | The canonical id for this location. For example: \`\"us-east1\"\`.
-lLocationId :: Lens' Location (Maybe Text)
-lLocationId
-  = lens _lLocationId (\ s a -> s{_lLocationId = a})
-
-instance FromJSON Location where
-        parseJSON
-          = withObject "Location"
-              (\ o ->
-                 Location' <$>
-                   (o .:? "name") <*> (o .:? "metadata") <*>
-                     (o .:? "displayName")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "locationId"))
-
-instance ToJSON Location where
-        toJSON Location'{..}
-          = object
-              (catMaybes
-                 [("name" .=) <$> _lName,
-                  ("metadata" .=) <$> _lMetadata,
-                  ("displayName" .=) <$> _lDisplayName,
-                  ("labels" .=) <$> _lLabels,
-                  ("locationId" .=) <$> _lLocationId])
-
--- | 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 \`{}\`.
---
--- /See:/ 'empty' smart constructor.
-data Empty =
-    Empty'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Empty' with the minimum fields required to make a request.
---
-empty
-    :: Empty
-empty = Empty'
-
-instance FromJSON Empty where
-        parseJSON = withObject "Empty" (\ o -> pure Empty')
-
-instance ToJSON Empty where
-        toJSON = const emptyObject
-
--- | The streamed response for Firestore.BatchGetDocuments.
---
--- /See:/ 'batchGetDocumentsResponse' smart constructor.
-data BatchGetDocumentsResponse = BatchGetDocumentsResponse'
-    { _bgdrReadTime    :: !(Maybe DateTime')
-    , _bgdrFound       :: !(Maybe Document)
-    , _bgdrTransaction :: !(Maybe Bytes)
-    , _bgdrMissing     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BatchGetDocumentsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bgdrReadTime'
---
--- * 'bgdrFound'
---
--- * 'bgdrTransaction'
---
--- * 'bgdrMissing'
-batchGetDocumentsResponse
-    :: BatchGetDocumentsResponse
-batchGetDocumentsResponse =
-    BatchGetDocumentsResponse'
-    { _bgdrReadTime = Nothing
-    , _bgdrFound = Nothing
-    , _bgdrTransaction = Nothing
-    , _bgdrMissing = Nothing
-    }
-
--- | 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.
-bgdrReadTime :: Lens' BatchGetDocumentsResponse (Maybe UTCTime)
-bgdrReadTime
-  = lens _bgdrReadTime (\ s a -> s{_bgdrReadTime = a})
-      . mapping _DateTime
-
--- | A document that was requested.
-bgdrFound :: Lens' BatchGetDocumentsResponse (Maybe Document)
-bgdrFound
-  = lens _bgdrFound (\ s a -> s{_bgdrFound = a})
-
--- | 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.
-bgdrTransaction :: Lens' BatchGetDocumentsResponse (Maybe ByteString)
-bgdrTransaction
-  = lens _bgdrTransaction
-      (\ s a -> s{_bgdrTransaction = a})
-      . mapping _Bytes
-
--- | A document name that was requested but does not exist. In the format:
--- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
-bgdrMissing :: Lens' BatchGetDocumentsResponse (Maybe Text)
-bgdrMissing
-  = lens _bgdrMissing (\ s a -> s{_bgdrMissing = a})
-
-instance FromJSON BatchGetDocumentsResponse where
-        parseJSON
-          = withObject "BatchGetDocumentsResponse"
-              (\ o ->
-                 BatchGetDocumentsResponse' <$>
-                   (o .:? "readTime") <*> (o .:? "found") <*>
-                     (o .:? "transaction")
-                     <*> (o .:? "missing"))
-
-instance ToJSON BatchGetDocumentsResponse where
-        toJSON BatchGetDocumentsResponse'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _bgdrReadTime,
-                  ("found" .=) <$> _bgdrFound,
-                  ("transaction" .=) <$> _bgdrTransaction,
-                  ("missing" .=) <$> _bgdrMissing])
-
--- | A filter that merges multiple other filters using the given operator.
---
--- /See:/ 'compositeFilter' smart constructor.
-data CompositeFilter = CompositeFilter'
-    { _cfOp      :: !(Maybe CompositeFilterOp)
-    , _cfFilters :: !(Maybe [Filter])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CompositeFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfOp'
---
--- * 'cfFilters'
-compositeFilter
-    :: CompositeFilter
-compositeFilter =
-    CompositeFilter'
-    { _cfOp = Nothing
-    , _cfFilters = Nothing
-    }
-
--- | The operator for combining multiple filters.
-cfOp :: Lens' CompositeFilter (Maybe CompositeFilterOp)
-cfOp = lens _cfOp (\ s a -> s{_cfOp = a})
-
--- | The list of filters to combine. Must contain at least one filter.
-cfFilters :: Lens' CompositeFilter [Filter]
-cfFilters
-  = lens _cfFilters (\ s a -> s{_cfFilters = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON CompositeFilter where
-        parseJSON
-          = withObject "CompositeFilter"
-              (\ o ->
-                 CompositeFilter' <$>
-                   (o .:? "op") <*> (o .:? "filters" .!= mempty))
-
-instance ToJSON CompositeFilter where
-        toJSON CompositeFilter'{..}
-          = object
-              (catMaybes
-                 [("op" .=) <$> _cfOp, ("filters" .=) <$> _cfFilters])
-
--- | A target specified by a set of documents names.
---
--- /See:/ 'documentsTarget' smart constructor.
-newtype DocumentsTarget = DocumentsTarget'
-    { _dtDocuments :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentsTarget' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtDocuments'
-documentsTarget
-    :: DocumentsTarget
-documentsTarget =
-    DocumentsTarget'
-    { _dtDocuments = Nothing
-    }
-
--- | 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.
-dtDocuments :: Lens' DocumentsTarget [Text]
-dtDocuments
-  = lens _dtDocuments (\ s a -> s{_dtDocuments = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON DocumentsTarget where
-        parseJSON
-          = withObject "DocumentsTarget"
-              (\ o ->
-                 DocumentsTarget' <$> (o .:? "documents" .!= mempty))
-
-instance ToJSON DocumentsTarget where
-        toJSON DocumentsTarget'{..}
-          = object
-              (catMaybes [("documents" .=) <$> _dtDocuments])
-
--- | Labels associated with this target change.
---
--- /See:/ 'listenRequestLabels' smart constructor.
-newtype ListenRequestLabels = ListenRequestLabels'
-    { _lrlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListenRequestLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrlAddtional'
-listenRequestLabels
-    :: HashMap Text Text -- ^ 'lrlAddtional'
-    -> ListenRequestLabels
-listenRequestLabels pLrlAddtional_ =
-    ListenRequestLabels'
-    { _lrlAddtional = _Coerce # pLrlAddtional_
-    }
-
-lrlAddtional :: Lens' ListenRequestLabels (HashMap Text Text)
-lrlAddtional
-  = lens _lrlAddtional (\ s a -> s{_lrlAddtional = a})
-      . _Coerce
-
-instance FromJSON ListenRequestLabels where
-        parseJSON
-          = withObject "ListenRequestLabels"
-              (\ o -> ListenRequestLabels' <$> (parseJSONObject o))
-
-instance ToJSON ListenRequestLabels where
-        toJSON = toJSON . _lrlAddtional
-
--- | Cloud Firestore indexes enable simple and complex queries against
--- documents in a database.
---
--- /See:/ 'googleFirestoreAdminV1Index' smart constructor.
-data GoogleFirestoreAdminV1Index = GoogleFirestoreAdminV1Index'
-    { _gfaviState      :: !(Maybe GoogleFirestoreAdminV1IndexState)
-    , _gfaviQueryScope :: !(Maybe GoogleFirestoreAdminV1IndexQueryScope)
-    , _gfaviName       :: !(Maybe Text)
-    , _gfaviFields     :: !(Maybe [GoogleFirestoreAdminV1IndexField])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1Index' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfaviState'
---
--- * 'gfaviQueryScope'
---
--- * 'gfaviName'
---
--- * 'gfaviFields'
-googleFirestoreAdminV1Index
-    :: GoogleFirestoreAdminV1Index
-googleFirestoreAdminV1Index =
-    GoogleFirestoreAdminV1Index'
-    { _gfaviState = Nothing
-    , _gfaviQueryScope = Nothing
-    , _gfaviName = Nothing
-    , _gfaviFields = Nothing
-    }
-
--- | Output only. The serving state of the index.
-gfaviState :: Lens' GoogleFirestoreAdminV1Index (Maybe GoogleFirestoreAdminV1IndexState)
-gfaviState
-  = lens _gfaviState (\ s a -> s{_gfaviState = a})
-
--- | 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.
-gfaviQueryScope :: Lens' GoogleFirestoreAdminV1Index (Maybe GoogleFirestoreAdminV1IndexQueryScope)
-gfaviQueryScope
-  = lens _gfaviQueryScope
-      (\ s a -> s{_gfaviQueryScope = a})
-
--- | 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.
-gfaviName :: Lens' GoogleFirestoreAdminV1Index (Maybe Text)
-gfaviName
-  = lens _gfaviName (\ s a -> s{_gfaviName = a})
-
--- | 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.
-gfaviFields :: Lens' GoogleFirestoreAdminV1Index [GoogleFirestoreAdminV1IndexField]
-gfaviFields
-  = lens _gfaviFields (\ s a -> s{_gfaviFields = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON GoogleFirestoreAdminV1Index where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1Index"
-              (\ o ->
-                 GoogleFirestoreAdminV1Index' <$>
-                   (o .:? "state") <*> (o .:? "queryScope") <*>
-                     (o .:? "name")
-                     <*> (o .:? "fields" .!= mempty))
-
-instance ToJSON GoogleFirestoreAdminV1Index where
-        toJSON GoogleFirestoreAdminV1Index'{..}
-          = object
-              (catMaybes
-                 [("state" .=) <$> _gfaviState,
-                  ("queryScope" .=) <$> _gfaviQueryScope,
-                  ("name" .=) <$> _gfaviName,
-                  ("fields" .=) <$> _gfaviFields])
-
--- | The response for Firestore.BeginTransaction.
---
--- /See:/ 'beginTransactionResponse' smart constructor.
-newtype BeginTransactionResponse = BeginTransactionResponse'
-    { _btrTransaction :: Maybe Bytes
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BeginTransactionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'btrTransaction'
-beginTransactionResponse
-    :: BeginTransactionResponse
-beginTransactionResponse =
-    BeginTransactionResponse'
-    { _btrTransaction = Nothing
-    }
-
--- | The transaction that was started.
-btrTransaction :: Lens' BeginTransactionResponse (Maybe ByteString)
-btrTransaction
-  = lens _btrTransaction
-      (\ s a -> s{_btrTransaction = a})
-      . mapping _Bytes
-
-instance FromJSON BeginTransactionResponse where
-        parseJSON
-          = withObject "BeginTransactionResponse"
-              (\ o ->
-                 BeginTransactionResponse' <$> (o .:? "transaction"))
-
-instance ToJSON BeginTransactionResponse where
-        toJSON BeginTransactionResponse'{..}
-          = object
-              (catMaybes [("transaction" .=) <$> _btrTransaction])
-
--- | The response for Firestore.RunQuery.
---
--- /See:/ 'runQueryResponse' smart constructor.
-data RunQueryResponse = RunQueryResponse'
-    { _rReadTime       :: !(Maybe DateTime')
-    , _rSkippedResults :: !(Maybe (Textual Int32))
-    , _rTransaction    :: !(Maybe Bytes)
-    , _rDocument       :: !(Maybe Document)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RunQueryResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rReadTime'
---
--- * 'rSkippedResults'
---
--- * 'rTransaction'
---
--- * 'rDocument'
-runQueryResponse
-    :: RunQueryResponse
-runQueryResponse =
-    RunQueryResponse'
-    { _rReadTime = Nothing
-    , _rSkippedResults = Nothing
-    , _rTransaction = Nothing
-    , _rDocument = Nothing
-    }
-
--- | 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.
-rReadTime :: Lens' RunQueryResponse (Maybe UTCTime)
-rReadTime
-  = lens _rReadTime (\ s a -> s{_rReadTime = a}) .
-      mapping _DateTime
-
--- | The number of results that have been skipped due to an offset between
--- the last response and the current response.
-rSkippedResults :: Lens' RunQueryResponse (Maybe Int32)
-rSkippedResults
-  = lens _rSkippedResults
-      (\ s a -> s{_rSkippedResults = a})
-      . mapping _Coerce
-
--- | 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.
-rTransaction :: Lens' RunQueryResponse (Maybe ByteString)
-rTransaction
-  = lens _rTransaction (\ s a -> s{_rTransaction = a})
-      . mapping _Bytes
-
--- | A query result. Not set when reporting partial progress.
-rDocument :: Lens' RunQueryResponse (Maybe Document)
-rDocument
-  = lens _rDocument (\ s a -> s{_rDocument = a})
-
-instance FromJSON RunQueryResponse where
-        parseJSON
-          = withObject "RunQueryResponse"
-              (\ o ->
-                 RunQueryResponse' <$>
-                   (o .:? "readTime") <*> (o .:? "skippedResults") <*>
-                     (o .:? "transaction")
-                     <*> (o .:? "document"))
-
-instance ToJSON RunQueryResponse where
-        toJSON RunQueryResponse'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _rReadTime,
-                  ("skippedResults" .=) <$> _rSkippedResults,
-                  ("transaction" .=) <$> _rTransaction,
-                  ("document" .=) <$> _rDocument])
-
--- | Metadata for google.longrunning.Operation results from
--- FirestoreAdmin.ExportDocuments.
---
--- /See:/ 'googleFirestoreAdminV1ExportDocumentsMetadata' smart constructor.
-data GoogleFirestoreAdminV1ExportDocumentsMetadata = GoogleFirestoreAdminV1ExportDocumentsMetadata'
-    { _gfavedmProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfavedmStartTime         :: !(Maybe DateTime')
-    , _gfavedmCollectionIds     :: !(Maybe [Text])
-    , _gfavedmProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfavedmEndTime           :: !(Maybe DateTime')
-    , _gfavedmOperationState    :: !(Maybe GoogleFirestoreAdminV1ExportDocumentsMetadataOperationState)
-    , _gfavedmOutputURIPrefix   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ExportDocumentsMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavedmProgressBytes'
---
--- * 'gfavedmStartTime'
---
--- * 'gfavedmCollectionIds'
---
--- * 'gfavedmProgressDocuments'
---
--- * 'gfavedmEndTime'
---
--- * 'gfavedmOperationState'
---
--- * 'gfavedmOutputURIPrefix'
-googleFirestoreAdminV1ExportDocumentsMetadata
-    :: GoogleFirestoreAdminV1ExportDocumentsMetadata
-googleFirestoreAdminV1ExportDocumentsMetadata =
-    GoogleFirestoreAdminV1ExportDocumentsMetadata'
-    { _gfavedmProgressBytes = Nothing
-    , _gfavedmStartTime = Nothing
-    , _gfavedmCollectionIds = Nothing
-    , _gfavedmProgressDocuments = Nothing
-    , _gfavedmEndTime = Nothing
-    , _gfavedmOperationState = Nothing
-    , _gfavedmOutputURIPrefix = Nothing
-    }
-
--- | The progress, in bytes, of this operation.
-gfavedmProgressBytes :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfavedmProgressBytes
-  = lens _gfavedmProgressBytes
-      (\ s a -> s{_gfavedmProgressBytes = a})
-
--- | The time this operation started.
-gfavedmStartTime :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe UTCTime)
-gfavedmStartTime
-  = lens _gfavedmStartTime
-      (\ s a -> s{_gfavedmStartTime = a})
-      . mapping _DateTime
-
--- | Which collection ids are being exported.
-gfavedmCollectionIds :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata [Text]
-gfavedmCollectionIds
-  = lens _gfavedmCollectionIds
-      (\ s a -> s{_gfavedmCollectionIds = a})
-      . _Default
-      . _Coerce
-
--- | The progress, in documents, of this operation.
-gfavedmProgressDocuments :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfavedmProgressDocuments
-  = lens _gfavedmProgressDocuments
-      (\ s a -> s{_gfavedmProgressDocuments = a})
-
--- | The time this operation completed. Will be unset if operation still in
--- progress.
-gfavedmEndTime :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe UTCTime)
-gfavedmEndTime
-  = lens _gfavedmEndTime
-      (\ s a -> s{_gfavedmEndTime = a})
-      . mapping _DateTime
-
--- | The state of the export operation.
-gfavedmOperationState :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe GoogleFirestoreAdminV1ExportDocumentsMetadataOperationState)
-gfavedmOperationState
-  = lens _gfavedmOperationState
-      (\ s a -> s{_gfavedmOperationState = a})
-
--- | Where the entities are being exported to.
-gfavedmOutputURIPrefix :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe Text)
-gfavedmOutputURIPrefix
-  = lens _gfavedmOutputURIPrefix
-      (\ s a -> s{_gfavedmOutputURIPrefix = a})
-
-instance FromJSON
-         GoogleFirestoreAdminV1ExportDocumentsMetadata where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ExportDocumentsMetadata"
-              (\ o ->
-                 GoogleFirestoreAdminV1ExportDocumentsMetadata' <$>
-                   (o .:? "progressBytes") <*> (o .:? "startTime") <*>
-                     (o .:? "collectionIds" .!= mempty)
-                     <*> (o .:? "progressDocuments")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "operationState")
-                     <*> (o .:? "outputUriPrefix"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ExportDocumentsMetadata where
-        toJSON
-          GoogleFirestoreAdminV1ExportDocumentsMetadata'{..}
-          = object
-              (catMaybes
-                 [("progressBytes" .=) <$> _gfavedmProgressBytes,
-                  ("startTime" .=) <$> _gfavedmStartTime,
-                  ("collectionIds" .=) <$> _gfavedmCollectionIds,
-                  ("progressDocuments" .=) <$>
-                    _gfavedmProgressDocuments,
-                  ("endTime" .=) <$> _gfavedmEndTime,
-                  ("operationState" .=) <$> _gfavedmOperationState,
-                  ("outputUriPrefix" .=) <$> _gfavedmOutputURIPrefix])
-
--- | Describes the progress of the operation. Unit of work is generic and
--- must be interpreted based on where Progress is used.
---
--- /See:/ 'googleFirestoreAdminV1Progress' smart constructor.
-data GoogleFirestoreAdminV1Progress = GoogleFirestoreAdminV1Progress'
-    { _gfavpCompletedWork :: !(Maybe (Textual Int64))
-    , _gfavpEstimatedWork :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1Progress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavpCompletedWork'
---
--- * 'gfavpEstimatedWork'
-googleFirestoreAdminV1Progress
-    :: GoogleFirestoreAdminV1Progress
-googleFirestoreAdminV1Progress =
-    GoogleFirestoreAdminV1Progress'
-    { _gfavpCompletedWork = Nothing
-    , _gfavpEstimatedWork = Nothing
-    }
-
--- | The amount of work completed.
-gfavpCompletedWork :: Lens' GoogleFirestoreAdminV1Progress (Maybe Int64)
-gfavpCompletedWork
-  = lens _gfavpCompletedWork
-      (\ s a -> s{_gfavpCompletedWork = a})
-      . mapping _Coerce
-
--- | The amount of work estimated.
-gfavpEstimatedWork :: Lens' GoogleFirestoreAdminV1Progress (Maybe Int64)
-gfavpEstimatedWork
-  = lens _gfavpEstimatedWork
-      (\ s a -> s{_gfavpEstimatedWork = a})
-      . mapping _Coerce
-
-instance FromJSON GoogleFirestoreAdminV1Progress
-         where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1Progress"
-              (\ o ->
-                 GoogleFirestoreAdminV1Progress' <$>
-                   (o .:? "completedWork") <*> (o .:? "estimatedWork"))
-
-instance ToJSON GoogleFirestoreAdminV1Progress where
-        toJSON GoogleFirestoreAdminV1Progress'{..}
-          = object
-              (catMaybes
-                 [("completedWork" .=) <$> _gfavpCompletedWork,
-                  ("estimatedWork" .=) <$> _gfavpEstimatedWork])
-
--- | 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.
---
--- /See:/ 'documentMask' smart constructor.
-newtype DocumentMask = DocumentMask'
-    { _dmFieldPaths :: Maybe [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentMask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmFieldPaths'
-documentMask
-    :: DocumentMask
-documentMask =
-    DocumentMask'
-    { _dmFieldPaths = Nothing
-    }
-
--- | The list of field paths in the mask. See Document.fields for a field
--- path syntax reference.
-dmFieldPaths :: Lens' DocumentMask [Text]
-dmFieldPaths
-  = lens _dmFieldPaths (\ s a -> s{_dmFieldPaths = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DocumentMask where
-        parseJSON
-          = withObject "DocumentMask"
-              (\ o ->
-                 DocumentMask' <$> (o .:? "fieldPaths" .!= mempty))
-
-instance ToJSON DocumentMask where
-        toJSON DocumentMask'{..}
-          = object
-              (catMaybes [("fieldPaths" .=) <$> _dmFieldPaths])
-
--- | A target specified by a query.
---
--- /See:/ 'queryTarget' smart constructor.
-data QueryTarget = QueryTarget'
-    { _qtParent          :: !(Maybe Text)
-    , _qtStructuredQuery :: !(Maybe StructuredQuery)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'QueryTarget' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qtParent'
---
--- * 'qtStructuredQuery'
-queryTarget
-    :: QueryTarget
-queryTarget =
-    QueryTarget'
-    { _qtParent = Nothing
-    , _qtStructuredQuery = Nothing
-    }
-
--- | 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\`
-qtParent :: Lens' QueryTarget (Maybe Text)
-qtParent = lens _qtParent (\ s a -> s{_qtParent = a})
-
--- | A structured query.
-qtStructuredQuery :: Lens' QueryTarget (Maybe StructuredQuery)
-qtStructuredQuery
-  = lens _qtStructuredQuery
-      (\ s a -> s{_qtStructuredQuery = a})
-
-instance FromJSON QueryTarget where
-        parseJSON
-          = withObject "QueryTarget"
-              (\ o ->
-                 QueryTarget' <$>
-                   (o .:? "parent") <*> (o .:? "structuredQuery"))
-
-instance ToJSON QueryTarget where
-        toJSON QueryTarget'{..}
-          = object
-              (catMaybes
-                 [("parent" .=) <$> _qtParent,
-                  ("structuredQuery" .=) <$> _qtStructuredQuery])
-
--- | A message that can hold any of the supported value types.
---
--- /See:/ 'value' smart constructor.
-data Value = Value'
-    { _vGeoPointValue  :: !(Maybe LatLng)
-    , _vBytesValue     :: !(Maybe Bytes)
-    , _vIntegerValue   :: !(Maybe (Textual Int64))
-    , _vTimestampValue :: !(Maybe DateTime')
-    , _vDoubleValue    :: !(Maybe (Textual Double))
-    , _vStringValue    :: !(Maybe Text)
-    , _vBooleanValue   :: !(Maybe Bool)
-    , _vMapValue       :: !(Maybe MapValue)
-    , _vArrayValue     :: !(Maybe ArrayValue)
-    , _vReferenceValue :: !(Maybe Text)
-    , _vNullValue      :: !(Maybe ValueNullValue)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Value' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vGeoPointValue'
---
--- * 'vBytesValue'
---
--- * 'vIntegerValue'
---
--- * 'vTimestampValue'
---
--- * 'vDoubleValue'
---
--- * 'vStringValue'
---
--- * 'vBooleanValue'
---
--- * 'vMapValue'
---
--- * 'vArrayValue'
---
--- * 'vReferenceValue'
---
--- * 'vNullValue'
-value
-    :: Value
-value =
-    Value'
-    { _vGeoPointValue = Nothing
-    , _vBytesValue = Nothing
-    , _vIntegerValue = Nothing
-    , _vTimestampValue = Nothing
-    , _vDoubleValue = Nothing
-    , _vStringValue = Nothing
-    , _vBooleanValue = Nothing
-    , _vMapValue = Nothing
-    , _vArrayValue = Nothing
-    , _vReferenceValue = Nothing
-    , _vNullValue = Nothing
-    }
-
--- | A geo point value representing a point on the surface of Earth.
-vGeoPointValue :: Lens' Value (Maybe LatLng)
-vGeoPointValue
-  = lens _vGeoPointValue
-      (\ s a -> s{_vGeoPointValue = a})
-
--- | A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500
--- bytes are considered by queries.
-vBytesValue :: Lens' Value (Maybe ByteString)
-vBytesValue
-  = lens _vBytesValue (\ s a -> s{_vBytesValue = a}) .
-      mapping _Bytes
-
--- | An integer value.
-vIntegerValue :: Lens' Value (Maybe Int64)
-vIntegerValue
-  = lens _vIntegerValue
-      (\ s a -> s{_vIntegerValue = a})
-      . mapping _Coerce
-
--- | A timestamp value. Precise only to microseconds. When stored, any
--- additional precision is rounded down.
-vTimestampValue :: Lens' Value (Maybe UTCTime)
-vTimestampValue
-  = lens _vTimestampValue
-      (\ s a -> s{_vTimestampValue = a})
-      . mapping _DateTime
-
--- | A double value.
-vDoubleValue :: Lens' Value (Maybe Double)
-vDoubleValue
-  = lens _vDoubleValue (\ s a -> s{_vDoubleValue = a})
-      . mapping _Coerce
-
--- | 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.
-vStringValue :: Lens' Value (Maybe Text)
-vStringValue
-  = lens _vStringValue (\ s a -> s{_vStringValue = a})
-
--- | A boolean value.
-vBooleanValue :: Lens' Value (Maybe Bool)
-vBooleanValue
-  = lens _vBooleanValue
-      (\ s a -> s{_vBooleanValue = a})
-
--- | A map value.
-vMapValue :: Lens' Value (Maybe MapValue)
-vMapValue
-  = lens _vMapValue (\ s a -> s{_vMapValue = a})
-
--- | An array value. Cannot directly contain another array value, though can
--- contain an map which contains another array.
-vArrayValue :: Lens' Value (Maybe ArrayValue)
-vArrayValue
-  = lens _vArrayValue (\ s a -> s{_vArrayValue = a})
-
--- | A reference to a document. For example:
--- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
-vReferenceValue :: Lens' Value (Maybe Text)
-vReferenceValue
-  = lens _vReferenceValue
-      (\ s a -> s{_vReferenceValue = a})
-
--- | A null value.
-vNullValue :: Lens' Value (Maybe ValueNullValue)
-vNullValue
-  = lens _vNullValue (\ s a -> s{_vNullValue = a})
-
-instance FromJSON Value where
-        parseJSON
-          = withObject "Value"
-              (\ o ->
-                 Value' <$>
-                   (o .:? "geoPointValue") <*> (o .:? "bytesValue") <*>
-                     (o .:? "integerValue")
-                     <*> (o .:? "timestampValue")
-                     <*> (o .:? "doubleValue")
-                     <*> (o .:? "stringValue")
-                     <*> (o .:? "booleanValue")
-                     <*> (o .:? "mapValue")
-                     <*> (o .:? "arrayValue")
-                     <*> (o .:? "referenceValue")
-                     <*> (o .:? "nullValue"))
-
-instance ToJSON Value where
-        toJSON Value'{..}
-          = object
-              (catMaybes
-                 [("geoPointValue" .=) <$> _vGeoPointValue,
-                  ("bytesValue" .=) <$> _vBytesValue,
-                  ("integerValue" .=) <$> _vIntegerValue,
-                  ("timestampValue" .=) <$> _vTimestampValue,
-                  ("doubleValue" .=) <$> _vDoubleValue,
-                  ("stringValue" .=) <$> _vStringValue,
-                  ("booleanValue" .=) <$> _vBooleanValue,
-                  ("mapValue" .=) <$> _vMapValue,
-                  ("arrayValue" .=) <$> _vArrayValue,
-                  ("referenceValue" .=) <$> _vReferenceValue,
-                  ("nullValue" .=) <$> _vNullValue])
-
---
--- /See:/ 'statusDetailsItem' smart constructor.
-newtype StatusDetailsItem = StatusDetailsItem'
-    { _sdiAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdiAddtional'
-statusDetailsItem
-    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
-    -> StatusDetailsItem
-statusDetailsItem pSdiAddtional_ =
-    StatusDetailsItem'
-    { _sdiAddtional = _Coerce # pSdiAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
-sdiAddtional
-  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
-      . _Coerce
-
-instance FromJSON StatusDetailsItem where
-        parseJSON
-          = withObject "StatusDetailsItem"
-              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
-
-instance ToJSON StatusDetailsItem where
-        toJSON = toJSON . _sdiAddtional
-
--- | A transformation of a document.
---
--- /See:/ 'documentTransform' smart constructor.
-data DocumentTransform = DocumentTransform'
-    { _dtDocument        :: !(Maybe Text)
-    , _dtFieldTransforms :: !(Maybe [FieldTransform])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentTransform' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtDocument'
---
--- * 'dtFieldTransforms'
-documentTransform
-    :: DocumentTransform
-documentTransform =
-    DocumentTransform'
-    { _dtDocument = Nothing
-    , _dtFieldTransforms = Nothing
-    }
-
--- | The name of the document to transform.
-dtDocument :: Lens' DocumentTransform (Maybe Text)
-dtDocument
-  = lens _dtDocument (\ s a -> s{_dtDocument = a})
-
--- | The list of transformations to apply to the fields of the document, in
--- order. This must not be empty.
-dtFieldTransforms :: Lens' DocumentTransform [FieldTransform]
-dtFieldTransforms
-  = lens _dtFieldTransforms
-      (\ s a -> s{_dtFieldTransforms = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DocumentTransform where
-        parseJSON
-          = withObject "DocumentTransform"
-              (\ o ->
-                 DocumentTransform' <$>
-                   (o .:? "document") <*>
-                     (o .:? "fieldTransforms" .!= mempty))
-
-instance ToJSON DocumentTransform where
-        toJSON DocumentTransform'{..}
-          = object
-              (catMaybes
-                 [("document" .=) <$> _dtDocument,
-                  ("fieldTransforms" .=) <$> _dtFieldTransforms])
-
--- | A Firestore query.
---
--- /See:/ 'structuredQuery' smart constructor.
-data StructuredQuery = StructuredQuery'
-    { _sqWhere   :: !(Maybe Filter)
-    , _sqOrderBy :: !(Maybe [Order])
-    , _sqStartAt :: !(Maybe Cursor)
-    , _sqOffSet  :: !(Maybe (Textual Int32))
-    , _sqFrom    :: !(Maybe [CollectionSelector])
-    , _sqEndAt   :: !(Maybe Cursor)
-    , _sqLimit   :: !(Maybe (Textual Int32))
-    , _sqSelect  :: !(Maybe Projection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StructuredQuery' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sqWhere'
---
--- * 'sqOrderBy'
---
--- * 'sqStartAt'
---
--- * 'sqOffSet'
---
--- * 'sqFrom'
---
--- * 'sqEndAt'
---
--- * 'sqLimit'
---
--- * 'sqSelect'
-structuredQuery
-    :: StructuredQuery
-structuredQuery =
-    StructuredQuery'
-    { _sqWhere = Nothing
-    , _sqOrderBy = Nothing
-    , _sqStartAt = Nothing
-    , _sqOffSet = Nothing
-    , _sqFrom = Nothing
-    , _sqEndAt = Nothing
-    , _sqLimit = Nothing
-    , _sqSelect = Nothing
-    }
-
--- | The filter to apply.
-sqWhere :: Lens' StructuredQuery (Maybe Filter)
-sqWhere = lens _sqWhere (\ s a -> s{_sqWhere = a})
-
--- | 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__\`
-sqOrderBy :: Lens' StructuredQuery [Order]
-sqOrderBy
-  = lens _sqOrderBy (\ s a -> s{_sqOrderBy = a}) .
-      _Default
-      . _Coerce
-
--- | A starting point for the query results.
-sqStartAt :: Lens' StructuredQuery (Maybe Cursor)
-sqStartAt
-  = lens _sqStartAt (\ s a -> s{_sqStartAt = a})
-
--- | The number of results to skip. Applies before limit, but after all other
--- constraints. Must be >= 0 if specified.
-sqOffSet :: Lens' StructuredQuery (Maybe Int32)
-sqOffSet
-  = lens _sqOffSet (\ s a -> s{_sqOffSet = a}) .
-      mapping _Coerce
-
--- | The collections to query.
-sqFrom :: Lens' StructuredQuery [CollectionSelector]
-sqFrom
-  = lens _sqFrom (\ s a -> s{_sqFrom = a}) . _Default .
-      _Coerce
-
--- | A end point for the query results.
-sqEndAt :: Lens' StructuredQuery (Maybe Cursor)
-sqEndAt = lens _sqEndAt (\ s a -> s{_sqEndAt = a})
-
--- | The maximum number of results to return. Applies after all other
--- constraints. Must be >= 0 if specified.
-sqLimit :: Lens' StructuredQuery (Maybe Int32)
-sqLimit
-  = lens _sqLimit (\ s a -> s{_sqLimit = a}) .
-      mapping _Coerce
-
--- | The projection to return.
-sqSelect :: Lens' StructuredQuery (Maybe Projection)
-sqSelect = lens _sqSelect (\ s a -> s{_sqSelect = a})
-
-instance FromJSON StructuredQuery where
-        parseJSON
-          = withObject "StructuredQuery"
-              (\ o ->
-                 StructuredQuery' <$>
-                   (o .:? "where") <*> (o .:? "orderBy" .!= mempty) <*>
-                     (o .:? "startAt")
-                     <*> (o .:? "offset")
-                     <*> (o .:? "from" .!= mempty)
-                     <*> (o .:? "endAt")
-                     <*> (o .:? "limit")
-                     <*> (o .:? "select"))
-
-instance ToJSON StructuredQuery where
-        toJSON StructuredQuery'{..}
-          = object
-              (catMaybes
-                 [("where" .=) <$> _sqWhere,
-                  ("orderBy" .=) <$> _sqOrderBy,
-                  ("startAt" .=) <$> _sqStartAt,
-                  ("offset" .=) <$> _sqOffSet, ("from" .=) <$> _sqFrom,
-                  ("endAt" .=) <$> _sqEndAt, ("limit" .=) <$> _sqLimit,
-                  ("select" .=) <$> _sqSelect])
-
--- | A digest of all the documents that match a given target.
---
--- /See:/ 'existenceFilter' smart constructor.
-data ExistenceFilter = ExistenceFilter'
-    { _efTargetId :: !(Maybe (Textual Int32))
-    , _efCount    :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ExistenceFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'efTargetId'
---
--- * 'efCount'
-existenceFilter
-    :: ExistenceFilter
-existenceFilter =
-    ExistenceFilter'
-    { _efTargetId = Nothing
-    , _efCount = Nothing
-    }
-
--- | The target ID to which this filter applies.
-efTargetId :: Lens' ExistenceFilter (Maybe Int32)
-efTargetId
-  = lens _efTargetId (\ s a -> s{_efTargetId = a}) .
-      mapping _Coerce
-
--- | 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.
-efCount :: Lens' ExistenceFilter (Maybe Int32)
-efCount
-  = lens _efCount (\ s a -> s{_efCount = a}) .
-      mapping _Coerce
-
-instance FromJSON ExistenceFilter where
-        parseJSON
-          = withObject "ExistenceFilter"
-              (\ o ->
-                 ExistenceFilter' <$>
-                   (o .:? "targetId") <*> (o .:? "count"))
-
-instance ToJSON ExistenceFilter where
-        toJSON ExistenceFilter'{..}
-          = object
-              (catMaybes
-                 [("targetId" .=) <$> _efTargetId,
-                  ("count" .=) <$> _efCount])
-
--- | The response for FirestoreAdmin.ListFields.
---
--- /See:/ 'googleFirestoreAdminV1ListFieldsResponse' smart constructor.
-data GoogleFirestoreAdminV1ListFieldsResponse = GoogleFirestoreAdminV1ListFieldsResponse'
-    { _gfavlfrNextPageToken :: !(Maybe Text)
-    , _gfavlfrFields        :: !(Maybe [GoogleFirestoreAdminV1Field])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ListFieldsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavlfrNextPageToken'
---
--- * 'gfavlfrFields'
-googleFirestoreAdminV1ListFieldsResponse
-    :: GoogleFirestoreAdminV1ListFieldsResponse
-googleFirestoreAdminV1ListFieldsResponse =
-    GoogleFirestoreAdminV1ListFieldsResponse'
-    { _gfavlfrNextPageToken = Nothing
-    , _gfavlfrFields = Nothing
-    }
-
--- | A page token that may be used to request another page of results. If
--- blank, this is the last page.
-gfavlfrNextPageToken :: Lens' GoogleFirestoreAdminV1ListFieldsResponse (Maybe Text)
-gfavlfrNextPageToken
-  = lens _gfavlfrNextPageToken
-      (\ s a -> s{_gfavlfrNextPageToken = a})
-
--- | The requested fields.
-gfavlfrFields :: Lens' GoogleFirestoreAdminV1ListFieldsResponse [GoogleFirestoreAdminV1Field]
-gfavlfrFields
-  = lens _gfavlfrFields
-      (\ s a -> s{_gfavlfrFields = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         GoogleFirestoreAdminV1ListFieldsResponse where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ListFieldsResponse"
-              (\ o ->
-                 GoogleFirestoreAdminV1ListFieldsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "fields" .!= mempty))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ListFieldsResponse where
-        toJSON GoogleFirestoreAdminV1ListFieldsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _gfavlfrNextPageToken,
-                  ("fields" .=) <$> _gfavlfrFields])
-
--- | The request for FirestoreAdmin.ImportDocuments.
---
--- /See:/ 'googleFirestoreAdminV1ImportDocumentsRequest' smart constructor.
-data GoogleFirestoreAdminV1ImportDocumentsRequest = GoogleFirestoreAdminV1ImportDocumentsRequest'
-    { _gfavidrInputURIPrefix :: !(Maybe Text)
-    , _gfavidrCollectionIds  :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ImportDocumentsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavidrInputURIPrefix'
---
--- * 'gfavidrCollectionIds'
-googleFirestoreAdminV1ImportDocumentsRequest
-    :: GoogleFirestoreAdminV1ImportDocumentsRequest
-googleFirestoreAdminV1ImportDocumentsRequest =
-    GoogleFirestoreAdminV1ImportDocumentsRequest'
-    { _gfavidrInputURIPrefix = Nothing
-    , _gfavidrCollectionIds = Nothing
-    }
-
--- | 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.
-gfavidrInputURIPrefix :: Lens' GoogleFirestoreAdminV1ImportDocumentsRequest (Maybe Text)
-gfavidrInputURIPrefix
-  = lens _gfavidrInputURIPrefix
-      (\ s a -> s{_gfavidrInputURIPrefix = a})
-
--- | Which collection ids to import. Unspecified means all collections
--- included in the import.
-gfavidrCollectionIds :: Lens' GoogleFirestoreAdminV1ImportDocumentsRequest [Text]
-gfavidrCollectionIds
-  = lens _gfavidrCollectionIds
-      (\ s a -> s{_gfavidrCollectionIds = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         GoogleFirestoreAdminV1ImportDocumentsRequest where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ImportDocumentsRequest"
-              (\ o ->
-                 GoogleFirestoreAdminV1ImportDocumentsRequest' <$>
-                   (o .:? "inputUriPrefix") <*>
-                     (o .:? "collectionIds" .!= mempty))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ImportDocumentsRequest where
-        toJSON
-          GoogleFirestoreAdminV1ImportDocumentsRequest'{..}
-          = object
-              (catMaybes
-                 [("inputUriPrefix" .=) <$> _gfavidrInputURIPrefix,
-                  ("collectionIds" .=) <$> _gfavidrCollectionIds])
-
--- | The metadata message for google.cloud.location.Location.metadata.
---
--- /See:/ 'googleFirestoreAdminV1LocationMetadata' smart constructor.
-data GoogleFirestoreAdminV1LocationMetadata =
-    GoogleFirestoreAdminV1LocationMetadata'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1LocationMetadata' with the minimum fields required to make a request.
---
-googleFirestoreAdminV1LocationMetadata
-    :: GoogleFirestoreAdminV1LocationMetadata
-googleFirestoreAdminV1LocationMetadata =
-    GoogleFirestoreAdminV1LocationMetadata'
-
-instance FromJSON
-         GoogleFirestoreAdminV1LocationMetadata where
-        parseJSON
-          = withObject "GoogleFirestoreAdminV1LocationMetadata"
-              (\ o -> pure GoogleFirestoreAdminV1LocationMetadata')
-
-instance ToJSON
-         GoogleFirestoreAdminV1LocationMetadata where
-        toJSON = const emptyObject
-
--- | The request message for Operations.CancelOperation.
---
--- /See:/ 'googleLongrunningCancelOperationRequest' smart constructor.
-data GoogleLongrunningCancelOperationRequest =
-    GoogleLongrunningCancelOperationRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleLongrunningCancelOperationRequest' with the minimum fields required to make a request.
---
-googleLongrunningCancelOperationRequest
-    :: GoogleLongrunningCancelOperationRequest
-googleLongrunningCancelOperationRequest =
-    GoogleLongrunningCancelOperationRequest'
-
-instance FromJSON
-         GoogleLongrunningCancelOperationRequest where
-        parseJSON
-          = withObject
-              "GoogleLongrunningCancelOperationRequest"
-              (\ o ->
-                 pure GoogleLongrunningCancelOperationRequest')
-
-instance ToJSON
-         GoogleLongrunningCancelOperationRequest where
-        toJSON = const emptyObject
-
--- | The response from Firestore.ListCollectionIds.
---
--- /See:/ 'listCollectionIdsResponse' smart constructor.
-data ListCollectionIdsResponse = ListCollectionIdsResponse'
-    { _lcirNextPageToken :: !(Maybe Text)
-    , _lcirCollectionIds :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListCollectionIdsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcirNextPageToken'
---
--- * 'lcirCollectionIds'
-listCollectionIdsResponse
-    :: ListCollectionIdsResponse
-listCollectionIdsResponse =
-    ListCollectionIdsResponse'
-    { _lcirNextPageToken = Nothing
-    , _lcirCollectionIds = Nothing
-    }
-
--- | A page token that may be used to continue the list.
-lcirNextPageToken :: Lens' ListCollectionIdsResponse (Maybe Text)
-lcirNextPageToken
-  = lens _lcirNextPageToken
-      (\ s a -> s{_lcirNextPageToken = a})
-
--- | The collection ids.
-lcirCollectionIds :: Lens' ListCollectionIdsResponse [Text]
-lcirCollectionIds
-  = lens _lcirCollectionIds
-      (\ s a -> s{_lcirCollectionIds = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListCollectionIdsResponse where
-        parseJSON
-          = withObject "ListCollectionIdsResponse"
-              (\ o ->
-                 ListCollectionIdsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "collectionIds" .!= mempty))
-
-instance ToJSON ListCollectionIdsResponse where
-        toJSON ListCollectionIdsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lcirNextPageToken,
-                  ("collectionIds" .=) <$> _lcirCollectionIds])
-
--- | A reference to a field, such as \`max(messages.time) as max_time\`.
---
--- /See:/ 'fieldReference' smart constructor.
-newtype FieldReference = FieldReference'
-    { _frFieldPath :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FieldReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'frFieldPath'
-fieldReference
-    :: FieldReference
-fieldReference =
-    FieldReference'
-    { _frFieldPath = Nothing
-    }
-
-frFieldPath :: Lens' FieldReference (Maybe Text)
-frFieldPath
-  = lens _frFieldPath (\ s a -> s{_frFieldPath = a})
-
-instance FromJSON FieldReference where
-        parseJSON
-          = withObject "FieldReference"
-              (\ o -> FieldReference' <$> (o .:? "fieldPath"))
-
-instance ToJSON FieldReference where
-        toJSON FieldReference'{..}
-          = object
-              (catMaybes [("fieldPath" .=) <$> _frFieldPath])
-
--- | 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.
---
--- /See:/ 'documentRemove' smart constructor.
-data DocumentRemove = DocumentRemove'
-    { _drReadTime         :: !(Maybe DateTime')
-    , _drDocument         :: !(Maybe Text)
-    , _drRemovedTargetIds :: !(Maybe [Textual Int32])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentRemove' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drReadTime'
---
--- * 'drDocument'
---
--- * 'drRemovedTargetIds'
-documentRemove
-    :: DocumentRemove
-documentRemove =
-    DocumentRemove'
-    { _drReadTime = Nothing
-    , _drDocument = Nothing
-    , _drRemovedTargetIds = Nothing
-    }
-
--- | The read timestamp at which the remove was observed. Greater or equal to
--- the \`commit_time\` of the change\/delete\/remove.
-drReadTime :: Lens' DocumentRemove (Maybe UTCTime)
-drReadTime
-  = lens _drReadTime (\ s a -> s{_drReadTime = a}) .
-      mapping _DateTime
-
--- | The resource name of the Document that has gone out of view.
-drDocument :: Lens' DocumentRemove (Maybe Text)
-drDocument
-  = lens _drDocument (\ s a -> s{_drDocument = a})
-
--- | A set of target IDs for targets that previously matched this document.
-drRemovedTargetIds :: Lens' DocumentRemove [Int32]
-drRemovedTargetIds
-  = lens _drRemovedTargetIds
-      (\ s a -> s{_drRemovedTargetIds = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DocumentRemove where
-        parseJSON
-          = withObject "DocumentRemove"
-              (\ o ->
-                 DocumentRemove' <$>
-                   (o .:? "readTime") <*> (o .:? "document") <*>
-                     (o .:? "removedTargetIds" .!= mempty))
-
-instance ToJSON DocumentRemove where
-        toJSON DocumentRemove'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _drReadTime,
-                  ("document" .=) <$> _drDocument,
-                  ("removedTargetIds" .=) <$> _drRemovedTargetIds])
-
--- | 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.
---
--- /See:/ 'documentChange' smart constructor.
-data DocumentChange = DocumentChange'
-    { _dcDocument         :: !(Maybe Document)
-    , _dcTargetIds        :: !(Maybe [Textual Int32])
-    , _dcRemovedTargetIds :: !(Maybe [Textual Int32])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentChange' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcDocument'
---
--- * 'dcTargetIds'
---
--- * 'dcRemovedTargetIds'
-documentChange
-    :: DocumentChange
-documentChange =
-    DocumentChange'
-    { _dcDocument = Nothing
-    , _dcTargetIds = Nothing
-    , _dcRemovedTargetIds = Nothing
-    }
-
--- | The new state of the Document. If \`mask\` is set, contains only fields
--- that were updated or added.
-dcDocument :: Lens' DocumentChange (Maybe Document)
-dcDocument
-  = lens _dcDocument (\ s a -> s{_dcDocument = a})
-
--- | A set of target IDs of targets that match this document.
-dcTargetIds :: Lens' DocumentChange [Int32]
-dcTargetIds
-  = lens _dcTargetIds (\ s a -> s{_dcTargetIds = a}) .
-      _Default
-      . _Coerce
-
--- | A set of target IDs for targets that no longer match this document.
-dcRemovedTargetIds :: Lens' DocumentChange [Int32]
-dcRemovedTargetIds
-  = lens _dcRemovedTargetIds
-      (\ s a -> s{_dcRemovedTargetIds = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DocumentChange where
-        parseJSON
-          = withObject "DocumentChange"
-              (\ o ->
-                 DocumentChange' <$>
-                   (o .:? "document") <*> (o .:? "targetIds" .!= mempty)
-                     <*> (o .:? "removedTargetIds" .!= mempty))
-
-instance ToJSON DocumentChange where
-        toJSON DocumentChange'{..}
-          = object
-              (catMaybes
-                 [("document" .=) <$> _dcDocument,
-                  ("targetIds" .=) <$> _dcTargetIds,
-                  ("removedTargetIds" .=) <$> _dcRemovedTargetIds])
-
--- | Metadata for google.longrunning.Operation results from
--- FirestoreAdmin.UpdateField.
---
--- /See:/ 'googleFirestoreAdminV1FieldOperationMetadata' smart constructor.
-data GoogleFirestoreAdminV1FieldOperationMetadata = GoogleFirestoreAdminV1FieldOperationMetadata'
-    { _gfavfomProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfavfomState             :: !(Maybe GoogleFirestoreAdminV1FieldOperationMetadataState)
-    , _gfavfomField             :: !(Maybe Text)
-    , _gfavfomStartTime         :: !(Maybe DateTime')
-    , _gfavfomProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfavfomIndexConfigDeltas :: !(Maybe [GoogleFirestoreAdminV1IndexConfigDelta])
-    , _gfavfomEndTime           :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1FieldOperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavfomProgressBytes'
---
--- * 'gfavfomState'
---
--- * 'gfavfomField'
---
--- * 'gfavfomStartTime'
---
--- * 'gfavfomProgressDocuments'
---
--- * 'gfavfomIndexConfigDeltas'
---
--- * 'gfavfomEndTime'
-googleFirestoreAdminV1FieldOperationMetadata
-    :: GoogleFirestoreAdminV1FieldOperationMetadata
-googleFirestoreAdminV1FieldOperationMetadata =
-    GoogleFirestoreAdminV1FieldOperationMetadata'
-    { _gfavfomProgressBytes = Nothing
-    , _gfavfomState = Nothing
-    , _gfavfomField = Nothing
-    , _gfavfomStartTime = Nothing
-    , _gfavfomProgressDocuments = Nothing
-    , _gfavfomIndexConfigDeltas = Nothing
-    , _gfavfomEndTime = Nothing
-    }
-
--- | The progress, in bytes, of this operation.
-gfavfomProgressBytes :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfavfomProgressBytes
-  = lens _gfavfomProgressBytes
-      (\ s a -> s{_gfavfomProgressBytes = a})
-
--- | The state of the operation.
-gfavfomState :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe GoogleFirestoreAdminV1FieldOperationMetadataState)
-gfavfomState
-  = lens _gfavfomState (\ s a -> s{_gfavfomState = a})
-
--- | The field resource that this operation is acting on. For example:
--- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\/fields\/{field_path}\`
-gfavfomField :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe Text)
-gfavfomField
-  = lens _gfavfomField (\ s a -> s{_gfavfomField = a})
-
--- | The time this operation started.
-gfavfomStartTime :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe UTCTime)
-gfavfomStartTime
-  = lens _gfavfomStartTime
-      (\ s a -> s{_gfavfomStartTime = a})
-      . mapping _DateTime
-
--- | The progress, in documents, of this operation.
-gfavfomProgressDocuments :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfavfomProgressDocuments
-  = lens _gfavfomProgressDocuments
-      (\ s a -> s{_gfavfomProgressDocuments = a})
-
--- | A list of IndexConfigDelta, which describe the intent of this operation.
-gfavfomIndexConfigDeltas :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata [GoogleFirestoreAdminV1IndexConfigDelta]
-gfavfomIndexConfigDeltas
-  = lens _gfavfomIndexConfigDeltas
-      (\ s a -> s{_gfavfomIndexConfigDeltas = a})
-      . _Default
-      . _Coerce
-
--- | The time this operation completed. Will be unset if operation still in
--- progress.
-gfavfomEndTime :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe UTCTime)
-gfavfomEndTime
-  = lens _gfavfomEndTime
-      (\ s a -> s{_gfavfomEndTime = a})
-      . mapping _DateTime
-
-instance FromJSON
-         GoogleFirestoreAdminV1FieldOperationMetadata where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1FieldOperationMetadata"
-              (\ o ->
-                 GoogleFirestoreAdminV1FieldOperationMetadata' <$>
-                   (o .:? "progressBytes") <*> (o .:? "state") <*>
-                     (o .:? "field")
-                     <*> (o .:? "startTime")
-                     <*> (o .:? "progressDocuments")
-                     <*> (o .:? "indexConfigDeltas" .!= mempty)
-                     <*> (o .:? "endTime"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1FieldOperationMetadata where
-        toJSON
-          GoogleFirestoreAdminV1FieldOperationMetadata'{..}
-          = object
-              (catMaybes
-                 [("progressBytes" .=) <$> _gfavfomProgressBytes,
-                  ("state" .=) <$> _gfavfomState,
-                  ("field" .=) <$> _gfavfomField,
-                  ("startTime" .=) <$> _gfavfomStartTime,
-                  ("progressDocuments" .=) <$>
-                    _gfavfomProgressDocuments,
-                  ("indexConfigDeltas" .=) <$>
-                    _gfavfomIndexConfigDeltas,
-                  ("endTime" .=) <$> _gfavfomEndTime])
-
--- | The response for FirestoreAdmin.ListIndexes.
---
--- /See:/ 'googleFirestoreAdminV1ListIndexesResponse' smart constructor.
-data GoogleFirestoreAdminV1ListIndexesResponse = GoogleFirestoreAdminV1ListIndexesResponse'
-    { _gfavlirNextPageToken :: !(Maybe Text)
-    , _gfavlirIndexes       :: !(Maybe [GoogleFirestoreAdminV1Index])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ListIndexesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfavlirNextPageToken'
---
--- * 'gfavlirIndexes'
-googleFirestoreAdminV1ListIndexesResponse
-    :: GoogleFirestoreAdminV1ListIndexesResponse
-googleFirestoreAdminV1ListIndexesResponse =
-    GoogleFirestoreAdminV1ListIndexesResponse'
-    { _gfavlirNextPageToken = Nothing
-    , _gfavlirIndexes = Nothing
-    }
-
--- | A page token that may be used to request another page of results. If
--- blank, this is the last page.
-gfavlirNextPageToken :: Lens' GoogleFirestoreAdminV1ListIndexesResponse (Maybe Text)
-gfavlirNextPageToken
-  = lens _gfavlirNextPageToken
-      (\ s a -> s{_gfavlirNextPageToken = a})
-
--- | The requested indexes.
-gfavlirIndexes :: Lens' GoogleFirestoreAdminV1ListIndexesResponse [GoogleFirestoreAdminV1Index]
-gfavlirIndexes
-  = lens _gfavlirIndexes
-      (\ s a -> s{_gfavlirIndexes = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         GoogleFirestoreAdminV1ListIndexesResponse where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ListIndexesResponse"
-              (\ o ->
-                 GoogleFirestoreAdminV1ListIndexesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "indexes" .!= mempty))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ListIndexesResponse where
-        toJSON GoogleFirestoreAdminV1ListIndexesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _gfavlirNextPageToken,
-                  ("indexes" .=) <$> _gfavlirIndexes])
-
--- | A map value.
---
--- /See:/ 'mapValue' smart constructor.
-newtype MapValue = MapValue'
-    { _mvFields :: Maybe MapValueFields
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MapValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mvFields'
-mapValue
-    :: MapValue
-mapValue =
-    MapValue'
-    { _mvFields = Nothing
-    }
-
--- | 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.
-mvFields :: Lens' MapValue (Maybe MapValueFields)
-mvFields = lens _mvFields (\ s a -> s{_mvFields = a})
-
-instance FromJSON MapValue where
-        parseJSON
-          = withObject "MapValue"
-              (\ o -> MapValue' <$> (o .:? "fields"))
-
-instance ToJSON MapValue where
-        toJSON MapValue'{..}
-          = object (catMaybes [("fields" .=) <$> _mvFields])
-
--- | The request for Firestore.BatchGetDocuments.
---
--- /See:/ 'batchGetDocumentsRequest' smart constructor.
-data BatchGetDocumentsRequest = BatchGetDocumentsRequest'
-    { _bReadTime       :: !(Maybe DateTime')
-    , _bNewTransaction :: !(Maybe TransactionOptions)
-    , _bTransaction    :: !(Maybe Bytes)
-    , _bDocuments      :: !(Maybe [Text])
-    , _bMask           :: !(Maybe DocumentMask)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BatchGetDocumentsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bReadTime'
---
--- * 'bNewTransaction'
---
--- * 'bTransaction'
---
--- * 'bDocuments'
---
--- * 'bMask'
-batchGetDocumentsRequest
-    :: BatchGetDocumentsRequest
-batchGetDocumentsRequest =
-    BatchGetDocumentsRequest'
-    { _bReadTime = Nothing
-    , _bNewTransaction = Nothing
-    , _bTransaction = Nothing
-    , _bDocuments = Nothing
-    , _bMask = Nothing
-    }
-
--- | Reads documents as they were at the given time. This may not be older
--- than 60 seconds.
-bReadTime :: Lens' BatchGetDocumentsRequest (Maybe UTCTime)
-bReadTime
-  = lens _bReadTime (\ s a -> s{_bReadTime = a}) .
-      mapping _DateTime
-
--- | 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.
-bNewTransaction :: Lens' BatchGetDocumentsRequest (Maybe TransactionOptions)
-bNewTransaction
-  = lens _bNewTransaction
-      (\ s a -> s{_bNewTransaction = a})
-
--- | Reads documents in a transaction.
-bTransaction :: Lens' BatchGetDocumentsRequest (Maybe ByteString)
-bTransaction
-  = lens _bTransaction (\ s a -> s{_bTransaction = a})
-      . mapping _Bytes
-
--- | 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.
-bDocuments :: Lens' BatchGetDocumentsRequest [Text]
-bDocuments
-  = lens _bDocuments (\ s a -> s{_bDocuments = a}) .
-      _Default
-      . _Coerce
-
--- | 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.
-bMask :: Lens' BatchGetDocumentsRequest (Maybe DocumentMask)
-bMask = lens _bMask (\ s a -> s{_bMask = a})
-
-instance FromJSON BatchGetDocumentsRequest where
-        parseJSON
-          = withObject "BatchGetDocumentsRequest"
-              (\ o ->
-                 BatchGetDocumentsRequest' <$>
-                   (o .:? "readTime") <*> (o .:? "newTransaction") <*>
-                     (o .:? "transaction")
-                     <*> (o .:? "documents" .!= mempty)
-                     <*> (o .:? "mask"))
-
-instance ToJSON BatchGetDocumentsRequest where
-        toJSON BatchGetDocumentsRequest'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _bReadTime,
-                  ("newTransaction" .=) <$> _bNewTransaction,
-                  ("transaction" .=) <$> _bTransaction,
-                  ("documents" .=) <$> _bDocuments,
-                  ("mask" .=) <$> _bMask])
-
--- | A Firestore document. Must not exceed 1 MiB - 4 bytes.
---
--- /See:/ 'document' smart constructor.
-data Document = Document'
-    { _dUpdateTime :: !(Maybe DateTime')
-    , _dName       :: !(Maybe Text)
-    , _dCreateTime :: !(Maybe DateTime')
-    , _dFields     :: !(Maybe DocumentFields)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Document' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dUpdateTime'
---
--- * 'dName'
---
--- * 'dCreateTime'
---
--- * 'dFields'
-document
-    :: Document
-document =
-    Document'
-    { _dUpdateTime = Nothing
-    , _dName = Nothing
-    , _dCreateTime = Nothing
-    , _dFields = Nothing
-    }
-
--- | 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.
-dUpdateTime :: Lens' Document (Maybe UTCTime)
-dUpdateTime
-  = lens _dUpdateTime (\ s a -> s{_dUpdateTime = a}) .
-      mapping _DateTime
-
--- | The resource name of the document, for example
--- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
-dName :: Lens' Document (Maybe Text)
-dName = lens _dName (\ s a -> s{_dName = a})
-
--- | 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.
-dCreateTime :: Lens' Document (Maybe UTCTime)
-dCreateTime
-  = lens _dCreateTime (\ s a -> s{_dCreateTime = a}) .
-      mapping _DateTime
-
--- | 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 \`\`.
-dFields :: Lens' Document (Maybe DocumentFields)
-dFields = lens _dFields (\ s a -> s{_dFields = a})
-
-instance FromJSON Document where
-        parseJSON
-          = withObject "Document"
-              (\ o ->
-                 Document' <$>
-                   (o .:? "updateTime") <*> (o .:? "name") <*>
-                     (o .:? "createTime")
-                     <*> (o .:? "fields"))
-
-instance ToJSON Document where
-        toJSON Document'{..}
-          = object
-              (catMaybes
-                 [("updateTime" .=) <$> _dUpdateTime,
-                  ("name" .=) <$> _dName,
-                  ("createTime" .=) <$> _dCreateTime,
-                  ("fields" .=) <$> _dFields])
-
--- | An array value.
---
--- /See:/ 'arrayValue' smart constructor.
-newtype ArrayValue = ArrayValue'
-    { _avValues :: Maybe [Value]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ArrayValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'avValues'
-arrayValue
-    :: ArrayValue
-arrayValue =
-    ArrayValue'
-    { _avValues = Nothing
-    }
-
--- | Values in the array.
-avValues :: Lens' ArrayValue [Value]
-avValues
-  = lens _avValues (\ s a -> s{_avValues = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ArrayValue where
-        parseJSON
-          = withObject "ArrayValue"
-              (\ o -> ArrayValue' <$> (o .:? "values" .!= mempty))
-
-instance ToJSON ArrayValue where
-        toJSON ArrayValue'{..}
-          = object (catMaybes [("values" .=) <$> _avValues])
-
--- | The response for Firestore.Commit.
---
--- /See:/ 'commitResponse' smart constructor.
-data CommitResponse = CommitResponse'
-    { _crCommitTime   :: !(Maybe DateTime')
-    , _crWriteResults :: !(Maybe [WriteResult])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommitResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crCommitTime'
---
--- * 'crWriteResults'
-commitResponse
-    :: CommitResponse
-commitResponse =
-    CommitResponse'
-    { _crCommitTime = Nothing
-    , _crWriteResults = Nothing
-    }
-
--- | The time at which the commit occurred.
-crCommitTime :: Lens' CommitResponse (Maybe UTCTime)
-crCommitTime
-  = lens _crCommitTime (\ s a -> s{_crCommitTime = a})
-      . mapping _DateTime
-
--- | The result of applying the writes. This i-th write result corresponds to
--- the i-th write in the request.
-crWriteResults :: Lens' CommitResponse [WriteResult]
-crWriteResults
-  = lens _crWriteResults
-      (\ s a -> s{_crWriteResults = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON CommitResponse where
-        parseJSON
-          = withObject "CommitResponse"
-              (\ o ->
-                 CommitResponse' <$>
-                   (o .:? "commitTime") <*>
-                     (o .:? "writeResults" .!= mempty))
-
-instance ToJSON CommitResponse where
-        toJSON CommitResponse'{..}
-          = object
-              (catMaybes
-                 [("commitTime" .=) <$> _crCommitTime,
-                  ("writeResults" .=) <$> _crWriteResults])
-
--- | The response for Firestore.Listen.
---
--- /See:/ 'listenResponse' smart constructor.
-data ListenResponse = ListenResponse'
-    { _lrTargetChange   :: !(Maybe TargetChange)
-    , _lrDocumentRemove :: !(Maybe DocumentRemove)
-    , _lrDocumentChange :: !(Maybe DocumentChange)
-    , _lrFilter         :: !(Maybe ExistenceFilter)
-    , _lrDocumentDelete :: !(Maybe DocumentDelete)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListenResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrTargetChange'
---
--- * 'lrDocumentRemove'
---
--- * 'lrDocumentChange'
---
--- * 'lrFilter'
---
--- * 'lrDocumentDelete'
-listenResponse
-    :: ListenResponse
-listenResponse =
-    ListenResponse'
-    { _lrTargetChange = Nothing
-    , _lrDocumentRemove = Nothing
-    , _lrDocumentChange = Nothing
-    , _lrFilter = Nothing
-    , _lrDocumentDelete = Nothing
-    }
-
--- | Targets have changed.
-lrTargetChange :: Lens' ListenResponse (Maybe TargetChange)
-lrTargetChange
-  = lens _lrTargetChange
-      (\ s a -> s{_lrTargetChange = a})
-
--- | A Document has been removed from a target (because it is no longer
--- relevant to that target).
-lrDocumentRemove :: Lens' ListenResponse (Maybe DocumentRemove)
-lrDocumentRemove
-  = lens _lrDocumentRemove
-      (\ s a -> s{_lrDocumentRemove = a})
-
--- | A Document has changed.
-lrDocumentChange :: Lens' ListenResponse (Maybe DocumentChange)
-lrDocumentChange
-  = lens _lrDocumentChange
-      (\ s a -> s{_lrDocumentChange = a})
-
--- | 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.
-lrFilter :: Lens' ListenResponse (Maybe ExistenceFilter)
-lrFilter = lens _lrFilter (\ s a -> s{_lrFilter = a})
-
--- | A Document has been deleted.
-lrDocumentDelete :: Lens' ListenResponse (Maybe DocumentDelete)
-lrDocumentDelete
-  = lens _lrDocumentDelete
-      (\ s a -> s{_lrDocumentDelete = a})
-
-instance FromJSON ListenResponse where
-        parseJSON
-          = withObject "ListenResponse"
-              (\ o ->
-                 ListenResponse' <$>
-                   (o .:? "targetChange") <*> (o .:? "documentRemove")
-                     <*> (o .:? "documentChange")
-                     <*> (o .:? "filter")
-                     <*> (o .:? "documentDelete"))
-
-instance ToJSON ListenResponse where
-        toJSON ListenResponse'{..}
-          = object
-              (catMaybes
-                 [("targetChange" .=) <$> _lrTargetChange,
-                  ("documentRemove" .=) <$> _lrDocumentRemove,
-                  ("documentChange" .=) <$> _lrDocumentChange,
-                  ("filter" .=) <$> _lrFilter,
-                  ("documentDelete" .=) <$> _lrDocumentDelete])
-
--- | A filter on a specific field.
---
--- /See:/ 'fieldFilter' smart constructor.
-data FieldFilter = FieldFilter'
-    { _ffOp    :: !(Maybe FieldFilterOp)
-    , _ffField :: !(Maybe FieldReference)
-    , _ffValue :: !(Maybe Value)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FieldFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ffOp'
---
--- * 'ffField'
---
--- * 'ffValue'
-fieldFilter
-    :: FieldFilter
-fieldFilter =
-    FieldFilter'
-    { _ffOp = Nothing
-    , _ffField = Nothing
-    , _ffValue = Nothing
-    }
-
--- | The operator to filter by.
-ffOp :: Lens' FieldFilter (Maybe FieldFilterOp)
-ffOp = lens _ffOp (\ s a -> s{_ffOp = a})
-
--- | The field to filter by.
-ffField :: Lens' FieldFilter (Maybe FieldReference)
-ffField = lens _ffField (\ s a -> s{_ffField = a})
-
--- | The value to compare to.
-ffValue :: Lens' FieldFilter (Maybe Value)
-ffValue = lens _ffValue (\ s a -> s{_ffValue = a})
-
-instance FromJSON FieldFilter where
-        parseJSON
-          = withObject "FieldFilter"
-              (\ o ->
-                 FieldFilter' <$>
-                   (o .:? "op") <*> (o .:? "field") <*> (o .:? "value"))
-
-instance ToJSON FieldFilter where
-        toJSON FieldFilter'{..}
-          = object
-              (catMaybes
-                 [("op" .=) <$> _ffOp, ("field" .=) <$> _ffField,
-                  ("value" .=) <$> _ffValue])
-
--- | 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\`.
---
--- /See:/ 'googleLongrunningOperationResponse' smart constructor.
-newtype GoogleLongrunningOperationResponse = GoogleLongrunningOperationResponse'
-    { _glorAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleLongrunningOperationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'glorAddtional'
-googleLongrunningOperationResponse
-    :: HashMap Text JSONValue -- ^ 'glorAddtional'
-    -> GoogleLongrunningOperationResponse
-googleLongrunningOperationResponse pGlorAddtional_ =
-    GoogleLongrunningOperationResponse'
-    { _glorAddtional = _Coerce # pGlorAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-glorAddtional :: Lens' GoogleLongrunningOperationResponse (HashMap Text JSONValue)
-glorAddtional
-  = lens _glorAddtional
-      (\ s a -> s{_glorAddtional = a})
-      . _Coerce
-
-instance FromJSON GoogleLongrunningOperationResponse
-         where
-        parseJSON
-          = withObject "GoogleLongrunningOperationResponse"
-              (\ o ->
-                 GoogleLongrunningOperationResponse' <$>
-                   (parseJSONObject o))
-
-instance ToJSON GoogleLongrunningOperationResponse
-         where
-        toJSON = toJSON . _glorAddtional
-
--- | The response for Firestore.ListDocuments.
---
--- /See:/ 'listDocumentsResponse' smart constructor.
-data ListDocumentsResponse = ListDocumentsResponse'
-    { _ldrNextPageToken :: !(Maybe Text)
-    , _ldrDocuments     :: !(Maybe [Document])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListDocumentsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldrNextPageToken'
---
--- * 'ldrDocuments'
-listDocumentsResponse
-    :: ListDocumentsResponse
-listDocumentsResponse =
-    ListDocumentsResponse'
-    { _ldrNextPageToken = Nothing
-    , _ldrDocuments = Nothing
-    }
-
--- | The next page token.
-ldrNextPageToken :: Lens' ListDocumentsResponse (Maybe Text)
-ldrNextPageToken
-  = lens _ldrNextPageToken
-      (\ s a -> s{_ldrNextPageToken = a})
-
--- | The Documents found.
-ldrDocuments :: Lens' ListDocumentsResponse [Document]
-ldrDocuments
-  = lens _ldrDocuments (\ s a -> s{_ldrDocuments = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListDocumentsResponse where
-        parseJSON
-          = withObject "ListDocumentsResponse"
-              (\ o ->
-                 ListDocumentsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "documents" .!= mempty))
-
-instance ToJSON ListDocumentsResponse where
-        toJSON ListDocumentsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ldrNextPageToken,
-                  ("documents" .=) <$> _ldrDocuments])
-
--- | Returned in the google.longrunning.Operation response field.
---
--- /See:/ 'googleFirestoreAdminV1ExportDocumentsResponse' smart constructor.
-newtype GoogleFirestoreAdminV1ExportDocumentsResponse = GoogleFirestoreAdminV1ExportDocumentsResponse'
-    { _gOutputURIPrefix :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1ExportDocumentsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gOutputURIPrefix'
-googleFirestoreAdminV1ExportDocumentsResponse
-    :: GoogleFirestoreAdminV1ExportDocumentsResponse
-googleFirestoreAdminV1ExportDocumentsResponse =
-    GoogleFirestoreAdminV1ExportDocumentsResponse'
-    { _gOutputURIPrefix = Nothing
-    }
-
--- | 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.
-gOutputURIPrefix :: Lens' GoogleFirestoreAdminV1ExportDocumentsResponse (Maybe Text)
-gOutputURIPrefix
-  = lens _gOutputURIPrefix
-      (\ s a -> s{_gOutputURIPrefix = a})
-
-instance FromJSON
-         GoogleFirestoreAdminV1ExportDocumentsResponse where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1ExportDocumentsResponse"
-              (\ o ->
-                 GoogleFirestoreAdminV1ExportDocumentsResponse' <$>
-                   (o .:? "outputUriPrefix"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1ExportDocumentsResponse where
-        toJSON
-          GoogleFirestoreAdminV1ExportDocumentsResponse'{..}
-          = object
-              (catMaybes
-                 [("outputUriPrefix" .=) <$> _gOutputURIPrefix])
-
--- | The projection of document\'s fields to return.
---
--- /See:/ 'projection' smart constructor.
-newtype Projection = Projection'
-    { _pFields :: Maybe [FieldReference]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Projection' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pFields'
-projection
-    :: Projection
-projection =
-    Projection'
-    { _pFields = Nothing
-    }
-
--- | The fields to return. If empty, all fields are returned. To only return
--- the name of the document, use \`[\'__name__\']\`.
-pFields :: Lens' Projection [FieldReference]
-pFields
-  = lens _pFields (\ s a -> s{_pFields = a}) . _Default
-      . _Coerce
-
-instance FromJSON Projection where
-        parseJSON
-          = withObject "Projection"
-              (\ o -> Projection' <$> (o .:? "fields" .!= mempty))
-
-instance ToJSON Projection where
-        toJSON Projection'{..}
-          = object (catMaybes [("fields" .=) <$> _pFields])
-
--- | A filter.
---
--- /See:/ 'filter'' smart constructor.
-data Filter = Filter'
-    { _fCompositeFilter :: !(Maybe CompositeFilter)
-    , _fFieldFilter     :: !(Maybe FieldFilter)
-    , _fUnaryFilter     :: !(Maybe UnaryFilter)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Filter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fCompositeFilter'
---
--- * 'fFieldFilter'
---
--- * 'fUnaryFilter'
-filter'
-    :: Filter
-filter' =
-    Filter'
-    { _fCompositeFilter = Nothing
-    , _fFieldFilter = Nothing
-    , _fUnaryFilter = Nothing
-    }
-
--- | A composite filter.
-fCompositeFilter :: Lens' Filter (Maybe CompositeFilter)
-fCompositeFilter
-  = lens _fCompositeFilter
-      (\ s a -> s{_fCompositeFilter = a})
-
--- | A filter on a document field.
-fFieldFilter :: Lens' Filter (Maybe FieldFilter)
-fFieldFilter
-  = lens _fFieldFilter (\ s a -> s{_fFieldFilter = a})
-
--- | A filter that takes exactly one argument.
-fUnaryFilter :: Lens' Filter (Maybe UnaryFilter)
-fUnaryFilter
-  = lens _fUnaryFilter (\ s a -> s{_fUnaryFilter = a})
-
-instance FromJSON Filter where
-        parseJSON
-          = withObject "Filter"
-              (\ o ->
-                 Filter' <$>
-                   (o .:? "compositeFilter") <*> (o .:? "fieldFilter")
-                     <*> (o .:? "unaryFilter"))
-
-instance ToJSON Filter where
-        toJSON Filter'{..}
-          = object
-              (catMaybes
-                 [("compositeFilter" .=) <$> _fCompositeFilter,
-                  ("fieldFilter" .=) <$> _fFieldFilter,
-                  ("unaryFilter" .=) <$> _fUnaryFilter])
-
--- | Metadata for google.longrunning.Operation results from
--- FirestoreAdmin.CreateIndex.
---
--- /See:/ 'googleFirestoreAdminV1IndexOperationMetadata' smart constructor.
-data GoogleFirestoreAdminV1IndexOperationMetadata = GoogleFirestoreAdminV1IndexOperationMetadata'
-    { _gfaviomProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfaviomState             :: !(Maybe GoogleFirestoreAdminV1IndexOperationMetadataState)
-    , _gfaviomStartTime         :: !(Maybe DateTime')
-    , _gfaviomProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
-    , _gfaviomEndTime           :: !(Maybe DateTime')
-    , _gfaviomIndex             :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleFirestoreAdminV1IndexOperationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfaviomProgressBytes'
---
--- * 'gfaviomState'
---
--- * 'gfaviomStartTime'
---
--- * 'gfaviomProgressDocuments'
---
--- * 'gfaviomEndTime'
---
--- * 'gfaviomIndex'
-googleFirestoreAdminV1IndexOperationMetadata
-    :: GoogleFirestoreAdminV1IndexOperationMetadata
-googleFirestoreAdminV1IndexOperationMetadata =
-    GoogleFirestoreAdminV1IndexOperationMetadata'
-    { _gfaviomProgressBytes = Nothing
-    , _gfaviomState = Nothing
-    , _gfaviomStartTime = Nothing
-    , _gfaviomProgressDocuments = Nothing
-    , _gfaviomEndTime = Nothing
-    , _gfaviomIndex = Nothing
-    }
-
--- | The progress, in bytes, of this operation.
-gfaviomProgressBytes :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfaviomProgressBytes
-  = lens _gfaviomProgressBytes
-      (\ s a -> s{_gfaviomProgressBytes = a})
-
--- | The state of the operation.
-gfaviomState :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe GoogleFirestoreAdminV1IndexOperationMetadataState)
-gfaviomState
-  = lens _gfaviomState (\ s a -> s{_gfaviomState = a})
-
--- | The time this operation started.
-gfaviomStartTime :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe UTCTime)
-gfaviomStartTime
-  = lens _gfaviomStartTime
-      (\ s a -> s{_gfaviomStartTime = a})
-      . mapping _DateTime
-
--- | The progress, in documents, of this operation.
-gfaviomProgressDocuments :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
-gfaviomProgressDocuments
-  = lens _gfaviomProgressDocuments
-      (\ s a -> s{_gfaviomProgressDocuments = a})
-
--- | The time this operation completed. Will be unset if operation still in
--- progress.
-gfaviomEndTime :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe UTCTime)
-gfaviomEndTime
-  = lens _gfaviomEndTime
-      (\ s a -> s{_gfaviomEndTime = a})
-      . mapping _DateTime
-
--- | The index resource that this operation is acting on. For example:
--- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\/indexes\/{index_id}\`
-gfaviomIndex :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe Text)
-gfaviomIndex
-  = lens _gfaviomIndex (\ s a -> s{_gfaviomIndex = a})
-
-instance FromJSON
-         GoogleFirestoreAdminV1IndexOperationMetadata where
-        parseJSON
-          = withObject
-              "GoogleFirestoreAdminV1IndexOperationMetadata"
-              (\ o ->
-                 GoogleFirestoreAdminV1IndexOperationMetadata' <$>
-                   (o .:? "progressBytes") <*> (o .:? "state") <*>
-                     (o .:? "startTime")
-                     <*> (o .:? "progressDocuments")
-                     <*> (o .:? "endTime")
-                     <*> (o .:? "index"))
-
-instance ToJSON
-         GoogleFirestoreAdminV1IndexOperationMetadata where
-        toJSON
-          GoogleFirestoreAdminV1IndexOperationMetadata'{..}
-          = object
-              (catMaybes
-                 [("progressBytes" .=) <$> _gfaviomProgressBytes,
-                  ("state" .=) <$> _gfaviomState,
-                  ("startTime" .=) <$> _gfaviomStartTime,
-                  ("progressDocuments" .=) <$>
-                    _gfaviomProgressDocuments,
-                  ("endTime" .=) <$> _gfaviomEndTime,
-                  ("index" .=) <$> _gfaviomIndex])
-
--- | Cross-service attributes for the location. For example
--- {\"cloud.googleapis.com\/region\": \"us-east1\"}
---
--- /See:/ 'locationLabels' smart constructor.
-newtype LocationLabels = LocationLabels'
-    { _llAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LocationLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'llAddtional'
-locationLabels
-    :: HashMap Text Text -- ^ 'llAddtional'
-    -> LocationLabels
-locationLabels pLlAddtional_ =
-    LocationLabels'
-    { _llAddtional = _Coerce # pLlAddtional_
-    }
-
-llAddtional :: Lens' LocationLabels (HashMap Text Text)
-llAddtional
-  = lens _llAddtional (\ s a -> s{_llAddtional = a}) .
-      _Coerce
-
-instance FromJSON LocationLabels where
-        parseJSON
-          = withObject "LocationLabels"
-              (\ o -> LocationLabels' <$> (parseJSONObject o))
-
-instance ToJSON LocationLabels where
-        toJSON = toJSON . _llAddtional
-
--- | A request for Firestore.Listen
---
--- /See:/ 'listenRequest' smart constructor.
-data ListenRequest = ListenRequest'
-    { _lrRemoveTarget :: !(Maybe (Textual Int32))
-    , _lrLabels       :: !(Maybe ListenRequestLabels)
-    , _lrAddTarget    :: !(Maybe Target)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListenRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrRemoveTarget'
---
--- * 'lrLabels'
---
--- * 'lrAddTarget'
-listenRequest
-    :: ListenRequest
-listenRequest =
-    ListenRequest'
-    { _lrRemoveTarget = Nothing
-    , _lrLabels = Nothing
-    , _lrAddTarget = Nothing
-    }
-
--- | The ID of a target to remove from this stream.
-lrRemoveTarget :: Lens' ListenRequest (Maybe Int32)
-lrRemoveTarget
-  = lens _lrRemoveTarget
-      (\ s a -> s{_lrRemoveTarget = a})
-      . mapping _Coerce
-
--- | Labels associated with this target change.
-lrLabels :: Lens' ListenRequest (Maybe ListenRequestLabels)
-lrLabels = lens _lrLabels (\ s a -> s{_lrLabels = a})
-
--- | A target to add to this stream.
-lrAddTarget :: Lens' ListenRequest (Maybe Target)
-lrAddTarget
-  = lens _lrAddTarget (\ s a -> s{_lrAddTarget = a})
-
-instance FromJSON ListenRequest where
-        parseJSON
-          = withObject "ListenRequest"
-              (\ o ->
-                 ListenRequest' <$>
-                   (o .:? "removeTarget") <*> (o .:? "labels") <*>
-                     (o .:? "addTarget"))
-
-instance ToJSON ListenRequest where
-        toJSON ListenRequest'{..}
-          = object
-              (catMaybes
-                 [("removeTarget" .=) <$> _lrRemoveTarget,
-                  ("labels" .=) <$> _lrLabels,
-                  ("addTarget" .=) <$> _lrAddTarget])
-
--- | The request for Firestore.Commit.
---
--- /See:/ 'commitRequest' smart constructor.
-data CommitRequest = CommitRequest'
-    { _crTransaction :: !(Maybe Bytes)
-    , _crWrites      :: !(Maybe [Write])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommitRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crTransaction'
---
--- * 'crWrites'
-commitRequest
-    :: CommitRequest
-commitRequest =
-    CommitRequest'
-    { _crTransaction = Nothing
-    , _crWrites = Nothing
-    }
-
--- | If set, applies all writes in this transaction, and commits it.
-crTransaction :: Lens' CommitRequest (Maybe ByteString)
-crTransaction
-  = lens _crTransaction
-      (\ s a -> s{_crTransaction = a})
-      . mapping _Bytes
-
--- | The writes to apply. Always executed atomically and in order.
-crWrites :: Lens' CommitRequest [Write]
-crWrites
-  = lens _crWrites (\ s a -> s{_crWrites = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON CommitRequest where
-        parseJSON
-          = withObject "CommitRequest"
-              (\ o ->
-                 CommitRequest' <$>
-                   (o .:? "transaction") <*>
-                     (o .:? "writes" .!= mempty))
-
-instance ToJSON CommitRequest where
-        toJSON CommitRequest'{..}
-          = object
-              (catMaybes
-                 [("transaction" .=) <$> _crTransaction,
-                  ("writes" .=) <$> _crWrites])
-
--- | Service-specific metadata. For example the available capacity at the
--- given location.
---
--- /See:/ 'locationMetadata' smart constructor.
-newtype LocationMetadata = LocationMetadata'
-    { _lmAddtional :: HashMap Text JSONValue
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LocationMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lmAddtional'
-locationMetadata
-    :: HashMap Text JSONValue -- ^ 'lmAddtional'
-    -> LocationMetadata
-locationMetadata pLmAddtional_ =
-    LocationMetadata'
-    { _lmAddtional = _Coerce # pLmAddtional_
-    }
-
--- | Properties of the object. Contains field \'type with type URL.
-lmAddtional :: Lens' LocationMetadata (HashMap Text JSONValue)
-lmAddtional
-  = lens _lmAddtional (\ s a -> s{_lmAddtional = a}) .
-      _Coerce
-
-instance FromJSON LocationMetadata where
-        parseJSON
-          = withObject "LocationMetadata"
-              (\ o -> LocationMetadata' <$> (parseJSONObject o))
-
-instance ToJSON LocationMetadata where
-        toJSON = toJSON . _lmAddtional
-
--- | The response message for Operations.ListOperations.
---
--- /See:/ 'googleLongrunningListOperationsResponse' smart constructor.
-data GoogleLongrunningListOperationsResponse = GoogleLongrunningListOperationsResponse'
-    { _gllorNextPageToken :: !(Maybe Text)
-    , _gllorOperations    :: !(Maybe [GoogleLongrunningOperation])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleLongrunningListOperationsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gllorNextPageToken'
---
--- * 'gllorOperations'
-googleLongrunningListOperationsResponse
-    :: GoogleLongrunningListOperationsResponse
-googleLongrunningListOperationsResponse =
-    GoogleLongrunningListOperationsResponse'
-    { _gllorNextPageToken = Nothing
-    , _gllorOperations = Nothing
-    }
-
--- | The standard List next-page token.
-gllorNextPageToken :: Lens' GoogleLongrunningListOperationsResponse (Maybe Text)
-gllorNextPageToken
-  = lens _gllorNextPageToken
-      (\ s a -> s{_gllorNextPageToken = a})
-
--- | A list of operations that matches the specified filter in the request.
-gllorOperations :: Lens' GoogleLongrunningListOperationsResponse [GoogleLongrunningOperation]
-gllorOperations
-  = lens _gllorOperations
-      (\ s a -> s{_gllorOperations = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         GoogleLongrunningListOperationsResponse where
-        parseJSON
-          = withObject
-              "GoogleLongrunningListOperationsResponse"
-              (\ o ->
-                 GoogleLongrunningListOperationsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "operations" .!= mempty))
-
-instance ToJSON
-         GoogleLongrunningListOperationsResponse where
-        toJSON GoogleLongrunningListOperationsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _gllorNextPageToken,
-                  ("operations" .=) <$> _gllorOperations])
-
--- | A selection of a collection, such as \`messages as m1\`.
---
--- /See:/ 'collectionSelector' smart constructor.
-data CollectionSelector = CollectionSelector'
-    { _csAllDescendants :: !(Maybe Bool)
-    , _csCollectionId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CollectionSelector' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csAllDescendants'
---
--- * 'csCollectionId'
-collectionSelector
-    :: CollectionSelector
-collectionSelector =
-    CollectionSelector'
-    { _csAllDescendants = Nothing
-    , _csCollectionId = Nothing
-    }
-
--- | When false, selects only collections that are immediate children of the
--- \`parent\` specified in the containing \`RunQueryRequest\`. When true,
--- selects all descendant collections.
-csAllDescendants :: Lens' CollectionSelector (Maybe Bool)
-csAllDescendants
-  = lens _csAllDescendants
-      (\ s a -> s{_csAllDescendants = a})
-
--- | The collection ID. When set, selects only collections with this ID.
-csCollectionId :: Lens' CollectionSelector (Maybe Text)
-csCollectionId
-  = lens _csCollectionId
-      (\ s a -> s{_csCollectionId = a})
-
-instance FromJSON CollectionSelector where
-        parseJSON
-          = withObject "CollectionSelector"
-              (\ o ->
-                 CollectionSelector' <$>
-                   (o .:? "allDescendants") <*> (o .:? "collectionId"))
-
-instance ToJSON CollectionSelector where
-        toJSON CollectionSelector'{..}
-          = object
-              (catMaybes
-                 [("allDescendants" .=) <$> _csAllDescendants,
-                  ("collectionId" .=) <$> _csCollectionId])
-
--- | The request for Firestore.ListCollectionIds.
---
--- /See:/ 'listCollectionIdsRequest' smart constructor.
-data ListCollectionIdsRequest = ListCollectionIdsRequest'
-    { _lcirPageToken :: !(Maybe Text)
-    , _lcirPageSize  :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ListCollectionIdsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcirPageToken'
---
--- * 'lcirPageSize'
-listCollectionIdsRequest
-    :: ListCollectionIdsRequest
-listCollectionIdsRequest =
-    ListCollectionIdsRequest'
-    { _lcirPageToken = Nothing
-    , _lcirPageSize = Nothing
-    }
-
--- | A page token. Must be a value from ListCollectionIdsResponse.
-lcirPageToken :: Lens' ListCollectionIdsRequest (Maybe Text)
-lcirPageToken
-  = lens _lcirPageToken
-      (\ s a -> s{_lcirPageToken = a})
-
--- | The maximum number of results to return.
-lcirPageSize :: Lens' ListCollectionIdsRequest (Maybe Int32)
-lcirPageSize
-  = lens _lcirPageSize (\ s a -> s{_lcirPageSize = a})
-      . mapping _Coerce
-
-instance FromJSON ListCollectionIdsRequest where
-        parseJSON
-          = withObject "ListCollectionIdsRequest"
-              (\ o ->
-                 ListCollectionIdsRequest' <$>
-                   (o .:? "pageToken") <*> (o .:? "pageSize"))
-
-instance ToJSON ListCollectionIdsRequest where
-        toJSON ListCollectionIdsRequest'{..}
-          = object
-              (catMaybes
-                 [("pageToken" .=) <$> _lcirPageToken,
-                  ("pageSize" .=) <$> _lcirPageSize])
-
--- | The response for Firestore.Write.
---
--- /See:/ 'writeResponse' smart constructor.
-data WriteResponse = WriteResponse'
-    { _wStreamToken  :: !(Maybe Bytes)
-    , _wCommitTime   :: !(Maybe DateTime')
-    , _wWriteResults :: !(Maybe [WriteResult])
-    , _wStreamId     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WriteResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wStreamToken'
---
--- * 'wCommitTime'
---
--- * 'wWriteResults'
---
--- * 'wStreamId'
-writeResponse
-    :: WriteResponse
-writeResponse =
-    WriteResponse'
-    { _wStreamToken = Nothing
-    , _wCommitTime = Nothing
-    , _wWriteResults = Nothing
-    , _wStreamId = Nothing
-    }
-
--- | 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.
-wStreamToken :: Lens' WriteResponse (Maybe ByteString)
-wStreamToken
-  = lens _wStreamToken (\ s a -> s{_wStreamToken = a})
-      . mapping _Bytes
-
--- | The time at which the commit occurred.
-wCommitTime :: Lens' WriteResponse (Maybe UTCTime)
-wCommitTime
-  = lens _wCommitTime (\ s a -> s{_wCommitTime = a}) .
-      mapping _DateTime
-
--- | The result of applying the writes. This i-th write result corresponds to
--- the i-th write in the request.
-wWriteResults :: Lens' WriteResponse [WriteResult]
-wWriteResults
-  = lens _wWriteResults
-      (\ s a -> s{_wWriteResults = a})
-      . _Default
-      . _Coerce
-
--- | The ID of the stream. Only set on the first message, when a new stream
--- was created.
-wStreamId :: Lens' WriteResponse (Maybe Text)
-wStreamId
-  = lens _wStreamId (\ s a -> s{_wStreamId = a})
-
-instance FromJSON WriteResponse where
-        parseJSON
-          = withObject "WriteResponse"
-              (\ o ->
-                 WriteResponse' <$>
-                   (o .:? "streamToken") <*> (o .:? "commitTime") <*>
-                     (o .:? "writeResults" .!= mempty)
-                     <*> (o .:? "streamId"))
-
-instance ToJSON WriteResponse where
-        toJSON WriteResponse'{..}
-          = object
-              (catMaybes
-                 [("streamToken" .=) <$> _wStreamToken,
-                  ("commitTime" .=) <$> _wCommitTime,
-                  ("writeResults" .=) <$> _wWriteResults,
-                  ("streamId" .=) <$> _wStreamId])
-
--- | An order on a field.
---
--- /See:/ 'order' smart constructor.
-data Order = Order'
-    { _oField     :: !(Maybe FieldReference)
-    , _oDirection :: !(Maybe OrderDirection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Order' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oField'
---
--- * 'oDirection'
-order
-    :: Order
-order =
-    Order'
-    { _oField = Nothing
-    , _oDirection = Nothing
-    }
-
--- | The field to order by.
-oField :: Lens' Order (Maybe FieldReference)
-oField = lens _oField (\ s a -> s{_oField = a})
-
--- | The direction to order by. Defaults to \`ASCENDING\`.
-oDirection :: Lens' Order (Maybe OrderDirection)
-oDirection
-  = lens _oDirection (\ s a -> s{_oDirection = a})
-
-instance FromJSON Order where
-        parseJSON
-          = withObject "Order"
-              (\ o ->
-                 Order' <$> (o .:? "field") <*> (o .:? "direction"))
-
-instance ToJSON Order where
-        toJSON Order'{..}
-          = object
-              (catMaybes
-                 [("field" .=) <$> _oField,
-                  ("direction" .=) <$> _oDirection])
-
--- | 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.
---
--- /See:/ 'documentDelete' smart constructor.
-data DocumentDelete = DocumentDelete'
-    { _ddReadTime         :: !(Maybe DateTime')
-    , _ddDocument         :: !(Maybe Text)
-    , _ddRemovedTargetIds :: !(Maybe [Textual Int32])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddReadTime'
---
--- * 'ddDocument'
---
--- * 'ddRemovedTargetIds'
-documentDelete
-    :: DocumentDelete
-documentDelete =
-    DocumentDelete'
-    { _ddReadTime = Nothing
-    , _ddDocument = Nothing
-    , _ddRemovedTargetIds = Nothing
-    }
-
--- | The read timestamp at which the delete was observed. Greater or equal to
--- the \`commit_time\` of the delete.
-ddReadTime :: Lens' DocumentDelete (Maybe UTCTime)
-ddReadTime
-  = lens _ddReadTime (\ s a -> s{_ddReadTime = a}) .
-      mapping _DateTime
-
--- | The resource name of the Document that was deleted.
-ddDocument :: Lens' DocumentDelete (Maybe Text)
-ddDocument
-  = lens _ddDocument (\ s a -> s{_ddDocument = a})
-
--- | A set of target IDs for targets that previously matched this entity.
-ddRemovedTargetIds :: Lens' DocumentDelete [Int32]
-ddRemovedTargetIds
-  = lens _ddRemovedTargetIds
-      (\ s a -> s{_ddRemovedTargetIds = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON DocumentDelete where
-        parseJSON
-          = withObject "DocumentDelete"
-              (\ o ->
-                 DocumentDelete' <$>
-                   (o .:? "readTime") <*> (o .:? "document") <*>
-                     (o .:? "removedTargetIds" .!= mempty))
-
-instance ToJSON DocumentDelete where
-        toJSON DocumentDelete'{..}
-          = object
-              (catMaybes
-                 [("readTime" .=) <$> _ddReadTime,
-                  ("document" .=) <$> _ddDocument,
-                  ("removedTargetIds" .=) <$> _ddRemovedTargetIds])
-
--- | A transformation of a field of the document.
---
--- /See:/ 'fieldTransform' smart constructor.
-data FieldTransform = FieldTransform'
-    { _ftFieldPath             :: !(Maybe Text)
-    , _ftAppendMissingElements :: !(Maybe ArrayValue)
-    , _ftSetToServerValue      :: !(Maybe FieldTransformSetToServerValue)
-    , _ftRemoveAllFromArray    :: !(Maybe ArrayValue)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FieldTransform' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ftFieldPath'
---
--- * 'ftAppendMissingElements'
---
--- * 'ftSetToServerValue'
---
--- * 'ftRemoveAllFromArray'
-fieldTransform
-    :: FieldTransform
-fieldTransform =
-    FieldTransform'
-    { _ftFieldPath = Nothing
-    , _ftAppendMissingElements = Nothing
-    , _ftSetToServerValue = Nothing
-    , _ftRemoveAllFromArray = Nothing
-    }
-
--- | The path of the field. See Document.fields for the field path syntax
--- reference.
-ftFieldPath :: Lens' FieldTransform (Maybe Text)
-ftFieldPath
-  = lens _ftFieldPath (\ s a -> s{_ftFieldPath = a})
-
--- | 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.
-ftAppendMissingElements :: Lens' FieldTransform (Maybe ArrayValue)
-ftAppendMissingElements
-  = lens _ftAppendMissingElements
-      (\ s a -> s{_ftAppendMissingElements = a})
-
--- | Sets the field to the given server value.
-ftSetToServerValue :: Lens' FieldTransform (Maybe FieldTransformSetToServerValue)
-ftSetToServerValue
-  = lens _ftSetToServerValue
-      (\ s a -> s{_ftSetToServerValue = a})
-
--- | 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.
-ftRemoveAllFromArray :: Lens' FieldTransform (Maybe ArrayValue)
-ftRemoveAllFromArray
-  = lens _ftRemoveAllFromArray
-      (\ s a -> s{_ftRemoveAllFromArray = a})
-
-instance FromJSON FieldTransform where
-        parseJSON
-          = withObject "FieldTransform"
-              (\ o ->
-                 FieldTransform' <$>
-                   (o .:? "fieldPath") <*>
-                     (o .:? "appendMissingElements")
-                     <*> (o .:? "setToServerValue")
-                     <*> (o .:? "removeAllFromArray"))
-
-instance ToJSON FieldTransform where
-        toJSON FieldTransform'{..}
-          = object
-              (catMaybes
-                 [("fieldPath" .=) <$> _ftFieldPath,
-                  ("appendMissingElements" .=) <$>
-                    _ftAppendMissingElements,
-                  ("setToServerValue" .=) <$> _ftSetToServerValue,
-                  ("removeAllFromArray" .=) <$> _ftRemoveAllFromArray])
-
--- | 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.
---
--- /See:/ 'mapValueFields' smart constructor.
-newtype MapValueFields = MapValueFields'
-    { _mvfAddtional :: HashMap Text Value
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MapValueFields' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mvfAddtional'
-mapValueFields
-    :: HashMap Text Value -- ^ 'mvfAddtional'
-    -> MapValueFields
-mapValueFields pMvfAddtional_ =
-    MapValueFields'
-    { _mvfAddtional = _Coerce # pMvfAddtional_
-    }
-
-mvfAddtional :: Lens' MapValueFields (HashMap Text Value)
-mvfAddtional
-  = lens _mvfAddtional (\ s a -> s{_mvfAddtional = a})
-      . _Coerce
-
-instance FromJSON MapValueFields where
-        parseJSON
-          = withObject "MapValueFields"
-              (\ o -> MapValueFields' <$> (parseJSONObject o))
-
-instance ToJSON MapValueFields where
-        toJSON = toJSON . _mvfAddtional
-
--- | 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 \`\`.
---
--- /See:/ 'documentFields' smart constructor.
-newtype DocumentFields = DocumentFields'
-    { _dfAddtional :: HashMap Text Value
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentFields' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfAddtional'
-documentFields
-    :: HashMap Text Value -- ^ 'dfAddtional'
-    -> DocumentFields
-documentFields pDfAddtional_ =
-    DocumentFields'
-    { _dfAddtional = _Coerce # pDfAddtional_
-    }
-
-dfAddtional :: Lens' DocumentFields (HashMap Text Value)
-dfAddtional
-  = lens _dfAddtional (\ s a -> s{_dfAddtional = a}) .
-      _Coerce
-
-instance FromJSON DocumentFields where
-        parseJSON
-          = withObject "DocumentFields"
-              (\ o -> DocumentFields' <$> (parseJSONObject o))
-
-instance ToJSON DocumentFields where
-        toJSON = toJSON . _dfAddtional
-
--- | Options for a transaction that can only be used to read documents.
---
--- /See:/ 'readOnly' smart constructor.
-newtype ReadOnly = ReadOnly'
-    { _roReadTime :: Maybe DateTime'
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReadOnly' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'roReadTime'
-readOnly
-    :: ReadOnly
-readOnly =
-    ReadOnly'
-    { _roReadTime = Nothing
-    }
-
--- | Reads documents at the given time. This may not be older than 60
--- seconds.
-roReadTime :: Lens' ReadOnly (Maybe UTCTime)
-roReadTime
-  = lens _roReadTime (\ s a -> s{_roReadTime = a}) .
-      mapping _DateTime
-
-instance FromJSON ReadOnly where
-        parseJSON
-          = withObject "ReadOnly"
-              (\ o -> ReadOnly' <$> (o .:? "readTime"))
-
-instance ToJSON ReadOnly where
-        toJSON ReadOnly'{..}
-          = object
-              (catMaybes [("readTime" .=) <$> _roReadTime])
-
--- | A specification of a set of documents to listen to.
---
--- /See:/ 'target' smart constructor.
-data Target = Target'
-    { _tTargetId    :: !(Maybe (Textual Int32))
-    , _tOnce        :: !(Maybe Bool)
-    , _tReadTime    :: !(Maybe DateTime')
-    , _tResumeToken :: !(Maybe Bytes)
-    , _tDocuments   :: !(Maybe DocumentsTarget)
-    , _tQuery       :: !(Maybe QueryTarget)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Target' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tTargetId'
---
--- * 'tOnce'
---
--- * 'tReadTime'
---
--- * 'tResumeToken'
---
--- * 'tDocuments'
---
--- * 'tQuery'
-target
-    :: Target
-target =
-    Target'
-    { _tTargetId = Nothing
-    , _tOnce = Nothing
-    , _tReadTime = Nothing
-    , _tResumeToken = Nothing
-    , _tDocuments = Nothing
-    , _tQuery = Nothing
-    }
-
--- | 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.
-tTargetId :: Lens' Target (Maybe Int32)
-tTargetId
-  = lens _tTargetId (\ s a -> s{_tTargetId = a}) .
-      mapping _Coerce
-
--- | If the target should be removed once it is current and consistent.
-tOnce :: Lens' Target (Maybe Bool)
-tOnce = lens _tOnce (\ s a -> s{_tOnce = a})
-
--- | Start listening after a specific \`read_time\`. The client must know the
--- state of matching documents at this time.
-tReadTime :: Lens' Target (Maybe UTCTime)
-tReadTime
-  = lens _tReadTime (\ s a -> s{_tReadTime = a}) .
-      mapping _DateTime
-
--- | A resume token from a prior TargetChange for an identical target. Using
--- a resume token with a different target is unsupported and may fail.
-tResumeToken :: Lens' Target (Maybe ByteString)
-tResumeToken
-  = lens _tResumeToken (\ s a -> s{_tResumeToken = a})
-      . mapping _Bytes
-
--- | A target specified by a set of document names.
-tDocuments :: Lens' Target (Maybe DocumentsTarget)
-tDocuments
-  = lens _tDocuments (\ s a -> s{_tDocuments = a})
-
--- | A target specified by a query.
-tQuery :: Lens' Target (Maybe QueryTarget)
-tQuery = lens _tQuery (\ s a -> s{_tQuery = a})
-
-instance FromJSON Target where
-        parseJSON
-          = withObject "Target"
-              (\ o ->
-                 Target' <$>
-                   (o .:? "targetId") <*> (o .:? "once") <*>
-                     (o .:? "readTime")
-                     <*> (o .:? "resumeToken")
-                     <*> (o .:? "documents")
-                     <*> (o .:? "query"))
-
-instance ToJSON Target where
-        toJSON Target'{..}
-          = object
-              (catMaybes
-                 [("targetId" .=) <$> _tTargetId,
-                  ("once" .=) <$> _tOnce,
-                  ("readTime" .=) <$> _tReadTime,
-                  ("resumeToken" .=) <$> _tResumeToken,
-                  ("documents" .=) <$> _tDocuments,
-                  ("query" .=) <$> _tQuery])
-
--- | Labels associated with this write request.
---
--- /See:/ 'writeRequestLabels' smart constructor.
-newtype WriteRequestLabels = WriteRequestLabels'
-    { _wrlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'WriteRequestLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'wrlAddtional'
-writeRequestLabels
-    :: HashMap Text Text -- ^ 'wrlAddtional'
-    -> WriteRequestLabels
-writeRequestLabels pWrlAddtional_ =
-    WriteRequestLabels'
-    { _wrlAddtional = _Coerce # pWrlAddtional_
-    }
-
-wrlAddtional :: Lens' WriteRequestLabels (HashMap Text Text)
-wrlAddtional
-  = lens _wrlAddtional (\ s a -> s{_wrlAddtional = a})
-      . _Coerce
-
-instance FromJSON WriteRequestLabels where
-        parseJSON
-          = withObject "WriteRequestLabels"
-              (\ o -> WriteRequestLabels' <$> (parseJSONObject o))
-
-instance ToJSON WriteRequestLabels where
-        toJSON = toJSON . _wrlAddtional
-
--- | This resource represents a long-running operation that is the result of
--- a network API call.
---
--- /See:/ 'googleLongrunningOperation' smart constructor.
-data GoogleLongrunningOperation = GoogleLongrunningOperation'
-    { _gloDone     :: !(Maybe Bool)
-    , _gloError    :: !(Maybe Status)
-    , _gloResponse :: !(Maybe GoogleLongrunningOperationResponse)
-    , _gloName     :: !(Maybe Text)
-    , _gloMetadata :: !(Maybe GoogleLongrunningOperationMetadata)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GoogleLongrunningOperation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gloDone'
---
--- * 'gloError'
---
--- * 'gloResponse'
---
--- * 'gloName'
---
--- * 'gloMetadata'
-googleLongrunningOperation
-    :: GoogleLongrunningOperation
-googleLongrunningOperation =
-    GoogleLongrunningOperation'
-    { _gloDone = Nothing
-    , _gloError = Nothing
-    , _gloResponse = Nothing
-    , _gloName = Nothing
-    , _gloMetadata = Nothing
-    }
-
--- | 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.
-gloDone :: Lens' GoogleLongrunningOperation (Maybe Bool)
-gloDone = lens _gloDone (\ s a -> s{_gloDone = a})
-
--- | The error result of the operation in case of failure or cancellation.
-gloError :: Lens' GoogleLongrunningOperation (Maybe Status)
-gloError = lens _gloError (\ s a -> s{_gloError = a})
-
--- | 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\`.
-gloResponse :: Lens' GoogleLongrunningOperation (Maybe GoogleLongrunningOperationResponse)
-gloResponse
-  = lens _gloResponse (\ s a -> s{_gloResponse = a})
-
--- | 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\`.
-gloName :: Lens' GoogleLongrunningOperation (Maybe Text)
-gloName = lens _gloName (\ s a -> s{_gloName = a})
-
--- | 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.
-gloMetadata :: Lens' GoogleLongrunningOperation (Maybe GoogleLongrunningOperationMetadata)
-gloMetadata
-  = lens _gloMetadata (\ s a -> s{_gloMetadata = a})
-
-instance FromJSON GoogleLongrunningOperation where
-        parseJSON
-          = withObject "GoogleLongrunningOperation"
-              (\ o ->
-                 GoogleLongrunningOperation' <$>
-                   (o .:? "done") <*> (o .:? "error") <*>
-                     (o .:? "response")
-                     <*> (o .:? "name")
-                     <*> (o .:? "metadata"))
-
-instance ToJSON GoogleLongrunningOperation where
-        toJSON GoogleLongrunningOperation'{..}
-          = object
-              (catMaybes
-                 [("done" .=) <$> _gloDone,
-                  ("error" .=) <$> _gloError,
-                  ("response" .=) <$> _gloResponse,
-                  ("name" .=) <$> _gloName,
-                  ("metadata" .=) <$> _gloMetadata])
-
--- | A filter with a single operand.
---
--- /See:/ 'unaryFilter' smart constructor.
-data UnaryFilter = UnaryFilter'
-    { _ufOp    :: !(Maybe UnaryFilterOp)
-    , _ufField :: !(Maybe FieldReference)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UnaryFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ufOp'
---
--- * 'ufField'
-unaryFilter
-    :: UnaryFilter
-unaryFilter =
-    UnaryFilter'
-    { _ufOp = Nothing
-    , _ufField = Nothing
-    }
+data WriteRequest =
+  WriteRequest'
+    { _wrStreamToken :: !(Maybe Bytes)
+    , _wrLabels      :: !(Maybe WriteRequestLabels)
+    , _wrWrites      :: !(Maybe [Write])
+    , _wrStreamId    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WriteRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wrStreamToken'
+--
+-- * 'wrLabels'
+--
+-- * 'wrWrites'
+--
+-- * 'wrStreamId'
+writeRequest
+    :: WriteRequest
+writeRequest =
+  WriteRequest'
+    { _wrStreamToken = Nothing
+    , _wrLabels = Nothing
+    , _wrWrites = Nothing
+    , _wrStreamId = Nothing
+    }
+
+
+-- | 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.
+wrStreamToken :: Lens' WriteRequest (Maybe ByteString)
+wrStreamToken
+  = lens _wrStreamToken
+      (\ s a -> s{_wrStreamToken = a})
+      . mapping _Bytes
+
+-- | Labels associated with this write request.
+wrLabels :: Lens' WriteRequest (Maybe WriteRequestLabels)
+wrLabels = lens _wrLabels (\ s a -> s{_wrLabels = a})
+
+-- | 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.
+wrWrites :: Lens' WriteRequest [Write]
+wrWrites
+  = lens _wrWrites (\ s a -> s{_wrWrites = a}) .
+      _Default
+      . _Coerce
+
+-- | 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.
+wrStreamId :: Lens' WriteRequest (Maybe Text)
+wrStreamId
+  = lens _wrStreamId (\ s a -> s{_wrStreamId = a})
+
+instance FromJSON WriteRequest where
+        parseJSON
+          = withObject "WriteRequest"
+              (\ o ->
+                 WriteRequest' <$>
+                   (o .:? "streamToken") <*> (o .:? "labels") <*>
+                     (o .:? "writes" .!= mempty)
+                     <*> (o .:? "streamId"))
+
+instance ToJSON WriteRequest where
+        toJSON WriteRequest'{..}
+          = object
+              (catMaybes
+                 [("streamToken" .=) <$> _wrStreamToken,
+                  ("labels" .=) <$> _wrLabels,
+                  ("writes" .=) <$> _wrWrites,
+                  ("streamId" .=) <$> _wrStreamId])
+
+-- | 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
+-- <http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf WGS84 standard>.
+-- Values must be within normalized ranges.
+--
+-- /See:/ 'latLng' smart constructor.
+data LatLng =
+  LatLng'
+    { _llLatitude  :: !(Maybe (Textual Double))
+    , _llLongitude :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LatLng' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llLatitude'
+--
+-- * 'llLongitude'
+latLng
+    :: LatLng
+latLng = LatLng' {_llLatitude = Nothing, _llLongitude = Nothing}
+
+
+-- | The latitude in degrees. It must be in the range [-90.0, +90.0].
+llLatitude :: Lens' LatLng (Maybe Double)
+llLatitude
+  = lens _llLatitude (\ s a -> s{_llLatitude = a}) .
+      mapping _Coerce
+
+-- | The longitude in degrees. It must be in the range [-180.0, +180.0].
+llLongitude :: Lens' LatLng (Maybe Double)
+llLongitude
+  = lens _llLongitude (\ s a -> s{_llLongitude = a}) .
+      mapping _Coerce
+
+instance FromJSON LatLng where
+        parseJSON
+          = withObject "LatLng"
+              (\ o ->
+                 LatLng' <$>
+                   (o .:? "latitude") <*> (o .:? "longitude"))
+
+instance ToJSON LatLng where
+        toJSON LatLng'{..}
+          = object
+              (catMaybes
+                 [("latitude" .=) <$> _llLatitude,
+                  ("longitude" .=) <$> _llLongitude])
+
+-- | The result of applying a write.
+--
+-- /See:/ 'writeResult' smart constructor.
+data WriteResult =
+  WriteResult'
+    { _wrUpdateTime       :: !(Maybe DateTime')
+    , _wrTransformResults :: !(Maybe [Value])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WriteResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wrUpdateTime'
+--
+-- * 'wrTransformResults'
+writeResult
+    :: WriteResult
+writeResult =
+  WriteResult' {_wrUpdateTime = Nothing, _wrTransformResults = Nothing}
+
+
+-- | 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.
+wrUpdateTime :: Lens' WriteResult (Maybe UTCTime)
+wrUpdateTime
+  = lens _wrUpdateTime (\ s a -> s{_wrUpdateTime = a})
+      . mapping _DateTime
+
+-- | The results of applying each DocumentTransform.FieldTransform, in the
+-- same order.
+wrTransformResults :: Lens' WriteResult [Value]
+wrTransformResults
+  = lens _wrTransformResults
+      (\ s a -> s{_wrTransformResults = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON WriteResult where
+        parseJSON
+          = withObject "WriteResult"
+              (\ o ->
+                 WriteResult' <$>
+                   (o .:? "updateTime") <*>
+                     (o .:? "transformResults" .!= mempty))
+
+instance ToJSON WriteResult where
+        toJSON WriteResult'{..}
+          = object
+              (catMaybes
+                 [("updateTime" .=) <$> _wrUpdateTime,
+                  ("transformResults" .=) <$> _wrTransformResults])
+
+-- | 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.
+--
+-- /See:/ 'googleFirestoreAdminV1Field' smart constructor.
+data GoogleFirestoreAdminV1Field =
+  GoogleFirestoreAdminV1Field'
+    { _gfavfIndexConfig :: !(Maybe GoogleFirestoreAdminV1IndexConfig)
+    , _gfavfName        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1Field' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavfIndexConfig'
+--
+-- * 'gfavfName'
+googleFirestoreAdminV1Field
+    :: GoogleFirestoreAdminV1Field
+googleFirestoreAdminV1Field =
+  GoogleFirestoreAdminV1Field'
+    {_gfavfIndexConfig = Nothing, _gfavfName = Nothing}
+
+
+-- | 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.
+gfavfIndexConfig :: Lens' GoogleFirestoreAdminV1Field (Maybe GoogleFirestoreAdminV1IndexConfig)
+gfavfIndexConfig
+  = lens _gfavfIndexConfig
+      (\ s a -> s{_gfavfIndexConfig = a})
+
+-- | 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.
+gfavfName :: Lens' GoogleFirestoreAdminV1Field (Maybe Text)
+gfavfName
+  = lens _gfavfName (\ s a -> s{_gfavfName = a})
+
+instance FromJSON GoogleFirestoreAdminV1Field where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1Field"
+              (\ o ->
+                 GoogleFirestoreAdminV1Field' <$>
+                   (o .:? "indexConfig") <*> (o .:? "name"))
+
+instance ToJSON GoogleFirestoreAdminV1Field where
+        toJSON GoogleFirestoreAdminV1Field'{..}
+          = object
+              (catMaybes
+                 [("indexConfig" .=) <$> _gfavfIndexConfig,
+                  ("name" .=) <$> _gfavfName])
+
+-- | Options for creating a new transaction.
+--
+-- /See:/ 'transactionOptions' smart constructor.
+data TransactionOptions =
+  TransactionOptions'
+    { _toReadWrite :: !(Maybe ReadWrite)
+    , _toReadOnly  :: !(Maybe ReadOnly)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TransactionOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'toReadWrite'
+--
+-- * 'toReadOnly'
+transactionOptions
+    :: TransactionOptions
+transactionOptions =
+  TransactionOptions' {_toReadWrite = Nothing, _toReadOnly = Nothing}
+
+
+-- | The transaction can be used for both read and write operations.
+toReadWrite :: Lens' TransactionOptions (Maybe ReadWrite)
+toReadWrite
+  = lens _toReadWrite (\ s a -> s{_toReadWrite = a})
+
+-- | The transaction can only be used for read operations.
+toReadOnly :: Lens' TransactionOptions (Maybe ReadOnly)
+toReadOnly
+  = lens _toReadOnly (\ s a -> s{_toReadOnly = a})
+
+instance FromJSON TransactionOptions where
+        parseJSON
+          = withObject "TransactionOptions"
+              (\ o ->
+                 TransactionOptions' <$>
+                   (o .:? "readWrite") <*> (o .:? "readOnly"))
+
+instance ToJSON TransactionOptions where
+        toJSON TransactionOptions'{..}
+          = object
+              (catMaybes
+                 [("readWrite" .=) <$> _toReadWrite,
+                  ("readOnly" .=) <$> _toReadOnly])
+
+-- | 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.
+--
+-- /See:/ 'status' smart constructor.
+data Status =
+  Status'
+    { _sDetails :: !(Maybe [StatusDetailsItem])
+    , _sCode    :: !(Maybe (Textual Int32))
+    , _sMessage :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Status' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDetails'
+--
+-- * 'sCode'
+--
+-- * 'sMessage'
+status
+    :: Status
+status = Status' {_sDetails = Nothing, _sCode = Nothing, _sMessage = Nothing}
+
+
+-- | A list of messages that carry the error details. There is a common set
+-- of message types for APIs to use.
+sDetails :: Lens' Status [StatusDetailsItem]
+sDetails
+  = lens _sDetails (\ s a -> s{_sDetails = a}) .
+      _Default
+      . _Coerce
+
+-- | The status code, which should be an enum value of google.rpc.Code.
+sCode :: Lens' Status (Maybe Int32)
+sCode
+  = lens _sCode (\ s a -> s{_sCode = a}) .
+      mapping _Coerce
+
+-- | 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.
+sMessage :: Lens' Status (Maybe Text)
+sMessage = lens _sMessage (\ s a -> s{_sMessage = a})
+
+instance FromJSON Status where
+        parseJSON
+          = withObject "Status"
+              (\ o ->
+                 Status' <$>
+                   (o .:? "details" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON Status where
+        toJSON Status'{..}
+          = object
+              (catMaybes
+                 [("details" .=) <$> _sDetails,
+                  ("code" .=) <$> _sCode,
+                  ("message" .=) <$> _sMessage])
+
+-- | 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.
+--
+-- /See:/ 'googleLongrunningOperationMetadata' smart constructor.
+newtype GoogleLongrunningOperationMetadata =
+  GoogleLongrunningOperationMetadata'
+    { _glomAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleLongrunningOperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glomAddtional'
+googleLongrunningOperationMetadata
+    :: HashMap Text JSONValue -- ^ 'glomAddtional'
+    -> GoogleLongrunningOperationMetadata
+googleLongrunningOperationMetadata pGlomAddtional_ =
+  GoogleLongrunningOperationMetadata'
+    {_glomAddtional = _Coerce # pGlomAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+glomAddtional :: Lens' GoogleLongrunningOperationMetadata (HashMap Text JSONValue)
+glomAddtional
+  = lens _glomAddtional
+      (\ s a -> s{_glomAddtional = a})
+      . _Coerce
+
+instance FromJSON GoogleLongrunningOperationMetadata
+         where
+        parseJSON
+          = withObject "GoogleLongrunningOperationMetadata"
+              (\ o ->
+                 GoogleLongrunningOperationMetadata' <$>
+                   (parseJSONObject o))
+
+instance ToJSON GoogleLongrunningOperationMetadata
+         where
+        toJSON = toJSON . _glomAddtional
+
+-- | A precondition on a document, used for conditional operations.
+--
+-- /See:/ 'precondition' smart constructor.
+data Precondition =
+  Precondition'
+    { _pExists     :: !(Maybe Bool)
+    , _pUpdateTime :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Precondition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pExists'
+--
+-- * 'pUpdateTime'
+precondition
+    :: Precondition
+precondition = Precondition' {_pExists = Nothing, _pUpdateTime = Nothing}
+
+
+-- | When set to \`true\`, the target document must exist. When set to
+-- \`false\`, the target document must not exist.
+pExists :: Lens' Precondition (Maybe Bool)
+pExists = lens _pExists (\ s a -> s{_pExists = a})
+
+-- | When set, the target document must exist and have been last updated at
+-- that time.
+pUpdateTime :: Lens' Precondition (Maybe UTCTime)
+pUpdateTime
+  = lens _pUpdateTime (\ s a -> s{_pUpdateTime = a}) .
+      mapping _DateTime
+
+instance FromJSON Precondition where
+        parseJSON
+          = withObject "Precondition"
+              (\ o ->
+                 Precondition' <$>
+                   (o .:? "exists") <*> (o .:? "updateTime"))
+
+instance ToJSON Precondition where
+        toJSON Precondition'{..}
+          = object
+              (catMaybes
+                 [("exists" .=) <$> _pExists,
+                  ("updateTime" .=) <$> _pUpdateTime])
+
+-- | Options for a transaction that can be used to read and write documents.
+--
+-- /See:/ 'readWrite' smart constructor.
+newtype ReadWrite =
+  ReadWrite'
+    { _rwRetryTransaction :: Maybe Bytes
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ReadWrite' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwRetryTransaction'
+readWrite
+    :: ReadWrite
+readWrite = ReadWrite' {_rwRetryTransaction = Nothing}
+
+
+-- | An optional transaction to retry.
+rwRetryTransaction :: Lens' ReadWrite (Maybe ByteString)
+rwRetryTransaction
+  = lens _rwRetryTransaction
+      (\ s a -> s{_rwRetryTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON ReadWrite where
+        parseJSON
+          = withObject "ReadWrite"
+              (\ o -> ReadWrite' <$> (o .:? "retryTransaction"))
+
+instance ToJSON ReadWrite where
+        toJSON ReadWrite'{..}
+          = object
+              (catMaybes
+                 [("retryTransaction" .=) <$> _rwRetryTransaction])
+
+-- | The request for Firestore.Rollback.
+--
+-- /See:/ 'rollbackRequest' smart constructor.
+newtype RollbackRequest =
+  RollbackRequest'
+    { _rrTransaction :: Maybe Bytes
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RollbackRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrTransaction'
+rollbackRequest
+    :: RollbackRequest
+rollbackRequest = RollbackRequest' {_rrTransaction = Nothing}
+
+
+-- | The transaction to roll back.
+rrTransaction :: Lens' RollbackRequest (Maybe ByteString)
+rrTransaction
+  = lens _rrTransaction
+      (\ s a -> s{_rrTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON RollbackRequest where
+        parseJSON
+          = withObject "RollbackRequest"
+              (\ o -> RollbackRequest' <$> (o .:? "transaction"))
+
+instance ToJSON RollbackRequest where
+        toJSON RollbackRequest'{..}
+          = object
+              (catMaybes [("transaction" .=) <$> _rrTransaction])
+
+-- | The request for FirestoreAdmin.ExportDocuments.
+--
+-- /See:/ 'googleFirestoreAdminV1ExportDocumentsRequest' smart constructor.
+data GoogleFirestoreAdminV1ExportDocumentsRequest =
+  GoogleFirestoreAdminV1ExportDocumentsRequest'
+    { _gfavedrCollectionIds   :: !(Maybe [Text])
+    , _gfavedrOutputURIPrefix :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ExportDocumentsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavedrCollectionIds'
+--
+-- * 'gfavedrOutputURIPrefix'
+googleFirestoreAdminV1ExportDocumentsRequest
+    :: GoogleFirestoreAdminV1ExportDocumentsRequest
+googleFirestoreAdminV1ExportDocumentsRequest =
+  GoogleFirestoreAdminV1ExportDocumentsRequest'
+    {_gfavedrCollectionIds = Nothing, _gfavedrOutputURIPrefix = Nothing}
+
+
+-- | Which collection ids to export. Unspecified means all collections.
+gfavedrCollectionIds :: Lens' GoogleFirestoreAdminV1ExportDocumentsRequest [Text]
+gfavedrCollectionIds
+  = lens _gfavedrCollectionIds
+      (\ s a -> s{_gfavedrCollectionIds = a})
+      . _Default
+      . _Coerce
+
+-- | 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.
+gfavedrOutputURIPrefix :: Lens' GoogleFirestoreAdminV1ExportDocumentsRequest (Maybe Text)
+gfavedrOutputURIPrefix
+  = lens _gfavedrOutputURIPrefix
+      (\ s a -> s{_gfavedrOutputURIPrefix = a})
+
+instance FromJSON
+           GoogleFirestoreAdminV1ExportDocumentsRequest
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ExportDocumentsRequest"
+              (\ o ->
+                 GoogleFirestoreAdminV1ExportDocumentsRequest' <$>
+                   (o .:? "collectionIds" .!= mempty) <*>
+                     (o .:? "outputUriPrefix"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ExportDocumentsRequest
+         where
+        toJSON
+          GoogleFirestoreAdminV1ExportDocumentsRequest'{..}
+          = object
+              (catMaybes
+                 [("collectionIds" .=) <$> _gfavedrCollectionIds,
+                  ("outputUriPrefix" .=) <$> _gfavedrOutputURIPrefix])
+
+-- | Targets being watched have changed.
+--
+-- /See:/ 'targetChange' smart constructor.
+data TargetChange =
+  TargetChange'
+    { _tcReadTime         :: !(Maybe DateTime')
+    , _tcResumeToken      :: !(Maybe Bytes)
+    , _tcCause            :: !(Maybe Status)
+    , _tcTargetChangeType :: !(Maybe TargetChangeTargetChangeType)
+    , _tcTargetIds        :: !(Maybe [Textual Int32])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TargetChange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcReadTime'
+--
+-- * 'tcResumeToken'
+--
+-- * 'tcCause'
+--
+-- * 'tcTargetChangeType'
+--
+-- * 'tcTargetIds'
+targetChange
+    :: TargetChange
+targetChange =
+  TargetChange'
+    { _tcReadTime = Nothing
+    , _tcResumeToken = Nothing
+    , _tcCause = Nothing
+    , _tcTargetChangeType = Nothing
+    , _tcTargetIds = Nothing
+    }
+
+
+-- | 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.
+tcReadTime :: Lens' TargetChange (Maybe UTCTime)
+tcReadTime
+  = lens _tcReadTime (\ s a -> s{_tcReadTime = a}) .
+      mapping _DateTime
+
+-- | 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.
+tcResumeToken :: Lens' TargetChange (Maybe ByteString)
+tcResumeToken
+  = lens _tcResumeToken
+      (\ s a -> s{_tcResumeToken = a})
+      . mapping _Bytes
+
+-- | The error that resulted in this change, if applicable.
+tcCause :: Lens' TargetChange (Maybe Status)
+tcCause = lens _tcCause (\ s a -> s{_tcCause = a})
+
+-- | The type of change that occurred.
+tcTargetChangeType :: Lens' TargetChange (Maybe TargetChangeTargetChangeType)
+tcTargetChangeType
+  = lens _tcTargetChangeType
+      (\ s a -> s{_tcTargetChangeType = a})
+
+-- | 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.
+tcTargetIds :: Lens' TargetChange [Int32]
+tcTargetIds
+  = lens _tcTargetIds (\ s a -> s{_tcTargetIds = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON TargetChange where
+        parseJSON
+          = withObject "TargetChange"
+              (\ o ->
+                 TargetChange' <$>
+                   (o .:? "readTime") <*> (o .:? "resumeToken") <*>
+                     (o .:? "cause")
+                     <*> (o .:? "targetChangeType")
+                     <*> (o .:? "targetIds" .!= mempty))
+
+instance ToJSON TargetChange where
+        toJSON TargetChange'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _tcReadTime,
+                  ("resumeToken" .=) <$> _tcResumeToken,
+                  ("cause" .=) <$> _tcCause,
+                  ("targetChangeType" .=) <$> _tcTargetChangeType,
+                  ("targetIds" .=) <$> _tcTargetIds])
+
+-- | The response message for Locations.ListLocations.
+--
+-- /See:/ 'listLocationsResponse' smart constructor.
+data ListLocationsResponse =
+  ListLocationsResponse'
+    { _llrNextPageToken :: !(Maybe Text)
+    , _llrLocations     :: !(Maybe [Location])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListLocationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrNextPageToken'
+--
+-- * 'llrLocations'
+listLocationsResponse
+    :: ListLocationsResponse
+listLocationsResponse =
+  ListLocationsResponse' {_llrNextPageToken = Nothing, _llrLocations = Nothing}
+
+
+-- | The standard List next-page token.
+llrNextPageToken :: Lens' ListLocationsResponse (Maybe Text)
+llrNextPageToken
+  = lens _llrNextPageToken
+      (\ s a -> s{_llrNextPageToken = a})
+
+-- | A list of locations that matches the specified filter in the request.
+llrLocations :: Lens' ListLocationsResponse [Location]
+llrLocations
+  = lens _llrLocations (\ s a -> s{_llrLocations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListLocationsResponse where
+        parseJSON
+          = withObject "ListLocationsResponse"
+              (\ o ->
+                 ListLocationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "locations" .!= mempty))
+
+instance ToJSON ListLocationsResponse where
+        toJSON ListLocationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _llrNextPageToken,
+                  ("locations" .=) <$> _llrLocations])
+
+-- | A position in a query result set.
+--
+-- /See:/ 'cursor' smart constructor.
+data Cursor =
+  Cursor'
+    { _cValues :: !(Maybe [Value])
+    , _cBefore :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Cursor' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cValues'
+--
+-- * 'cBefore'
+cursor
+    :: Cursor
+cursor = Cursor' {_cValues = Nothing, _cBefore = Nothing}
+
+
+-- | 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.
+cValues :: Lens' Cursor [Value]
+cValues
+  = lens _cValues (\ s a -> s{_cValues = a}) . _Default
+      . _Coerce
+
+-- | If the position is just before or just after the given values, relative
+-- to the sort order defined by the query.
+cBefore :: Lens' Cursor (Maybe Bool)
+cBefore = lens _cBefore (\ s a -> s{_cBefore = a})
+
+instance FromJSON Cursor where
+        parseJSON
+          = withObject "Cursor"
+              (\ o ->
+                 Cursor' <$>
+                   (o .:? "values" .!= mempty) <*> (o .:? "before"))
+
+instance ToJSON Cursor where
+        toJSON Cursor'{..}
+          = object
+              (catMaybes
+                 [("values" .=) <$> _cValues,
+                  ("before" .=) <$> _cBefore])
+
+-- | Metadata for google.longrunning.Operation results from
+-- FirestoreAdmin.ImportDocuments.
+--
+-- /See:/ 'googleFirestoreAdminV1ImportDocumentsMetadata' smart constructor.
+data GoogleFirestoreAdminV1ImportDocumentsMetadata =
+  GoogleFirestoreAdminV1ImportDocumentsMetadata'
+    { _gfavidmProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfavidmStartTime         :: !(Maybe DateTime')
+    , _gfavidmInputURIPrefix    :: !(Maybe Text)
+    , _gfavidmCollectionIds     :: !(Maybe [Text])
+    , _gfavidmProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfavidmEndTime           :: !(Maybe DateTime')
+    , _gfavidmOperationState    :: !(Maybe GoogleFirestoreAdminV1ImportDocumentsMetadataOperationState)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ImportDocumentsMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavidmProgressBytes'
+--
+-- * 'gfavidmStartTime'
+--
+-- * 'gfavidmInputURIPrefix'
+--
+-- * 'gfavidmCollectionIds'
+--
+-- * 'gfavidmProgressDocuments'
+--
+-- * 'gfavidmEndTime'
+--
+-- * 'gfavidmOperationState'
+googleFirestoreAdminV1ImportDocumentsMetadata
+    :: GoogleFirestoreAdminV1ImportDocumentsMetadata
+googleFirestoreAdminV1ImportDocumentsMetadata =
+  GoogleFirestoreAdminV1ImportDocumentsMetadata'
+    { _gfavidmProgressBytes = Nothing
+    , _gfavidmStartTime = Nothing
+    , _gfavidmInputURIPrefix = Nothing
+    , _gfavidmCollectionIds = Nothing
+    , _gfavidmProgressDocuments = Nothing
+    , _gfavidmEndTime = Nothing
+    , _gfavidmOperationState = Nothing
+    }
+
+
+-- | The progress, in bytes, of this operation.
+gfavidmProgressBytes :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfavidmProgressBytes
+  = lens _gfavidmProgressBytes
+      (\ s a -> s{_gfavidmProgressBytes = a})
+
+-- | The time this operation started.
+gfavidmStartTime :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe UTCTime)
+gfavidmStartTime
+  = lens _gfavidmStartTime
+      (\ s a -> s{_gfavidmStartTime = a})
+      . mapping _DateTime
+
+-- | The location of the documents being imported.
+gfavidmInputURIPrefix :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe Text)
+gfavidmInputURIPrefix
+  = lens _gfavidmInputURIPrefix
+      (\ s a -> s{_gfavidmInputURIPrefix = a})
+
+-- | Which collection ids are being imported.
+gfavidmCollectionIds :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata [Text]
+gfavidmCollectionIds
+  = lens _gfavidmCollectionIds
+      (\ s a -> s{_gfavidmCollectionIds = a})
+      . _Default
+      . _Coerce
+
+-- | The progress, in documents, of this operation.
+gfavidmProgressDocuments :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfavidmProgressDocuments
+  = lens _gfavidmProgressDocuments
+      (\ s a -> s{_gfavidmProgressDocuments = a})
+
+-- | The time this operation completed. Will be unset if operation still in
+-- progress.
+gfavidmEndTime :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe UTCTime)
+gfavidmEndTime
+  = lens _gfavidmEndTime
+      (\ s a -> s{_gfavidmEndTime = a})
+      . mapping _DateTime
+
+-- | The state of the import operation.
+gfavidmOperationState :: Lens' GoogleFirestoreAdminV1ImportDocumentsMetadata (Maybe GoogleFirestoreAdminV1ImportDocumentsMetadataOperationState)
+gfavidmOperationState
+  = lens _gfavidmOperationState
+      (\ s a -> s{_gfavidmOperationState = a})
+
+instance FromJSON
+           GoogleFirestoreAdminV1ImportDocumentsMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ImportDocumentsMetadata"
+              (\ o ->
+                 GoogleFirestoreAdminV1ImportDocumentsMetadata' <$>
+                   (o .:? "progressBytes") <*> (o .:? "startTime") <*>
+                     (o .:? "inputUriPrefix")
+                     <*> (o .:? "collectionIds" .!= mempty)
+                     <*> (o .:? "progressDocuments")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "operationState"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ImportDocumentsMetadata
+         where
+        toJSON
+          GoogleFirestoreAdminV1ImportDocumentsMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gfavidmProgressBytes,
+                  ("startTime" .=) <$> _gfavidmStartTime,
+                  ("inputUriPrefix" .=) <$> _gfavidmInputURIPrefix,
+                  ("collectionIds" .=) <$> _gfavidmCollectionIds,
+                  ("progressDocuments" .=) <$>
+                    _gfavidmProgressDocuments,
+                  ("endTime" .=) <$> _gfavidmEndTime,
+                  ("operationState" .=) <$> _gfavidmOperationState])
+
+-- | The request for Firestore.BeginTransaction.
+--
+-- /See:/ 'beginTransactionRequest' smart constructor.
+newtype BeginTransactionRequest =
+  BeginTransactionRequest'
+    { _btrOptions :: Maybe TransactionOptions
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BeginTransactionRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'btrOptions'
+beginTransactionRequest
+    :: BeginTransactionRequest
+beginTransactionRequest = BeginTransactionRequest' {_btrOptions = Nothing}
+
+
+-- | The options for the transaction. Defaults to a read-write transaction.
+btrOptions :: Lens' BeginTransactionRequest (Maybe TransactionOptions)
+btrOptions
+  = lens _btrOptions (\ s a -> s{_btrOptions = a})
+
+instance FromJSON BeginTransactionRequest where
+        parseJSON
+          = withObject "BeginTransactionRequest"
+              (\ o ->
+                 BeginTransactionRequest' <$> (o .:? "options"))
+
+instance ToJSON BeginTransactionRequest where
+        toJSON BeginTransactionRequest'{..}
+          = object (catMaybes [("options" .=) <$> _btrOptions])
+
+-- | The request for Firestore.RunQuery.
+--
+-- /See:/ 'runQueryRequest' smart constructor.
+data RunQueryRequest =
+  RunQueryRequest'
+    { _rqrReadTime        :: !(Maybe DateTime')
+    , _rqrNewTransaction  :: !(Maybe TransactionOptions)
+    , _rqrStructuredQuery :: !(Maybe StructuredQuery)
+    , _rqrTransaction     :: !(Maybe Bytes)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RunQueryRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rqrReadTime'
+--
+-- * 'rqrNewTransaction'
+--
+-- * 'rqrStructuredQuery'
+--
+-- * 'rqrTransaction'
+runQueryRequest
+    :: RunQueryRequest
+runQueryRequest =
+  RunQueryRequest'
+    { _rqrReadTime = Nothing
+    , _rqrNewTransaction = Nothing
+    , _rqrStructuredQuery = Nothing
+    , _rqrTransaction = Nothing
+    }
+
+
+-- | Reads documents as they were at the given time. This may not be older
+-- than 60 seconds.
+rqrReadTime :: Lens' RunQueryRequest (Maybe UTCTime)
+rqrReadTime
+  = lens _rqrReadTime (\ s a -> s{_rqrReadTime = a}) .
+      mapping _DateTime
+
+-- | 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.
+rqrNewTransaction :: Lens' RunQueryRequest (Maybe TransactionOptions)
+rqrNewTransaction
+  = lens _rqrNewTransaction
+      (\ s a -> s{_rqrNewTransaction = a})
+
+-- | A structured query.
+rqrStructuredQuery :: Lens' RunQueryRequest (Maybe StructuredQuery)
+rqrStructuredQuery
+  = lens _rqrStructuredQuery
+      (\ s a -> s{_rqrStructuredQuery = a})
+
+-- | Reads documents in a transaction.
+rqrTransaction :: Lens' RunQueryRequest (Maybe ByteString)
+rqrTransaction
+  = lens _rqrTransaction
+      (\ s a -> s{_rqrTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON RunQueryRequest where
+        parseJSON
+          = withObject "RunQueryRequest"
+              (\ o ->
+                 RunQueryRequest' <$>
+                   (o .:? "readTime") <*> (o .:? "newTransaction") <*>
+                     (o .:? "structuredQuery")
+                     <*> (o .:? "transaction"))
+
+instance ToJSON RunQueryRequest where
+        toJSON RunQueryRequest'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _rqrReadTime,
+                  ("newTransaction" .=) <$> _rqrNewTransaction,
+                  ("structuredQuery" .=) <$> _rqrStructuredQuery,
+                  ("transaction" .=) <$> _rqrTransaction])
+
+-- | Information about an index configuration change.
+--
+-- /See:/ 'googleFirestoreAdminV1IndexConfigDelta' smart constructor.
+data GoogleFirestoreAdminV1IndexConfigDelta =
+  GoogleFirestoreAdminV1IndexConfigDelta'
+    { _gfavicdIndex      :: !(Maybe GoogleFirestoreAdminV1Index)
+    , _gfavicdChangeType :: !(Maybe GoogleFirestoreAdminV1IndexConfigDeltaChangeType)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1IndexConfigDelta' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavicdIndex'
+--
+-- * 'gfavicdChangeType'
+googleFirestoreAdminV1IndexConfigDelta
+    :: GoogleFirestoreAdminV1IndexConfigDelta
+googleFirestoreAdminV1IndexConfigDelta =
+  GoogleFirestoreAdminV1IndexConfigDelta'
+    {_gfavicdIndex = Nothing, _gfavicdChangeType = Nothing}
+
+
+-- | The index being changed.
+gfavicdIndex :: Lens' GoogleFirestoreAdminV1IndexConfigDelta (Maybe GoogleFirestoreAdminV1Index)
+gfavicdIndex
+  = lens _gfavicdIndex (\ s a -> s{_gfavicdIndex = a})
+
+-- | Specifies how the index is changing.
+gfavicdChangeType :: Lens' GoogleFirestoreAdminV1IndexConfigDelta (Maybe GoogleFirestoreAdminV1IndexConfigDeltaChangeType)
+gfavicdChangeType
+  = lens _gfavicdChangeType
+      (\ s a -> s{_gfavicdChangeType = a})
+
+instance FromJSON
+           GoogleFirestoreAdminV1IndexConfigDelta
+         where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1IndexConfigDelta"
+              (\ o ->
+                 GoogleFirestoreAdminV1IndexConfigDelta' <$>
+                   (o .:? "index") <*> (o .:? "changeType"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1IndexConfigDelta
+         where
+        toJSON GoogleFirestoreAdminV1IndexConfigDelta'{..}
+          = object
+              (catMaybes
+                 [("index" .=) <$> _gfavicdIndex,
+                  ("changeType" .=) <$> _gfavicdChangeType])
+
+-- | The index configuration for this field.
+--
+-- /See:/ 'googleFirestoreAdminV1IndexConfig' smart constructor.
+data GoogleFirestoreAdminV1IndexConfig =
+  GoogleFirestoreAdminV1IndexConfig'
+    { _gfavicAncestorField      :: !(Maybe Text)
+    , _gfavicReverting          :: !(Maybe Bool)
+    , _gfavicIndexes            :: !(Maybe [GoogleFirestoreAdminV1Index])
+    , _gfavicUsesAncestorConfig :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1IndexConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavicAncestorField'
+--
+-- * 'gfavicReverting'
+--
+-- * 'gfavicIndexes'
+--
+-- * 'gfavicUsesAncestorConfig'
+googleFirestoreAdminV1IndexConfig
+    :: GoogleFirestoreAdminV1IndexConfig
+googleFirestoreAdminV1IndexConfig =
+  GoogleFirestoreAdminV1IndexConfig'
+    { _gfavicAncestorField = Nothing
+    , _gfavicReverting = Nothing
+    , _gfavicIndexes = Nothing
+    , _gfavicUsesAncestorConfig = Nothing
+    }
+
+
+-- | 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).
+gfavicAncestorField :: Lens' GoogleFirestoreAdminV1IndexConfig (Maybe Text)
+gfavicAncestorField
+  = lens _gfavicAncestorField
+      (\ s a -> s{_gfavicAncestorField = a})
+
+-- | 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\`.
+gfavicReverting :: Lens' GoogleFirestoreAdminV1IndexConfig (Maybe Bool)
+gfavicReverting
+  = lens _gfavicReverting
+      (\ s a -> s{_gfavicReverting = a})
+
+-- | The indexes supported for this field.
+gfavicIndexes :: Lens' GoogleFirestoreAdminV1IndexConfig [GoogleFirestoreAdminV1Index]
+gfavicIndexes
+  = lens _gfavicIndexes
+      (\ s a -> s{_gfavicIndexes = a})
+      . _Default
+      . _Coerce
+
+-- | 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.
+gfavicUsesAncestorConfig :: Lens' GoogleFirestoreAdminV1IndexConfig (Maybe Bool)
+gfavicUsesAncestorConfig
+  = lens _gfavicUsesAncestorConfig
+      (\ s a -> s{_gfavicUsesAncestorConfig = a})
+
+instance FromJSON GoogleFirestoreAdminV1IndexConfig
+         where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1IndexConfig"
+              (\ o ->
+                 GoogleFirestoreAdminV1IndexConfig' <$>
+                   (o .:? "ancestorField") <*> (o .:? "reverting") <*>
+                     (o .:? "indexes" .!= mempty)
+                     <*> (o .:? "usesAncestorConfig"))
+
+instance ToJSON GoogleFirestoreAdminV1IndexConfig
+         where
+        toJSON GoogleFirestoreAdminV1IndexConfig'{..}
+          = object
+              (catMaybes
+                 [("ancestorField" .=) <$> _gfavicAncestorField,
+                  ("reverting" .=) <$> _gfavicReverting,
+                  ("indexes" .=) <$> _gfavicIndexes,
+                  ("usesAncestorConfig" .=) <$>
+                    _gfavicUsesAncestorConfig])
+
+-- | A field in an index. The field_path describes which field is indexed,
+-- the value_mode describes how the field value is indexed.
+--
+-- /See:/ 'googleFirestoreAdminV1IndexField' smart constructor.
+data GoogleFirestoreAdminV1IndexField =
+  GoogleFirestoreAdminV1IndexField'
+    { _gfavifFieldPath   :: !(Maybe Text)
+    , _gfavifArrayConfig :: !(Maybe GoogleFirestoreAdminV1IndexFieldArrayConfig)
+    , _gfavifOrder       :: !(Maybe GoogleFirestoreAdminV1IndexFieldOrder)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1IndexField' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavifFieldPath'
+--
+-- * 'gfavifArrayConfig'
+--
+-- * 'gfavifOrder'
+googleFirestoreAdminV1IndexField
+    :: GoogleFirestoreAdminV1IndexField
+googleFirestoreAdminV1IndexField =
+  GoogleFirestoreAdminV1IndexField'
+    { _gfavifFieldPath = Nothing
+    , _gfavifArrayConfig = Nothing
+    , _gfavifOrder = Nothing
+    }
+
+
+-- | Can be __name__. For single field indexes, this must match the name of
+-- the field or may be omitted.
+gfavifFieldPath :: Lens' GoogleFirestoreAdminV1IndexField (Maybe Text)
+gfavifFieldPath
+  = lens _gfavifFieldPath
+      (\ s a -> s{_gfavifFieldPath = a})
+
+-- | Indicates that this field supports operations on \`array_value\`s.
+gfavifArrayConfig :: Lens' GoogleFirestoreAdminV1IndexField (Maybe GoogleFirestoreAdminV1IndexFieldArrayConfig)
+gfavifArrayConfig
+  = lens _gfavifArrayConfig
+      (\ s a -> s{_gfavifArrayConfig = a})
+
+-- | Indicates that this field supports ordering by the specified order or
+-- comparing using =, \<, \<=, >, >=.
+gfavifOrder :: Lens' GoogleFirestoreAdminV1IndexField (Maybe GoogleFirestoreAdminV1IndexFieldOrder)
+gfavifOrder
+  = lens _gfavifOrder (\ s a -> s{_gfavifOrder = a})
+
+instance FromJSON GoogleFirestoreAdminV1IndexField
+         where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1IndexField"
+              (\ o ->
+                 GoogleFirestoreAdminV1IndexField' <$>
+                   (o .:? "fieldPath") <*> (o .:? "arrayConfig") <*>
+                     (o .:? "order"))
+
+instance ToJSON GoogleFirestoreAdminV1IndexField
+         where
+        toJSON GoogleFirestoreAdminV1IndexField'{..}
+          = object
+              (catMaybes
+                 [("fieldPath" .=) <$> _gfavifFieldPath,
+                  ("arrayConfig" .=) <$> _gfavifArrayConfig,
+                  ("order" .=) <$> _gfavifOrder])
+
+-- | A write on a document.
+--
+-- /See:/ 'write' smart constructor.
+data Write =
+  Write'
+    { _wTransform       :: !(Maybe DocumentTransform)
+    , _wUpdateMask      :: !(Maybe DocumentMask)
+    , _wCurrentDocument :: !(Maybe Precondition)
+    , _wDelete          :: !(Maybe Text)
+    , _wUpdate          :: !(Maybe Document)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Write' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wTransform'
+--
+-- * 'wUpdateMask'
+--
+-- * 'wCurrentDocument'
+--
+-- * 'wDelete'
+--
+-- * 'wUpdate'
+write
+    :: Write
+write =
+  Write'
+    { _wTransform = Nothing
+    , _wUpdateMask = Nothing
+    , _wCurrentDocument = Nothing
+    , _wDelete = Nothing
+    , _wUpdate = Nothing
+    }
+
+
+-- | 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.
+wTransform :: Lens' Write (Maybe DocumentTransform)
+wTransform
+  = lens _wTransform (\ s a -> s{_wTransform = a})
+
+-- | 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.
+wUpdateMask :: Lens' Write (Maybe DocumentMask)
+wUpdateMask
+  = lens _wUpdateMask (\ s a -> s{_wUpdateMask = a})
+
+-- | An optional precondition on the document. The write will fail if this is
+-- set and not met by the target document.
+wCurrentDocument :: Lens' Write (Maybe Precondition)
+wCurrentDocument
+  = lens _wCurrentDocument
+      (\ s a -> s{_wCurrentDocument = a})
+
+-- | A document name to delete. In the format:
+-- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
+wDelete :: Lens' Write (Maybe Text)
+wDelete = lens _wDelete (\ s a -> s{_wDelete = a})
+
+-- | A document to write.
+wUpdate :: Lens' Write (Maybe Document)
+wUpdate = lens _wUpdate (\ s a -> s{_wUpdate = a})
+
+instance FromJSON Write where
+        parseJSON
+          = withObject "Write"
+              (\ o ->
+                 Write' <$>
+                   (o .:? "transform") <*> (o .:? "updateMask") <*>
+                     (o .:? "currentDocument")
+                     <*> (o .:? "delete")
+                     <*> (o .:? "update"))
+
+instance ToJSON Write where
+        toJSON Write'{..}
+          = object
+              (catMaybes
+                 [("transform" .=) <$> _wTransform,
+                  ("updateMask" .=) <$> _wUpdateMask,
+                  ("currentDocument" .=) <$> _wCurrentDocument,
+                  ("delete" .=) <$> _wDelete,
+                  ("update" .=) <$> _wUpdate])
+
+-- | A resource that represents Google Cloud Platform location.
+--
+-- /See:/ 'location' smart constructor.
+data Location =
+  Location'
+    { _lName        :: !(Maybe Text)
+    , _lMetadata    :: !(Maybe LocationMetadata)
+    , _lDisplayName :: !(Maybe Text)
+    , _lLabels      :: !(Maybe LocationLabels)
+    , _lLocationId  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lName'
+--
+-- * 'lMetadata'
+--
+-- * 'lDisplayName'
+--
+-- * 'lLabels'
+--
+-- * 'lLocationId'
+location
+    :: Location
+location =
+  Location'
+    { _lName = Nothing
+    , _lMetadata = Nothing
+    , _lDisplayName = Nothing
+    , _lLabels = Nothing
+    , _lLocationId = Nothing
+    }
+
+
+-- | Resource name for the location, which may vary between implementations.
+-- For example: \`\"projects\/example-project\/locations\/us-east1\"\`
+lName :: Lens' Location (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+lMetadata :: Lens' Location (Maybe LocationMetadata)
+lMetadata
+  = lens _lMetadata (\ s a -> s{_lMetadata = a})
+
+-- | The friendly name for this location, typically a nearby city name. For
+-- example, \"Tokyo\".
+lDisplayName :: Lens' Location (Maybe Text)
+lDisplayName
+  = lens _lDisplayName (\ s a -> s{_lDisplayName = a})
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+lLabels :: Lens' Location (Maybe LocationLabels)
+lLabels = lens _lLabels (\ s a -> s{_lLabels = a})
+
+-- | The canonical id for this location. For example: \`\"us-east1\"\`.
+lLocationId :: Lens' Location (Maybe Text)
+lLocationId
+  = lens _lLocationId (\ s a -> s{_lLocationId = a})
+
+instance FromJSON Location where
+        parseJSON
+          = withObject "Location"
+              (\ o ->
+                 Location' <$>
+                   (o .:? "name") <*> (o .:? "metadata") <*>
+                     (o .:? "displayName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "locationId"))
+
+instance ToJSON Location where
+        toJSON Location'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _lName,
+                  ("metadata" .=) <$> _lMetadata,
+                  ("displayName" .=) <$> _lDisplayName,
+                  ("labels" .=) <$> _lLabels,
+                  ("locationId" .=) <$> _lLocationId])
+
+-- | 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 \`{}\`.
+--
+-- /See:/ 'empty' smart constructor.
+data Empty =
+  Empty'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+--
+empty
+    :: Empty
+empty = Empty'
+
+
+instance FromJSON Empty where
+        parseJSON = withObject "Empty" (\ o -> pure Empty')
+
+instance ToJSON Empty where
+        toJSON = const emptyObject
+
+-- | The streamed response for Firestore.BatchGetDocuments.
+--
+-- /See:/ 'batchGetDocumentsResponse' smart constructor.
+data BatchGetDocumentsResponse =
+  BatchGetDocumentsResponse'
+    { _bgdrReadTime    :: !(Maybe DateTime')
+    , _bgdrFound       :: !(Maybe Document)
+    , _bgdrTransaction :: !(Maybe Bytes)
+    , _bgdrMissing     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BatchGetDocumentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bgdrReadTime'
+--
+-- * 'bgdrFound'
+--
+-- * 'bgdrTransaction'
+--
+-- * 'bgdrMissing'
+batchGetDocumentsResponse
+    :: BatchGetDocumentsResponse
+batchGetDocumentsResponse =
+  BatchGetDocumentsResponse'
+    { _bgdrReadTime = Nothing
+    , _bgdrFound = Nothing
+    , _bgdrTransaction = Nothing
+    , _bgdrMissing = Nothing
+    }
+
+
+-- | 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.
+bgdrReadTime :: Lens' BatchGetDocumentsResponse (Maybe UTCTime)
+bgdrReadTime
+  = lens _bgdrReadTime (\ s a -> s{_bgdrReadTime = a})
+      . mapping _DateTime
+
+-- | A document that was requested.
+bgdrFound :: Lens' BatchGetDocumentsResponse (Maybe Document)
+bgdrFound
+  = lens _bgdrFound (\ s a -> s{_bgdrFound = a})
+
+-- | 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.
+bgdrTransaction :: Lens' BatchGetDocumentsResponse (Maybe ByteString)
+bgdrTransaction
+  = lens _bgdrTransaction
+      (\ s a -> s{_bgdrTransaction = a})
+      . mapping _Bytes
+
+-- | A document name that was requested but does not exist. In the format:
+-- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
+bgdrMissing :: Lens' BatchGetDocumentsResponse (Maybe Text)
+bgdrMissing
+  = lens _bgdrMissing (\ s a -> s{_bgdrMissing = a})
+
+instance FromJSON BatchGetDocumentsResponse where
+        parseJSON
+          = withObject "BatchGetDocumentsResponse"
+              (\ o ->
+                 BatchGetDocumentsResponse' <$>
+                   (o .:? "readTime") <*> (o .:? "found") <*>
+                     (o .:? "transaction")
+                     <*> (o .:? "missing"))
+
+instance ToJSON BatchGetDocumentsResponse where
+        toJSON BatchGetDocumentsResponse'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _bgdrReadTime,
+                  ("found" .=) <$> _bgdrFound,
+                  ("transaction" .=) <$> _bgdrTransaction,
+                  ("missing" .=) <$> _bgdrMissing])
+
+-- | A filter that merges multiple other filters using the given operator.
+--
+-- /See:/ 'compositeFilter' smart constructor.
+data CompositeFilter =
+  CompositeFilter'
+    { _cfOp      :: !(Maybe CompositeFilterOp)
+    , _cfFilters :: !(Maybe [Filter])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CompositeFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cfOp'
+--
+-- * 'cfFilters'
+compositeFilter
+    :: CompositeFilter
+compositeFilter = CompositeFilter' {_cfOp = Nothing, _cfFilters = Nothing}
+
+
+-- | The operator for combining multiple filters.
+cfOp :: Lens' CompositeFilter (Maybe CompositeFilterOp)
+cfOp = lens _cfOp (\ s a -> s{_cfOp = a})
+
+-- | The list of filters to combine. Must contain at least one filter.
+cfFilters :: Lens' CompositeFilter [Filter]
+cfFilters
+  = lens _cfFilters (\ s a -> s{_cfFilters = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON CompositeFilter where
+        parseJSON
+          = withObject "CompositeFilter"
+              (\ o ->
+                 CompositeFilter' <$>
+                   (o .:? "op") <*> (o .:? "filters" .!= mempty))
+
+instance ToJSON CompositeFilter where
+        toJSON CompositeFilter'{..}
+          = object
+              (catMaybes
+                 [("op" .=) <$> _cfOp, ("filters" .=) <$> _cfFilters])
+
+-- | A target specified by a set of documents names.
+--
+-- /See:/ 'documentsTarget' smart constructor.
+newtype DocumentsTarget =
+  DocumentsTarget'
+    { _dtDocuments :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentsTarget' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtDocuments'
+documentsTarget
+    :: DocumentsTarget
+documentsTarget = DocumentsTarget' {_dtDocuments = Nothing}
+
+
+-- | 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.
+dtDocuments :: Lens' DocumentsTarget [Text]
+dtDocuments
+  = lens _dtDocuments (\ s a -> s{_dtDocuments = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON DocumentsTarget where
+        parseJSON
+          = withObject "DocumentsTarget"
+              (\ o ->
+                 DocumentsTarget' <$> (o .:? "documents" .!= mempty))
+
+instance ToJSON DocumentsTarget where
+        toJSON DocumentsTarget'{..}
+          = object
+              (catMaybes [("documents" .=) <$> _dtDocuments])
+
+-- | Labels associated with this target change.
+--
+-- /See:/ 'listenRequestLabels' smart constructor.
+newtype ListenRequestLabels =
+  ListenRequestLabels'
+    { _lrlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListenRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrlAddtional'
+listenRequestLabels
+    :: HashMap Text Text -- ^ 'lrlAddtional'
+    -> ListenRequestLabels
+listenRequestLabels pLrlAddtional_ =
+  ListenRequestLabels' {_lrlAddtional = _Coerce # pLrlAddtional_}
+
+
+lrlAddtional :: Lens' ListenRequestLabels (HashMap Text Text)
+lrlAddtional
+  = lens _lrlAddtional (\ s a -> s{_lrlAddtional = a})
+      . _Coerce
+
+instance FromJSON ListenRequestLabels where
+        parseJSON
+          = withObject "ListenRequestLabels"
+              (\ o -> ListenRequestLabels' <$> (parseJSONObject o))
+
+instance ToJSON ListenRequestLabels where
+        toJSON = toJSON . _lrlAddtional
+
+-- | Cloud Firestore indexes enable simple and complex queries against
+-- documents in a database.
+--
+-- /See:/ 'googleFirestoreAdminV1Index' smart constructor.
+data GoogleFirestoreAdminV1Index =
+  GoogleFirestoreAdminV1Index'
+    { _gfaviState      :: !(Maybe GoogleFirestoreAdminV1IndexState)
+    , _gfaviQueryScope :: !(Maybe GoogleFirestoreAdminV1IndexQueryScope)
+    , _gfaviName       :: !(Maybe Text)
+    , _gfaviFields     :: !(Maybe [GoogleFirestoreAdminV1IndexField])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1Index' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfaviState'
+--
+-- * 'gfaviQueryScope'
+--
+-- * 'gfaviName'
+--
+-- * 'gfaviFields'
+googleFirestoreAdminV1Index
+    :: GoogleFirestoreAdminV1Index
+googleFirestoreAdminV1Index =
+  GoogleFirestoreAdminV1Index'
+    { _gfaviState = Nothing
+    , _gfaviQueryScope = Nothing
+    , _gfaviName = Nothing
+    , _gfaviFields = Nothing
+    }
+
+
+-- | Output only. The serving state of the index.
+gfaviState :: Lens' GoogleFirestoreAdminV1Index (Maybe GoogleFirestoreAdminV1IndexState)
+gfaviState
+  = lens _gfaviState (\ s a -> s{_gfaviState = a})
+
+-- | 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.
+gfaviQueryScope :: Lens' GoogleFirestoreAdminV1Index (Maybe GoogleFirestoreAdminV1IndexQueryScope)
+gfaviQueryScope
+  = lens _gfaviQueryScope
+      (\ s a -> s{_gfaviQueryScope = a})
+
+-- | 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.
+gfaviName :: Lens' GoogleFirestoreAdminV1Index (Maybe Text)
+gfaviName
+  = lens _gfaviName (\ s a -> s{_gfaviName = a})
+
+-- | 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.
+gfaviFields :: Lens' GoogleFirestoreAdminV1Index [GoogleFirestoreAdminV1IndexField]
+gfaviFields
+  = lens _gfaviFields (\ s a -> s{_gfaviFields = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GoogleFirestoreAdminV1Index where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1Index"
+              (\ o ->
+                 GoogleFirestoreAdminV1Index' <$>
+                   (o .:? "state") <*> (o .:? "queryScope") <*>
+                     (o .:? "name")
+                     <*> (o .:? "fields" .!= mempty))
+
+instance ToJSON GoogleFirestoreAdminV1Index where
+        toJSON GoogleFirestoreAdminV1Index'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _gfaviState,
+                  ("queryScope" .=) <$> _gfaviQueryScope,
+                  ("name" .=) <$> _gfaviName,
+                  ("fields" .=) <$> _gfaviFields])
+
+-- | The response for Firestore.BeginTransaction.
+--
+-- /See:/ 'beginTransactionResponse' smart constructor.
+newtype BeginTransactionResponse =
+  BeginTransactionResponse'
+    { _btrTransaction :: Maybe Bytes
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BeginTransactionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'btrTransaction'
+beginTransactionResponse
+    :: BeginTransactionResponse
+beginTransactionResponse = BeginTransactionResponse' {_btrTransaction = Nothing}
+
+
+-- | The transaction that was started.
+btrTransaction :: Lens' BeginTransactionResponse (Maybe ByteString)
+btrTransaction
+  = lens _btrTransaction
+      (\ s a -> s{_btrTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON BeginTransactionResponse where
+        parseJSON
+          = withObject "BeginTransactionResponse"
+              (\ o ->
+                 BeginTransactionResponse' <$> (o .:? "transaction"))
+
+instance ToJSON BeginTransactionResponse where
+        toJSON BeginTransactionResponse'{..}
+          = object
+              (catMaybes [("transaction" .=) <$> _btrTransaction])
+
+-- | The response for Firestore.RunQuery.
+--
+-- /See:/ 'runQueryResponse' smart constructor.
+data RunQueryResponse =
+  RunQueryResponse'
+    { _rReadTime       :: !(Maybe DateTime')
+    , _rSkippedResults :: !(Maybe (Textual Int32))
+    , _rTransaction    :: !(Maybe Bytes)
+    , _rDocument       :: !(Maybe Document)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RunQueryResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rReadTime'
+--
+-- * 'rSkippedResults'
+--
+-- * 'rTransaction'
+--
+-- * 'rDocument'
+runQueryResponse
+    :: RunQueryResponse
+runQueryResponse =
+  RunQueryResponse'
+    { _rReadTime = Nothing
+    , _rSkippedResults = Nothing
+    , _rTransaction = Nothing
+    , _rDocument = Nothing
+    }
+
+
+-- | 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.
+rReadTime :: Lens' RunQueryResponse (Maybe UTCTime)
+rReadTime
+  = lens _rReadTime (\ s a -> s{_rReadTime = a}) .
+      mapping _DateTime
+
+-- | The number of results that have been skipped due to an offset between
+-- the last response and the current response.
+rSkippedResults :: Lens' RunQueryResponse (Maybe Int32)
+rSkippedResults
+  = lens _rSkippedResults
+      (\ s a -> s{_rSkippedResults = a})
+      . mapping _Coerce
+
+-- | 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.
+rTransaction :: Lens' RunQueryResponse (Maybe ByteString)
+rTransaction
+  = lens _rTransaction (\ s a -> s{_rTransaction = a})
+      . mapping _Bytes
+
+-- | A query result. Not set when reporting partial progress.
+rDocument :: Lens' RunQueryResponse (Maybe Document)
+rDocument
+  = lens _rDocument (\ s a -> s{_rDocument = a})
+
+instance FromJSON RunQueryResponse where
+        parseJSON
+          = withObject "RunQueryResponse"
+              (\ o ->
+                 RunQueryResponse' <$>
+                   (o .:? "readTime") <*> (o .:? "skippedResults") <*>
+                     (o .:? "transaction")
+                     <*> (o .:? "document"))
+
+instance ToJSON RunQueryResponse where
+        toJSON RunQueryResponse'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _rReadTime,
+                  ("skippedResults" .=) <$> _rSkippedResults,
+                  ("transaction" .=) <$> _rTransaction,
+                  ("document" .=) <$> _rDocument])
+
+-- | Metadata for google.longrunning.Operation results from
+-- FirestoreAdmin.ExportDocuments.
+--
+-- /See:/ 'googleFirestoreAdminV1ExportDocumentsMetadata' smart constructor.
+data GoogleFirestoreAdminV1ExportDocumentsMetadata =
+  GoogleFirestoreAdminV1ExportDocumentsMetadata'
+    { _gfavedmProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfavedmStartTime         :: !(Maybe DateTime')
+    , _gfavedmCollectionIds     :: !(Maybe [Text])
+    , _gfavedmProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfavedmEndTime           :: !(Maybe DateTime')
+    , _gfavedmOperationState    :: !(Maybe GoogleFirestoreAdminV1ExportDocumentsMetadataOperationState)
+    , _gfavedmOutputURIPrefix   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ExportDocumentsMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavedmProgressBytes'
+--
+-- * 'gfavedmStartTime'
+--
+-- * 'gfavedmCollectionIds'
+--
+-- * 'gfavedmProgressDocuments'
+--
+-- * 'gfavedmEndTime'
+--
+-- * 'gfavedmOperationState'
+--
+-- * 'gfavedmOutputURIPrefix'
+googleFirestoreAdminV1ExportDocumentsMetadata
+    :: GoogleFirestoreAdminV1ExportDocumentsMetadata
+googleFirestoreAdminV1ExportDocumentsMetadata =
+  GoogleFirestoreAdminV1ExportDocumentsMetadata'
+    { _gfavedmProgressBytes = Nothing
+    , _gfavedmStartTime = Nothing
+    , _gfavedmCollectionIds = Nothing
+    , _gfavedmProgressDocuments = Nothing
+    , _gfavedmEndTime = Nothing
+    , _gfavedmOperationState = Nothing
+    , _gfavedmOutputURIPrefix = Nothing
+    }
+
+
+-- | The progress, in bytes, of this operation.
+gfavedmProgressBytes :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfavedmProgressBytes
+  = lens _gfavedmProgressBytes
+      (\ s a -> s{_gfavedmProgressBytes = a})
+
+-- | The time this operation started.
+gfavedmStartTime :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe UTCTime)
+gfavedmStartTime
+  = lens _gfavedmStartTime
+      (\ s a -> s{_gfavedmStartTime = a})
+      . mapping _DateTime
+
+-- | Which collection ids are being exported.
+gfavedmCollectionIds :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata [Text]
+gfavedmCollectionIds
+  = lens _gfavedmCollectionIds
+      (\ s a -> s{_gfavedmCollectionIds = a})
+      . _Default
+      . _Coerce
+
+-- | The progress, in documents, of this operation.
+gfavedmProgressDocuments :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfavedmProgressDocuments
+  = lens _gfavedmProgressDocuments
+      (\ s a -> s{_gfavedmProgressDocuments = a})
+
+-- | The time this operation completed. Will be unset if operation still in
+-- progress.
+gfavedmEndTime :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe UTCTime)
+gfavedmEndTime
+  = lens _gfavedmEndTime
+      (\ s a -> s{_gfavedmEndTime = a})
+      . mapping _DateTime
+
+-- | The state of the export operation.
+gfavedmOperationState :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe GoogleFirestoreAdminV1ExportDocumentsMetadataOperationState)
+gfavedmOperationState
+  = lens _gfavedmOperationState
+      (\ s a -> s{_gfavedmOperationState = a})
+
+-- | Where the entities are being exported to.
+gfavedmOutputURIPrefix :: Lens' GoogleFirestoreAdminV1ExportDocumentsMetadata (Maybe Text)
+gfavedmOutputURIPrefix
+  = lens _gfavedmOutputURIPrefix
+      (\ s a -> s{_gfavedmOutputURIPrefix = a})
+
+instance FromJSON
+           GoogleFirestoreAdminV1ExportDocumentsMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ExportDocumentsMetadata"
+              (\ o ->
+                 GoogleFirestoreAdminV1ExportDocumentsMetadata' <$>
+                   (o .:? "progressBytes") <*> (o .:? "startTime") <*>
+                     (o .:? "collectionIds" .!= mempty)
+                     <*> (o .:? "progressDocuments")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "operationState")
+                     <*> (o .:? "outputUriPrefix"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ExportDocumentsMetadata
+         where
+        toJSON
+          GoogleFirestoreAdminV1ExportDocumentsMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gfavedmProgressBytes,
+                  ("startTime" .=) <$> _gfavedmStartTime,
+                  ("collectionIds" .=) <$> _gfavedmCollectionIds,
+                  ("progressDocuments" .=) <$>
+                    _gfavedmProgressDocuments,
+                  ("endTime" .=) <$> _gfavedmEndTime,
+                  ("operationState" .=) <$> _gfavedmOperationState,
+                  ("outputUriPrefix" .=) <$> _gfavedmOutputURIPrefix])
+
+-- | Describes the progress of the operation. Unit of work is generic and
+-- must be interpreted based on where Progress is used.
+--
+-- /See:/ 'googleFirestoreAdminV1Progress' smart constructor.
+data GoogleFirestoreAdminV1Progress =
+  GoogleFirestoreAdminV1Progress'
+    { _gfavpCompletedWork :: !(Maybe (Textual Int64))
+    , _gfavpEstimatedWork :: !(Maybe (Textual Int64))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1Progress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavpCompletedWork'
+--
+-- * 'gfavpEstimatedWork'
+googleFirestoreAdminV1Progress
+    :: GoogleFirestoreAdminV1Progress
+googleFirestoreAdminV1Progress =
+  GoogleFirestoreAdminV1Progress'
+    {_gfavpCompletedWork = Nothing, _gfavpEstimatedWork = Nothing}
+
+
+-- | The amount of work completed.
+gfavpCompletedWork :: Lens' GoogleFirestoreAdminV1Progress (Maybe Int64)
+gfavpCompletedWork
+  = lens _gfavpCompletedWork
+      (\ s a -> s{_gfavpCompletedWork = a})
+      . mapping _Coerce
+
+-- | The amount of work estimated.
+gfavpEstimatedWork :: Lens' GoogleFirestoreAdminV1Progress (Maybe Int64)
+gfavpEstimatedWork
+  = lens _gfavpEstimatedWork
+      (\ s a -> s{_gfavpEstimatedWork = a})
+      . mapping _Coerce
+
+instance FromJSON GoogleFirestoreAdminV1Progress
+         where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1Progress"
+              (\ o ->
+                 GoogleFirestoreAdminV1Progress' <$>
+                   (o .:? "completedWork") <*> (o .:? "estimatedWork"))
+
+instance ToJSON GoogleFirestoreAdminV1Progress where
+        toJSON GoogleFirestoreAdminV1Progress'{..}
+          = object
+              (catMaybes
+                 [("completedWork" .=) <$> _gfavpCompletedWork,
+                  ("estimatedWork" .=) <$> _gfavpEstimatedWork])
+
+-- | 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.
+--
+-- /See:/ 'documentMask' smart constructor.
+newtype DocumentMask =
+  DocumentMask'
+    { _dmFieldPaths :: Maybe [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentMask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmFieldPaths'
+documentMask
+    :: DocumentMask
+documentMask = DocumentMask' {_dmFieldPaths = Nothing}
+
+
+-- | The list of field paths in the mask. See Document.fields for a field
+-- path syntax reference.
+dmFieldPaths :: Lens' DocumentMask [Text]
+dmFieldPaths
+  = lens _dmFieldPaths (\ s a -> s{_dmFieldPaths = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DocumentMask where
+        parseJSON
+          = withObject "DocumentMask"
+              (\ o ->
+                 DocumentMask' <$> (o .:? "fieldPaths" .!= mempty))
+
+instance ToJSON DocumentMask where
+        toJSON DocumentMask'{..}
+          = object
+              (catMaybes [("fieldPaths" .=) <$> _dmFieldPaths])
+
+-- | A target specified by a query.
+--
+-- /See:/ 'queryTarget' smart constructor.
+data QueryTarget =
+  QueryTarget'
+    { _qtParent          :: !(Maybe Text)
+    , _qtStructuredQuery :: !(Maybe StructuredQuery)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'QueryTarget' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qtParent'
+--
+-- * 'qtStructuredQuery'
+queryTarget
+    :: QueryTarget
+queryTarget = QueryTarget' {_qtParent = Nothing, _qtStructuredQuery = Nothing}
+
+
+-- | 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\`
+qtParent :: Lens' QueryTarget (Maybe Text)
+qtParent = lens _qtParent (\ s a -> s{_qtParent = a})
+
+-- | A structured query.
+qtStructuredQuery :: Lens' QueryTarget (Maybe StructuredQuery)
+qtStructuredQuery
+  = lens _qtStructuredQuery
+      (\ s a -> s{_qtStructuredQuery = a})
+
+instance FromJSON QueryTarget where
+        parseJSON
+          = withObject "QueryTarget"
+              (\ o ->
+                 QueryTarget' <$>
+                   (o .:? "parent") <*> (o .:? "structuredQuery"))
+
+instance ToJSON QueryTarget where
+        toJSON QueryTarget'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _qtParent,
+                  ("structuredQuery" .=) <$> _qtStructuredQuery])
+
+-- | A message that can hold any of the supported value types.
+--
+-- /See:/ 'value' smart constructor.
+data Value =
+  Value'
+    { _vGeoPointValue  :: !(Maybe LatLng)
+    , _vBytesValue     :: !(Maybe Bytes)
+    , _vIntegerValue   :: !(Maybe (Textual Int64))
+    , _vTimestampValue :: !(Maybe DateTime')
+    , _vDoubleValue    :: !(Maybe (Textual Double))
+    , _vStringValue    :: !(Maybe Text)
+    , _vBooleanValue   :: !(Maybe Bool)
+    , _vMapValue       :: !(Maybe MapValue)
+    , _vArrayValue     :: !(Maybe ArrayValue)
+    , _vReferenceValue :: !(Maybe Text)
+    , _vNullValue      :: !(Maybe ValueNullValue)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Value' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vGeoPointValue'
+--
+-- * 'vBytesValue'
+--
+-- * 'vIntegerValue'
+--
+-- * 'vTimestampValue'
+--
+-- * 'vDoubleValue'
+--
+-- * 'vStringValue'
+--
+-- * 'vBooleanValue'
+--
+-- * 'vMapValue'
+--
+-- * 'vArrayValue'
+--
+-- * 'vReferenceValue'
+--
+-- * 'vNullValue'
+value
+    :: Value
+value =
+  Value'
+    { _vGeoPointValue = Nothing
+    , _vBytesValue = Nothing
+    , _vIntegerValue = Nothing
+    , _vTimestampValue = Nothing
+    , _vDoubleValue = Nothing
+    , _vStringValue = Nothing
+    , _vBooleanValue = Nothing
+    , _vMapValue = Nothing
+    , _vArrayValue = Nothing
+    , _vReferenceValue = Nothing
+    , _vNullValue = Nothing
+    }
+
+
+-- | A geo point value representing a point on the surface of Earth.
+vGeoPointValue :: Lens' Value (Maybe LatLng)
+vGeoPointValue
+  = lens _vGeoPointValue
+      (\ s a -> s{_vGeoPointValue = a})
+
+-- | A bytes value. Must not exceed 1 MiB - 89 bytes. Only the first 1,500
+-- bytes are considered by queries.
+vBytesValue :: Lens' Value (Maybe ByteString)
+vBytesValue
+  = lens _vBytesValue (\ s a -> s{_vBytesValue = a}) .
+      mapping _Bytes
+
+-- | An integer value.
+vIntegerValue :: Lens' Value (Maybe Int64)
+vIntegerValue
+  = lens _vIntegerValue
+      (\ s a -> s{_vIntegerValue = a})
+      . mapping _Coerce
+
+-- | A timestamp value. Precise only to microseconds. When stored, any
+-- additional precision is rounded down.
+vTimestampValue :: Lens' Value (Maybe UTCTime)
+vTimestampValue
+  = lens _vTimestampValue
+      (\ s a -> s{_vTimestampValue = a})
+      . mapping _DateTime
+
+-- | A double value.
+vDoubleValue :: Lens' Value (Maybe Double)
+vDoubleValue
+  = lens _vDoubleValue (\ s a -> s{_vDoubleValue = a})
+      . mapping _Coerce
+
+-- | 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.
+vStringValue :: Lens' Value (Maybe Text)
+vStringValue
+  = lens _vStringValue (\ s a -> s{_vStringValue = a})
+
+-- | A boolean value.
+vBooleanValue :: Lens' Value (Maybe Bool)
+vBooleanValue
+  = lens _vBooleanValue
+      (\ s a -> s{_vBooleanValue = a})
+
+-- | A map value.
+vMapValue :: Lens' Value (Maybe MapValue)
+vMapValue
+  = lens _vMapValue (\ s a -> s{_vMapValue = a})
+
+-- | An array value. Cannot directly contain another array value, though can
+-- contain an map which contains another array.
+vArrayValue :: Lens' Value (Maybe ArrayValue)
+vArrayValue
+  = lens _vArrayValue (\ s a -> s{_vArrayValue = a})
+
+-- | A reference to a document. For example:
+-- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
+vReferenceValue :: Lens' Value (Maybe Text)
+vReferenceValue
+  = lens _vReferenceValue
+      (\ s a -> s{_vReferenceValue = a})
+
+-- | A null value.
+vNullValue :: Lens' Value (Maybe ValueNullValue)
+vNullValue
+  = lens _vNullValue (\ s a -> s{_vNullValue = a})
+
+instance FromJSON Value where
+        parseJSON
+          = withObject "Value"
+              (\ o ->
+                 Value' <$>
+                   (o .:? "geoPointValue") <*> (o .:? "bytesValue") <*>
+                     (o .:? "integerValue")
+                     <*> (o .:? "timestampValue")
+                     <*> (o .:? "doubleValue")
+                     <*> (o .:? "stringValue")
+                     <*> (o .:? "booleanValue")
+                     <*> (o .:? "mapValue")
+                     <*> (o .:? "arrayValue")
+                     <*> (o .:? "referenceValue")
+                     <*> (o .:? "nullValue"))
+
+instance ToJSON Value where
+        toJSON Value'{..}
+          = object
+              (catMaybes
+                 [("geoPointValue" .=) <$> _vGeoPointValue,
+                  ("bytesValue" .=) <$> _vBytesValue,
+                  ("integerValue" .=) <$> _vIntegerValue,
+                  ("timestampValue" .=) <$> _vTimestampValue,
+                  ("doubleValue" .=) <$> _vDoubleValue,
+                  ("stringValue" .=) <$> _vStringValue,
+                  ("booleanValue" .=) <$> _vBooleanValue,
+                  ("mapValue" .=) <$> _vMapValue,
+                  ("arrayValue" .=) <$> _vArrayValue,
+                  ("referenceValue" .=) <$> _vReferenceValue,
+                  ("nullValue" .=) <$> _vNullValue])
+
+--
+-- /See:/ 'statusDetailsItem' smart constructor.
+newtype StatusDetailsItem =
+  StatusDetailsItem'
+    { _sdiAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiAddtional'
+statusDetailsItem
+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
+    -> StatusDetailsItem
+statusDetailsItem pSdiAddtional_ =
+  StatusDetailsItem' {_sdiAddtional = _Coerce # pSdiAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
+sdiAddtional
+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
+      . _Coerce
+
+instance FromJSON StatusDetailsItem where
+        parseJSON
+          = withObject "StatusDetailsItem"
+              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
+
+instance ToJSON StatusDetailsItem where
+        toJSON = toJSON . _sdiAddtional
+
+-- | A transformation of a document.
+--
+-- /See:/ 'documentTransform' smart constructor.
+data DocumentTransform =
+  DocumentTransform'
+    { _dtDocument        :: !(Maybe Text)
+    , _dtFieldTransforms :: !(Maybe [FieldTransform])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentTransform' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtDocument'
+--
+-- * 'dtFieldTransforms'
+documentTransform
+    :: DocumentTransform
+documentTransform =
+  DocumentTransform' {_dtDocument = Nothing, _dtFieldTransforms = Nothing}
+
+
+-- | The name of the document to transform.
+dtDocument :: Lens' DocumentTransform (Maybe Text)
+dtDocument
+  = lens _dtDocument (\ s a -> s{_dtDocument = a})
+
+-- | The list of transformations to apply to the fields of the document, in
+-- order. This must not be empty.
+dtFieldTransforms :: Lens' DocumentTransform [FieldTransform]
+dtFieldTransforms
+  = lens _dtFieldTransforms
+      (\ s a -> s{_dtFieldTransforms = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DocumentTransform where
+        parseJSON
+          = withObject "DocumentTransform"
+              (\ o ->
+                 DocumentTransform' <$>
+                   (o .:? "document") <*>
+                     (o .:? "fieldTransforms" .!= mempty))
+
+instance ToJSON DocumentTransform where
+        toJSON DocumentTransform'{..}
+          = object
+              (catMaybes
+                 [("document" .=) <$> _dtDocument,
+                  ("fieldTransforms" .=) <$> _dtFieldTransforms])
+
+-- | A Firestore query.
+--
+-- /See:/ 'structuredQuery' smart constructor.
+data StructuredQuery =
+  StructuredQuery'
+    { _sqWhere   :: !(Maybe Filter)
+    , _sqOrderBy :: !(Maybe [Order])
+    , _sqStartAt :: !(Maybe Cursor)
+    , _sqOffSet  :: !(Maybe (Textual Int32))
+    , _sqFrom    :: !(Maybe [CollectionSelector])
+    , _sqEndAt   :: !(Maybe Cursor)
+    , _sqLimit   :: !(Maybe (Textual Int32))
+    , _sqSelect  :: !(Maybe Projection)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StructuredQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sqWhere'
+--
+-- * 'sqOrderBy'
+--
+-- * 'sqStartAt'
+--
+-- * 'sqOffSet'
+--
+-- * 'sqFrom'
+--
+-- * 'sqEndAt'
+--
+-- * 'sqLimit'
+--
+-- * 'sqSelect'
+structuredQuery
+    :: StructuredQuery
+structuredQuery =
+  StructuredQuery'
+    { _sqWhere = Nothing
+    , _sqOrderBy = Nothing
+    , _sqStartAt = Nothing
+    , _sqOffSet = Nothing
+    , _sqFrom = Nothing
+    , _sqEndAt = Nothing
+    , _sqLimit = Nothing
+    , _sqSelect = Nothing
+    }
+
+
+-- | The filter to apply.
+sqWhere :: Lens' StructuredQuery (Maybe Filter)
+sqWhere = lens _sqWhere (\ s a -> s{_sqWhere = a})
+
+-- | 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__\`
+sqOrderBy :: Lens' StructuredQuery [Order]
+sqOrderBy
+  = lens _sqOrderBy (\ s a -> s{_sqOrderBy = a}) .
+      _Default
+      . _Coerce
+
+-- | A starting point for the query results.
+sqStartAt :: Lens' StructuredQuery (Maybe Cursor)
+sqStartAt
+  = lens _sqStartAt (\ s a -> s{_sqStartAt = a})
+
+-- | The number of results to skip. Applies before limit, but after all other
+-- constraints. Must be >= 0 if specified.
+sqOffSet :: Lens' StructuredQuery (Maybe Int32)
+sqOffSet
+  = lens _sqOffSet (\ s a -> s{_sqOffSet = a}) .
+      mapping _Coerce
+
+-- | The collections to query.
+sqFrom :: Lens' StructuredQuery [CollectionSelector]
+sqFrom
+  = lens _sqFrom (\ s a -> s{_sqFrom = a}) . _Default .
+      _Coerce
+
+-- | A end point for the query results.
+sqEndAt :: Lens' StructuredQuery (Maybe Cursor)
+sqEndAt = lens _sqEndAt (\ s a -> s{_sqEndAt = a})
+
+-- | The maximum number of results to return. Applies after all other
+-- constraints. Must be >= 0 if specified.
+sqLimit :: Lens' StructuredQuery (Maybe Int32)
+sqLimit
+  = lens _sqLimit (\ s a -> s{_sqLimit = a}) .
+      mapping _Coerce
+
+-- | The projection to return.
+sqSelect :: Lens' StructuredQuery (Maybe Projection)
+sqSelect = lens _sqSelect (\ s a -> s{_sqSelect = a})
+
+instance FromJSON StructuredQuery where
+        parseJSON
+          = withObject "StructuredQuery"
+              (\ o ->
+                 StructuredQuery' <$>
+                   (o .:? "where") <*> (o .:? "orderBy" .!= mempty) <*>
+                     (o .:? "startAt")
+                     <*> (o .:? "offset")
+                     <*> (o .:? "from" .!= mempty)
+                     <*> (o .:? "endAt")
+                     <*> (o .:? "limit")
+                     <*> (o .:? "select"))
+
+instance ToJSON StructuredQuery where
+        toJSON StructuredQuery'{..}
+          = object
+              (catMaybes
+                 [("where" .=) <$> _sqWhere,
+                  ("orderBy" .=) <$> _sqOrderBy,
+                  ("startAt" .=) <$> _sqStartAt,
+                  ("offset" .=) <$> _sqOffSet, ("from" .=) <$> _sqFrom,
+                  ("endAt" .=) <$> _sqEndAt, ("limit" .=) <$> _sqLimit,
+                  ("select" .=) <$> _sqSelect])
+
+-- | A digest of all the documents that match a given target.
+--
+-- /See:/ 'existenceFilter' smart constructor.
+data ExistenceFilter =
+  ExistenceFilter'
+    { _efTargetId :: !(Maybe (Textual Int32))
+    , _efCount    :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ExistenceFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'efTargetId'
+--
+-- * 'efCount'
+existenceFilter
+    :: ExistenceFilter
+existenceFilter = ExistenceFilter' {_efTargetId = Nothing, _efCount = Nothing}
+
+
+-- | The target ID to which this filter applies.
+efTargetId :: Lens' ExistenceFilter (Maybe Int32)
+efTargetId
+  = lens _efTargetId (\ s a -> s{_efTargetId = a}) .
+      mapping _Coerce
+
+-- | 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.
+efCount :: Lens' ExistenceFilter (Maybe Int32)
+efCount
+  = lens _efCount (\ s a -> s{_efCount = a}) .
+      mapping _Coerce
+
+instance FromJSON ExistenceFilter where
+        parseJSON
+          = withObject "ExistenceFilter"
+              (\ o ->
+                 ExistenceFilter' <$>
+                   (o .:? "targetId") <*> (o .:? "count"))
+
+instance ToJSON ExistenceFilter where
+        toJSON ExistenceFilter'{..}
+          = object
+              (catMaybes
+                 [("targetId" .=) <$> _efTargetId,
+                  ("count" .=) <$> _efCount])
+
+-- | The response for FirestoreAdmin.ListFields.
+--
+-- /See:/ 'googleFirestoreAdminV1ListFieldsResponse' smart constructor.
+data GoogleFirestoreAdminV1ListFieldsResponse =
+  GoogleFirestoreAdminV1ListFieldsResponse'
+    { _gfavlfrNextPageToken :: !(Maybe Text)
+    , _gfavlfrFields        :: !(Maybe [GoogleFirestoreAdminV1Field])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ListFieldsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavlfrNextPageToken'
+--
+-- * 'gfavlfrFields'
+googleFirestoreAdminV1ListFieldsResponse
+    :: GoogleFirestoreAdminV1ListFieldsResponse
+googleFirestoreAdminV1ListFieldsResponse =
+  GoogleFirestoreAdminV1ListFieldsResponse'
+    {_gfavlfrNextPageToken = Nothing, _gfavlfrFields = Nothing}
+
+
+-- | A page token that may be used to request another page of results. If
+-- blank, this is the last page.
+gfavlfrNextPageToken :: Lens' GoogleFirestoreAdminV1ListFieldsResponse (Maybe Text)
+gfavlfrNextPageToken
+  = lens _gfavlfrNextPageToken
+      (\ s a -> s{_gfavlfrNextPageToken = a})
+
+-- | The requested fields.
+gfavlfrFields :: Lens' GoogleFirestoreAdminV1ListFieldsResponse [GoogleFirestoreAdminV1Field]
+gfavlfrFields
+  = lens _gfavlfrFields
+      (\ s a -> s{_gfavlfrFields = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           GoogleFirestoreAdminV1ListFieldsResponse
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ListFieldsResponse"
+              (\ o ->
+                 GoogleFirestoreAdminV1ListFieldsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "fields" .!= mempty))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ListFieldsResponse
+         where
+        toJSON GoogleFirestoreAdminV1ListFieldsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _gfavlfrNextPageToken,
+                  ("fields" .=) <$> _gfavlfrFields])
+
+-- | The request for FirestoreAdmin.ImportDocuments.
+--
+-- /See:/ 'googleFirestoreAdminV1ImportDocumentsRequest' smart constructor.
+data GoogleFirestoreAdminV1ImportDocumentsRequest =
+  GoogleFirestoreAdminV1ImportDocumentsRequest'
+    { _gfavidrInputURIPrefix :: !(Maybe Text)
+    , _gfavidrCollectionIds  :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ImportDocumentsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavidrInputURIPrefix'
+--
+-- * 'gfavidrCollectionIds'
+googleFirestoreAdminV1ImportDocumentsRequest
+    :: GoogleFirestoreAdminV1ImportDocumentsRequest
+googleFirestoreAdminV1ImportDocumentsRequest =
+  GoogleFirestoreAdminV1ImportDocumentsRequest'
+    {_gfavidrInputURIPrefix = Nothing, _gfavidrCollectionIds = Nothing}
+
+
+-- | 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.
+gfavidrInputURIPrefix :: Lens' GoogleFirestoreAdminV1ImportDocumentsRequest (Maybe Text)
+gfavidrInputURIPrefix
+  = lens _gfavidrInputURIPrefix
+      (\ s a -> s{_gfavidrInputURIPrefix = a})
+
+-- | Which collection ids to import. Unspecified means all collections
+-- included in the import.
+gfavidrCollectionIds :: Lens' GoogleFirestoreAdminV1ImportDocumentsRequest [Text]
+gfavidrCollectionIds
+  = lens _gfavidrCollectionIds
+      (\ s a -> s{_gfavidrCollectionIds = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           GoogleFirestoreAdminV1ImportDocumentsRequest
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ImportDocumentsRequest"
+              (\ o ->
+                 GoogleFirestoreAdminV1ImportDocumentsRequest' <$>
+                   (o .:? "inputUriPrefix") <*>
+                     (o .:? "collectionIds" .!= mempty))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ImportDocumentsRequest
+         where
+        toJSON
+          GoogleFirestoreAdminV1ImportDocumentsRequest'{..}
+          = object
+              (catMaybes
+                 [("inputUriPrefix" .=) <$> _gfavidrInputURIPrefix,
+                  ("collectionIds" .=) <$> _gfavidrCollectionIds])
+
+-- | The metadata message for google.cloud.location.Location.metadata.
+--
+-- /See:/ 'googleFirestoreAdminV1LocationMetadata' smart constructor.
+data GoogleFirestoreAdminV1LocationMetadata =
+  GoogleFirestoreAdminV1LocationMetadata'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1LocationMetadata' with the minimum fields required to make a request.
+--
+googleFirestoreAdminV1LocationMetadata
+    :: GoogleFirestoreAdminV1LocationMetadata
+googleFirestoreAdminV1LocationMetadata = GoogleFirestoreAdminV1LocationMetadata'
+
+
+instance FromJSON
+           GoogleFirestoreAdminV1LocationMetadata
+         where
+        parseJSON
+          = withObject "GoogleFirestoreAdminV1LocationMetadata"
+              (\ o -> pure GoogleFirestoreAdminV1LocationMetadata')
+
+instance ToJSON
+           GoogleFirestoreAdminV1LocationMetadata
+         where
+        toJSON = const emptyObject
+
+-- | The request message for Operations.CancelOperation.
+--
+-- /See:/ 'googleLongrunningCancelOperationRequest' smart constructor.
+data GoogleLongrunningCancelOperationRequest =
+  GoogleLongrunningCancelOperationRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleLongrunningCancelOperationRequest' with the minimum fields required to make a request.
+--
+googleLongrunningCancelOperationRequest
+    :: GoogleLongrunningCancelOperationRequest
+googleLongrunningCancelOperationRequest =
+  GoogleLongrunningCancelOperationRequest'
+
+
+instance FromJSON
+           GoogleLongrunningCancelOperationRequest
+         where
+        parseJSON
+          = withObject
+              "GoogleLongrunningCancelOperationRequest"
+              (\ o ->
+                 pure GoogleLongrunningCancelOperationRequest')
+
+instance ToJSON
+           GoogleLongrunningCancelOperationRequest
+         where
+        toJSON = const emptyObject
+
+-- | The response from Firestore.ListCollectionIds.
+--
+-- /See:/ 'listCollectionIdsResponse' smart constructor.
+data ListCollectionIdsResponse =
+  ListCollectionIdsResponse'
+    { _lcirNextPageToken :: !(Maybe Text)
+    , _lcirCollectionIds :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListCollectionIdsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcirNextPageToken'
+--
+-- * 'lcirCollectionIds'
+listCollectionIdsResponse
+    :: ListCollectionIdsResponse
+listCollectionIdsResponse =
+  ListCollectionIdsResponse'
+    {_lcirNextPageToken = Nothing, _lcirCollectionIds = Nothing}
+
+
+-- | A page token that may be used to continue the list.
+lcirNextPageToken :: Lens' ListCollectionIdsResponse (Maybe Text)
+lcirNextPageToken
+  = lens _lcirNextPageToken
+      (\ s a -> s{_lcirNextPageToken = a})
+
+-- | The collection ids.
+lcirCollectionIds :: Lens' ListCollectionIdsResponse [Text]
+lcirCollectionIds
+  = lens _lcirCollectionIds
+      (\ s a -> s{_lcirCollectionIds = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListCollectionIdsResponse where
+        parseJSON
+          = withObject "ListCollectionIdsResponse"
+              (\ o ->
+                 ListCollectionIdsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "collectionIds" .!= mempty))
+
+instance ToJSON ListCollectionIdsResponse where
+        toJSON ListCollectionIdsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lcirNextPageToken,
+                  ("collectionIds" .=) <$> _lcirCollectionIds])
+
+-- | A reference to a field, such as \`max(messages.time) as max_time\`.
+--
+-- /See:/ 'fieldReference' smart constructor.
+newtype FieldReference =
+  FieldReference'
+    { _frFieldPath :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FieldReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frFieldPath'
+fieldReference
+    :: FieldReference
+fieldReference = FieldReference' {_frFieldPath = Nothing}
+
+
+frFieldPath :: Lens' FieldReference (Maybe Text)
+frFieldPath
+  = lens _frFieldPath (\ s a -> s{_frFieldPath = a})
+
+instance FromJSON FieldReference where
+        parseJSON
+          = withObject "FieldReference"
+              (\ o -> FieldReference' <$> (o .:? "fieldPath"))
+
+instance ToJSON FieldReference where
+        toJSON FieldReference'{..}
+          = object
+              (catMaybes [("fieldPath" .=) <$> _frFieldPath])
+
+-- | 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.
+--
+-- /See:/ 'documentRemove' smart constructor.
+data DocumentRemove =
+  DocumentRemove'
+    { _drReadTime         :: !(Maybe DateTime')
+    , _drDocument         :: !(Maybe Text)
+    , _drRemovedTargetIds :: !(Maybe [Textual Int32])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentRemove' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drReadTime'
+--
+-- * 'drDocument'
+--
+-- * 'drRemovedTargetIds'
+documentRemove
+    :: DocumentRemove
+documentRemove =
+  DocumentRemove'
+    { _drReadTime = Nothing
+    , _drDocument = Nothing
+    , _drRemovedTargetIds = Nothing
+    }
+
+
+-- | The read timestamp at which the remove was observed. Greater or equal to
+-- the \`commit_time\` of the change\/delete\/remove.
+drReadTime :: Lens' DocumentRemove (Maybe UTCTime)
+drReadTime
+  = lens _drReadTime (\ s a -> s{_drReadTime = a}) .
+      mapping _DateTime
+
+-- | The resource name of the Document that has gone out of view.
+drDocument :: Lens' DocumentRemove (Maybe Text)
+drDocument
+  = lens _drDocument (\ s a -> s{_drDocument = a})
+
+-- | A set of target IDs for targets that previously matched this document.
+drRemovedTargetIds :: Lens' DocumentRemove [Int32]
+drRemovedTargetIds
+  = lens _drRemovedTargetIds
+      (\ s a -> s{_drRemovedTargetIds = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DocumentRemove where
+        parseJSON
+          = withObject "DocumentRemove"
+              (\ o ->
+                 DocumentRemove' <$>
+                   (o .:? "readTime") <*> (o .:? "document") <*>
+                     (o .:? "removedTargetIds" .!= mempty))
+
+instance ToJSON DocumentRemove where
+        toJSON DocumentRemove'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _drReadTime,
+                  ("document" .=) <$> _drDocument,
+                  ("removedTargetIds" .=) <$> _drRemovedTargetIds])
+
+-- | 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.
+--
+-- /See:/ 'documentChange' smart constructor.
+data DocumentChange =
+  DocumentChange'
+    { _dcDocument         :: !(Maybe Document)
+    , _dcTargetIds        :: !(Maybe [Textual Int32])
+    , _dcRemovedTargetIds :: !(Maybe [Textual Int32])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentChange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcDocument'
+--
+-- * 'dcTargetIds'
+--
+-- * 'dcRemovedTargetIds'
+documentChange
+    :: DocumentChange
+documentChange =
+  DocumentChange'
+    { _dcDocument = Nothing
+    , _dcTargetIds = Nothing
+    , _dcRemovedTargetIds = Nothing
+    }
+
+
+-- | The new state of the Document. If \`mask\` is set, contains only fields
+-- that were updated or added.
+dcDocument :: Lens' DocumentChange (Maybe Document)
+dcDocument
+  = lens _dcDocument (\ s a -> s{_dcDocument = a})
+
+-- | A set of target IDs of targets that match this document.
+dcTargetIds :: Lens' DocumentChange [Int32]
+dcTargetIds
+  = lens _dcTargetIds (\ s a -> s{_dcTargetIds = a}) .
+      _Default
+      . _Coerce
+
+-- | A set of target IDs for targets that no longer match this document.
+dcRemovedTargetIds :: Lens' DocumentChange [Int32]
+dcRemovedTargetIds
+  = lens _dcRemovedTargetIds
+      (\ s a -> s{_dcRemovedTargetIds = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DocumentChange where
+        parseJSON
+          = withObject "DocumentChange"
+              (\ o ->
+                 DocumentChange' <$>
+                   (o .:? "document") <*> (o .:? "targetIds" .!= mempty)
+                     <*> (o .:? "removedTargetIds" .!= mempty))
+
+instance ToJSON DocumentChange where
+        toJSON DocumentChange'{..}
+          = object
+              (catMaybes
+                 [("document" .=) <$> _dcDocument,
+                  ("targetIds" .=) <$> _dcTargetIds,
+                  ("removedTargetIds" .=) <$> _dcRemovedTargetIds])
+
+-- | Metadata for google.longrunning.Operation results from
+-- FirestoreAdmin.UpdateField.
+--
+-- /See:/ 'googleFirestoreAdminV1FieldOperationMetadata' smart constructor.
+data GoogleFirestoreAdminV1FieldOperationMetadata =
+  GoogleFirestoreAdminV1FieldOperationMetadata'
+    { _gfavfomProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfavfomState             :: !(Maybe GoogleFirestoreAdminV1FieldOperationMetadataState)
+    , _gfavfomField             :: !(Maybe Text)
+    , _gfavfomStartTime         :: !(Maybe DateTime')
+    , _gfavfomProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfavfomIndexConfigDeltas :: !(Maybe [GoogleFirestoreAdminV1IndexConfigDelta])
+    , _gfavfomEndTime           :: !(Maybe DateTime')
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1FieldOperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavfomProgressBytes'
+--
+-- * 'gfavfomState'
+--
+-- * 'gfavfomField'
+--
+-- * 'gfavfomStartTime'
+--
+-- * 'gfavfomProgressDocuments'
+--
+-- * 'gfavfomIndexConfigDeltas'
+--
+-- * 'gfavfomEndTime'
+googleFirestoreAdminV1FieldOperationMetadata
+    :: GoogleFirestoreAdminV1FieldOperationMetadata
+googleFirestoreAdminV1FieldOperationMetadata =
+  GoogleFirestoreAdminV1FieldOperationMetadata'
+    { _gfavfomProgressBytes = Nothing
+    , _gfavfomState = Nothing
+    , _gfavfomField = Nothing
+    , _gfavfomStartTime = Nothing
+    , _gfavfomProgressDocuments = Nothing
+    , _gfavfomIndexConfigDeltas = Nothing
+    , _gfavfomEndTime = Nothing
+    }
+
+
+-- | The progress, in bytes, of this operation.
+gfavfomProgressBytes :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfavfomProgressBytes
+  = lens _gfavfomProgressBytes
+      (\ s a -> s{_gfavfomProgressBytes = a})
+
+-- | The state of the operation.
+gfavfomState :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe GoogleFirestoreAdminV1FieldOperationMetadataState)
+gfavfomState
+  = lens _gfavfomState (\ s a -> s{_gfavfomState = a})
+
+-- | The field resource that this operation is acting on. For example:
+-- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\/fields\/{field_path}\`
+gfavfomField :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe Text)
+gfavfomField
+  = lens _gfavfomField (\ s a -> s{_gfavfomField = a})
+
+-- | The time this operation started.
+gfavfomStartTime :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe UTCTime)
+gfavfomStartTime
+  = lens _gfavfomStartTime
+      (\ s a -> s{_gfavfomStartTime = a})
+      . mapping _DateTime
+
+-- | The progress, in documents, of this operation.
+gfavfomProgressDocuments :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfavfomProgressDocuments
+  = lens _gfavfomProgressDocuments
+      (\ s a -> s{_gfavfomProgressDocuments = a})
+
+-- | A list of IndexConfigDelta, which describe the intent of this operation.
+gfavfomIndexConfigDeltas :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata [GoogleFirestoreAdminV1IndexConfigDelta]
+gfavfomIndexConfigDeltas
+  = lens _gfavfomIndexConfigDeltas
+      (\ s a -> s{_gfavfomIndexConfigDeltas = a})
+      . _Default
+      . _Coerce
+
+-- | The time this operation completed. Will be unset if operation still in
+-- progress.
+gfavfomEndTime :: Lens' GoogleFirestoreAdminV1FieldOperationMetadata (Maybe UTCTime)
+gfavfomEndTime
+  = lens _gfavfomEndTime
+      (\ s a -> s{_gfavfomEndTime = a})
+      . mapping _DateTime
+
+instance FromJSON
+           GoogleFirestoreAdminV1FieldOperationMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1FieldOperationMetadata"
+              (\ o ->
+                 GoogleFirestoreAdminV1FieldOperationMetadata' <$>
+                   (o .:? "progressBytes") <*> (o .:? "state") <*>
+                     (o .:? "field")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "progressDocuments")
+                     <*> (o .:? "indexConfigDeltas" .!= mempty)
+                     <*> (o .:? "endTime"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1FieldOperationMetadata
+         where
+        toJSON
+          GoogleFirestoreAdminV1FieldOperationMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gfavfomProgressBytes,
+                  ("state" .=) <$> _gfavfomState,
+                  ("field" .=) <$> _gfavfomField,
+                  ("startTime" .=) <$> _gfavfomStartTime,
+                  ("progressDocuments" .=) <$>
+                    _gfavfomProgressDocuments,
+                  ("indexConfigDeltas" .=) <$>
+                    _gfavfomIndexConfigDeltas,
+                  ("endTime" .=) <$> _gfavfomEndTime])
+
+-- | The response for FirestoreAdmin.ListIndexes.
+--
+-- /See:/ 'googleFirestoreAdminV1ListIndexesResponse' smart constructor.
+data GoogleFirestoreAdminV1ListIndexesResponse =
+  GoogleFirestoreAdminV1ListIndexesResponse'
+    { _gfavlirNextPageToken :: !(Maybe Text)
+    , _gfavlirIndexes       :: !(Maybe [GoogleFirestoreAdminV1Index])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ListIndexesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfavlirNextPageToken'
+--
+-- * 'gfavlirIndexes'
+googleFirestoreAdminV1ListIndexesResponse
+    :: GoogleFirestoreAdminV1ListIndexesResponse
+googleFirestoreAdminV1ListIndexesResponse =
+  GoogleFirestoreAdminV1ListIndexesResponse'
+    {_gfavlirNextPageToken = Nothing, _gfavlirIndexes = Nothing}
+
+
+-- | A page token that may be used to request another page of results. If
+-- blank, this is the last page.
+gfavlirNextPageToken :: Lens' GoogleFirestoreAdminV1ListIndexesResponse (Maybe Text)
+gfavlirNextPageToken
+  = lens _gfavlirNextPageToken
+      (\ s a -> s{_gfavlirNextPageToken = a})
+
+-- | The requested indexes.
+gfavlirIndexes :: Lens' GoogleFirestoreAdminV1ListIndexesResponse [GoogleFirestoreAdminV1Index]
+gfavlirIndexes
+  = lens _gfavlirIndexes
+      (\ s a -> s{_gfavlirIndexes = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           GoogleFirestoreAdminV1ListIndexesResponse
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ListIndexesResponse"
+              (\ o ->
+                 GoogleFirestoreAdminV1ListIndexesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "indexes" .!= mempty))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ListIndexesResponse
+         where
+        toJSON GoogleFirestoreAdminV1ListIndexesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _gfavlirNextPageToken,
+                  ("indexes" .=) <$> _gfavlirIndexes])
+
+-- | A map value.
+--
+-- /See:/ 'mapValue' smart constructor.
+newtype MapValue =
+  MapValue'
+    { _mvFields :: Maybe MapValueFields
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MapValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mvFields'
+mapValue
+    :: MapValue
+mapValue = MapValue' {_mvFields = Nothing}
+
+
+-- | 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.
+mvFields :: Lens' MapValue (Maybe MapValueFields)
+mvFields = lens _mvFields (\ s a -> s{_mvFields = a})
+
+instance FromJSON MapValue where
+        parseJSON
+          = withObject "MapValue"
+              (\ o -> MapValue' <$> (o .:? "fields"))
+
+instance ToJSON MapValue where
+        toJSON MapValue'{..}
+          = object (catMaybes [("fields" .=) <$> _mvFields])
+
+-- | The request for Firestore.BatchGetDocuments.
+--
+-- /See:/ 'batchGetDocumentsRequest' smart constructor.
+data BatchGetDocumentsRequest =
+  BatchGetDocumentsRequest'
+    { _bReadTime       :: !(Maybe DateTime')
+    , _bNewTransaction :: !(Maybe TransactionOptions)
+    , _bTransaction    :: !(Maybe Bytes)
+    , _bDocuments      :: !(Maybe [Text])
+    , _bMask           :: !(Maybe DocumentMask)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'BatchGetDocumentsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bReadTime'
+--
+-- * 'bNewTransaction'
+--
+-- * 'bTransaction'
+--
+-- * 'bDocuments'
+--
+-- * 'bMask'
+batchGetDocumentsRequest
+    :: BatchGetDocumentsRequest
+batchGetDocumentsRequest =
+  BatchGetDocumentsRequest'
+    { _bReadTime = Nothing
+    , _bNewTransaction = Nothing
+    , _bTransaction = Nothing
+    , _bDocuments = Nothing
+    , _bMask = Nothing
+    }
+
+
+-- | Reads documents as they were at the given time. This may not be older
+-- than 60 seconds.
+bReadTime :: Lens' BatchGetDocumentsRequest (Maybe UTCTime)
+bReadTime
+  = lens _bReadTime (\ s a -> s{_bReadTime = a}) .
+      mapping _DateTime
+
+-- | 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.
+bNewTransaction :: Lens' BatchGetDocumentsRequest (Maybe TransactionOptions)
+bNewTransaction
+  = lens _bNewTransaction
+      (\ s a -> s{_bNewTransaction = a})
+
+-- | Reads documents in a transaction.
+bTransaction :: Lens' BatchGetDocumentsRequest (Maybe ByteString)
+bTransaction
+  = lens _bTransaction (\ s a -> s{_bTransaction = a})
+      . mapping _Bytes
+
+-- | 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.
+bDocuments :: Lens' BatchGetDocumentsRequest [Text]
+bDocuments
+  = lens _bDocuments (\ s a -> s{_bDocuments = a}) .
+      _Default
+      . _Coerce
+
+-- | 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.
+bMask :: Lens' BatchGetDocumentsRequest (Maybe DocumentMask)
+bMask = lens _bMask (\ s a -> s{_bMask = a})
+
+instance FromJSON BatchGetDocumentsRequest where
+        parseJSON
+          = withObject "BatchGetDocumentsRequest"
+              (\ o ->
+                 BatchGetDocumentsRequest' <$>
+                   (o .:? "readTime") <*> (o .:? "newTransaction") <*>
+                     (o .:? "transaction")
+                     <*> (o .:? "documents" .!= mempty)
+                     <*> (o .:? "mask"))
+
+instance ToJSON BatchGetDocumentsRequest where
+        toJSON BatchGetDocumentsRequest'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _bReadTime,
+                  ("newTransaction" .=) <$> _bNewTransaction,
+                  ("transaction" .=) <$> _bTransaction,
+                  ("documents" .=) <$> _bDocuments,
+                  ("mask" .=) <$> _bMask])
+
+-- | A Firestore document. Must not exceed 1 MiB - 4 bytes.
+--
+-- /See:/ 'document' smart constructor.
+data Document =
+  Document'
+    { _dUpdateTime :: !(Maybe DateTime')
+    , _dName       :: !(Maybe Text)
+    , _dCreateTime :: !(Maybe DateTime')
+    , _dFields     :: !(Maybe DocumentFields)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Document' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dUpdateTime'
+--
+-- * 'dName'
+--
+-- * 'dCreateTime'
+--
+-- * 'dFields'
+document
+    :: Document
+document =
+  Document'
+    { _dUpdateTime = Nothing
+    , _dName = Nothing
+    , _dCreateTime = Nothing
+    , _dFields = Nothing
+    }
+
+
+-- | 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.
+dUpdateTime :: Lens' Document (Maybe UTCTime)
+dUpdateTime
+  = lens _dUpdateTime (\ s a -> s{_dUpdateTime = a}) .
+      mapping _DateTime
+
+-- | The resource name of the document, for example
+-- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
+dName :: Lens' Document (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a})
+
+-- | 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.
+dCreateTime :: Lens' Document (Maybe UTCTime)
+dCreateTime
+  = lens _dCreateTime (\ s a -> s{_dCreateTime = a}) .
+      mapping _DateTime
+
+-- | 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 \`\`.
+dFields :: Lens' Document (Maybe DocumentFields)
+dFields = lens _dFields (\ s a -> s{_dFields = a})
+
+instance FromJSON Document where
+        parseJSON
+          = withObject "Document"
+              (\ o ->
+                 Document' <$>
+                   (o .:? "updateTime") <*> (o .:? "name") <*>
+                     (o .:? "createTime")
+                     <*> (o .:? "fields"))
+
+instance ToJSON Document where
+        toJSON Document'{..}
+          = object
+              (catMaybes
+                 [("updateTime" .=) <$> _dUpdateTime,
+                  ("name" .=) <$> _dName,
+                  ("createTime" .=) <$> _dCreateTime,
+                  ("fields" .=) <$> _dFields])
+
+-- | An array value.
+--
+-- /See:/ 'arrayValue' smart constructor.
+newtype ArrayValue =
+  ArrayValue'
+    { _avValues :: Maybe [Value]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ArrayValue' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'avValues'
+arrayValue
+    :: ArrayValue
+arrayValue = ArrayValue' {_avValues = Nothing}
+
+
+-- | Values in the array.
+avValues :: Lens' ArrayValue [Value]
+avValues
+  = lens _avValues (\ s a -> s{_avValues = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ArrayValue where
+        parseJSON
+          = withObject "ArrayValue"
+              (\ o -> ArrayValue' <$> (o .:? "values" .!= mempty))
+
+instance ToJSON ArrayValue where
+        toJSON ArrayValue'{..}
+          = object (catMaybes [("values" .=) <$> _avValues])
+
+-- | The response for Firestore.Commit.
+--
+-- /See:/ 'commitResponse' smart constructor.
+data CommitResponse =
+  CommitResponse'
+    { _crCommitTime   :: !(Maybe DateTime')
+    , _crWriteResults :: !(Maybe [WriteResult])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommitResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crCommitTime'
+--
+-- * 'crWriteResults'
+commitResponse
+    :: CommitResponse
+commitResponse =
+  CommitResponse' {_crCommitTime = Nothing, _crWriteResults = Nothing}
+
+
+-- | The time at which the commit occurred.
+crCommitTime :: Lens' CommitResponse (Maybe UTCTime)
+crCommitTime
+  = lens _crCommitTime (\ s a -> s{_crCommitTime = a})
+      . mapping _DateTime
+
+-- | The result of applying the writes. This i-th write result corresponds to
+-- the i-th write in the request.
+crWriteResults :: Lens' CommitResponse [WriteResult]
+crWriteResults
+  = lens _crWriteResults
+      (\ s a -> s{_crWriteResults = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON CommitResponse where
+        parseJSON
+          = withObject "CommitResponse"
+              (\ o ->
+                 CommitResponse' <$>
+                   (o .:? "commitTime") <*>
+                     (o .:? "writeResults" .!= mempty))
+
+instance ToJSON CommitResponse where
+        toJSON CommitResponse'{..}
+          = object
+              (catMaybes
+                 [("commitTime" .=) <$> _crCommitTime,
+                  ("writeResults" .=) <$> _crWriteResults])
+
+-- | The response for Firestore.Listen.
+--
+-- /See:/ 'listenResponse' smart constructor.
+data ListenResponse =
+  ListenResponse'
+    { _lrTargetChange   :: !(Maybe TargetChange)
+    , _lrDocumentRemove :: !(Maybe DocumentRemove)
+    , _lrDocumentChange :: !(Maybe DocumentChange)
+    , _lrFilter         :: !(Maybe ExistenceFilter)
+    , _lrDocumentDelete :: !(Maybe DocumentDelete)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListenResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrTargetChange'
+--
+-- * 'lrDocumentRemove'
+--
+-- * 'lrDocumentChange'
+--
+-- * 'lrFilter'
+--
+-- * 'lrDocumentDelete'
+listenResponse
+    :: ListenResponse
+listenResponse =
+  ListenResponse'
+    { _lrTargetChange = Nothing
+    , _lrDocumentRemove = Nothing
+    , _lrDocumentChange = Nothing
+    , _lrFilter = Nothing
+    , _lrDocumentDelete = Nothing
+    }
+
+
+-- | Targets have changed.
+lrTargetChange :: Lens' ListenResponse (Maybe TargetChange)
+lrTargetChange
+  = lens _lrTargetChange
+      (\ s a -> s{_lrTargetChange = a})
+
+-- | A Document has been removed from a target (because it is no longer
+-- relevant to that target).
+lrDocumentRemove :: Lens' ListenResponse (Maybe DocumentRemove)
+lrDocumentRemove
+  = lens _lrDocumentRemove
+      (\ s a -> s{_lrDocumentRemove = a})
+
+-- | A Document has changed.
+lrDocumentChange :: Lens' ListenResponse (Maybe DocumentChange)
+lrDocumentChange
+  = lens _lrDocumentChange
+      (\ s a -> s{_lrDocumentChange = a})
+
+-- | 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.
+lrFilter :: Lens' ListenResponse (Maybe ExistenceFilter)
+lrFilter = lens _lrFilter (\ s a -> s{_lrFilter = a})
+
+-- | A Document has been deleted.
+lrDocumentDelete :: Lens' ListenResponse (Maybe DocumentDelete)
+lrDocumentDelete
+  = lens _lrDocumentDelete
+      (\ s a -> s{_lrDocumentDelete = a})
+
+instance FromJSON ListenResponse where
+        parseJSON
+          = withObject "ListenResponse"
+              (\ o ->
+                 ListenResponse' <$>
+                   (o .:? "targetChange") <*> (o .:? "documentRemove")
+                     <*> (o .:? "documentChange")
+                     <*> (o .:? "filter")
+                     <*> (o .:? "documentDelete"))
+
+instance ToJSON ListenResponse where
+        toJSON ListenResponse'{..}
+          = object
+              (catMaybes
+                 [("targetChange" .=) <$> _lrTargetChange,
+                  ("documentRemove" .=) <$> _lrDocumentRemove,
+                  ("documentChange" .=) <$> _lrDocumentChange,
+                  ("filter" .=) <$> _lrFilter,
+                  ("documentDelete" .=) <$> _lrDocumentDelete])
+
+-- | A filter on a specific field.
+--
+-- /See:/ 'fieldFilter' smart constructor.
+data FieldFilter =
+  FieldFilter'
+    { _ffOp    :: !(Maybe FieldFilterOp)
+    , _ffField :: !(Maybe FieldReference)
+    , _ffValue :: !(Maybe Value)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FieldFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ffOp'
+--
+-- * 'ffField'
+--
+-- * 'ffValue'
+fieldFilter
+    :: FieldFilter
+fieldFilter =
+  FieldFilter' {_ffOp = Nothing, _ffField = Nothing, _ffValue = Nothing}
+
+
+-- | The operator to filter by.
+ffOp :: Lens' FieldFilter (Maybe FieldFilterOp)
+ffOp = lens _ffOp (\ s a -> s{_ffOp = a})
+
+-- | The field to filter by.
+ffField :: Lens' FieldFilter (Maybe FieldReference)
+ffField = lens _ffField (\ s a -> s{_ffField = a})
+
+-- | The value to compare to.
+ffValue :: Lens' FieldFilter (Maybe Value)
+ffValue = lens _ffValue (\ s a -> s{_ffValue = a})
+
+instance FromJSON FieldFilter where
+        parseJSON
+          = withObject "FieldFilter"
+              (\ o ->
+                 FieldFilter' <$>
+                   (o .:? "op") <*> (o .:? "field") <*> (o .:? "value"))
+
+instance ToJSON FieldFilter where
+        toJSON FieldFilter'{..}
+          = object
+              (catMaybes
+                 [("op" .=) <$> _ffOp, ("field" .=) <$> _ffField,
+                  ("value" .=) <$> _ffValue])
+
+-- | 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\`.
+--
+-- /See:/ 'googleLongrunningOperationResponse' smart constructor.
+newtype GoogleLongrunningOperationResponse =
+  GoogleLongrunningOperationResponse'
+    { _glorAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleLongrunningOperationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'glorAddtional'
+googleLongrunningOperationResponse
+    :: HashMap Text JSONValue -- ^ 'glorAddtional'
+    -> GoogleLongrunningOperationResponse
+googleLongrunningOperationResponse pGlorAddtional_ =
+  GoogleLongrunningOperationResponse'
+    {_glorAddtional = _Coerce # pGlorAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+glorAddtional :: Lens' GoogleLongrunningOperationResponse (HashMap Text JSONValue)
+glorAddtional
+  = lens _glorAddtional
+      (\ s a -> s{_glorAddtional = a})
+      . _Coerce
+
+instance FromJSON GoogleLongrunningOperationResponse
+         where
+        parseJSON
+          = withObject "GoogleLongrunningOperationResponse"
+              (\ o ->
+                 GoogleLongrunningOperationResponse' <$>
+                   (parseJSONObject o))
+
+instance ToJSON GoogleLongrunningOperationResponse
+         where
+        toJSON = toJSON . _glorAddtional
+
+-- | The response for Firestore.ListDocuments.
+--
+-- /See:/ 'listDocumentsResponse' smart constructor.
+data ListDocumentsResponse =
+  ListDocumentsResponse'
+    { _ldrNextPageToken :: !(Maybe Text)
+    , _ldrDocuments     :: !(Maybe [Document])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListDocumentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ldrNextPageToken'
+--
+-- * 'ldrDocuments'
+listDocumentsResponse
+    :: ListDocumentsResponse
+listDocumentsResponse =
+  ListDocumentsResponse' {_ldrNextPageToken = Nothing, _ldrDocuments = Nothing}
+
+
+-- | The next page token.
+ldrNextPageToken :: Lens' ListDocumentsResponse (Maybe Text)
+ldrNextPageToken
+  = lens _ldrNextPageToken
+      (\ s a -> s{_ldrNextPageToken = a})
+
+-- | The Documents found.
+ldrDocuments :: Lens' ListDocumentsResponse [Document]
+ldrDocuments
+  = lens _ldrDocuments (\ s a -> s{_ldrDocuments = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListDocumentsResponse where
+        parseJSON
+          = withObject "ListDocumentsResponse"
+              (\ o ->
+                 ListDocumentsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "documents" .!= mempty))
+
+instance ToJSON ListDocumentsResponse where
+        toJSON ListDocumentsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ldrNextPageToken,
+                  ("documents" .=) <$> _ldrDocuments])
+
+-- | Returned in the google.longrunning.Operation response field.
+--
+-- /See:/ 'googleFirestoreAdminV1ExportDocumentsResponse' smart constructor.
+newtype GoogleFirestoreAdminV1ExportDocumentsResponse =
+  GoogleFirestoreAdminV1ExportDocumentsResponse'
+    { _gOutputURIPrefix :: Maybe Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1ExportDocumentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gOutputURIPrefix'
+googleFirestoreAdminV1ExportDocumentsResponse
+    :: GoogleFirestoreAdminV1ExportDocumentsResponse
+googleFirestoreAdminV1ExportDocumentsResponse =
+  GoogleFirestoreAdminV1ExportDocumentsResponse' {_gOutputURIPrefix = Nothing}
+
+
+-- | 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.
+gOutputURIPrefix :: Lens' GoogleFirestoreAdminV1ExportDocumentsResponse (Maybe Text)
+gOutputURIPrefix
+  = lens _gOutputURIPrefix
+      (\ s a -> s{_gOutputURIPrefix = a})
+
+instance FromJSON
+           GoogleFirestoreAdminV1ExportDocumentsResponse
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1ExportDocumentsResponse"
+              (\ o ->
+                 GoogleFirestoreAdminV1ExportDocumentsResponse' <$>
+                   (o .:? "outputUriPrefix"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1ExportDocumentsResponse
+         where
+        toJSON
+          GoogleFirestoreAdminV1ExportDocumentsResponse'{..}
+          = object
+              (catMaybes
+                 [("outputUriPrefix" .=) <$> _gOutputURIPrefix])
+
+-- | The projection of document\'s fields to return.
+--
+-- /See:/ 'projection' smart constructor.
+newtype Projection =
+  Projection'
+    { _pFields :: Maybe [FieldReference]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Projection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pFields'
+projection
+    :: Projection
+projection = Projection' {_pFields = Nothing}
+
+
+-- | The fields to return. If empty, all fields are returned. To only return
+-- the name of the document, use \`[\'__name__\']\`.
+pFields :: Lens' Projection [FieldReference]
+pFields
+  = lens _pFields (\ s a -> s{_pFields = a}) . _Default
+      . _Coerce
+
+instance FromJSON Projection where
+        parseJSON
+          = withObject "Projection"
+              (\ o -> Projection' <$> (o .:? "fields" .!= mempty))
+
+instance ToJSON Projection where
+        toJSON Projection'{..}
+          = object (catMaybes [("fields" .=) <$> _pFields])
+
+-- | A filter.
+--
+-- /See:/ 'filter'' smart constructor.
+data Filter =
+  Filter'
+    { _fCompositeFilter :: !(Maybe CompositeFilter)
+    , _fFieldFilter     :: !(Maybe FieldFilter)
+    , _fUnaryFilter     :: !(Maybe UnaryFilter)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Filter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fCompositeFilter'
+--
+-- * 'fFieldFilter'
+--
+-- * 'fUnaryFilter'
+filter'
+    :: Filter
+filter' =
+  Filter'
+    { _fCompositeFilter = Nothing
+    , _fFieldFilter = Nothing
+    , _fUnaryFilter = Nothing
+    }
+
+
+-- | A composite filter.
+fCompositeFilter :: Lens' Filter (Maybe CompositeFilter)
+fCompositeFilter
+  = lens _fCompositeFilter
+      (\ s a -> s{_fCompositeFilter = a})
+
+-- | A filter on a document field.
+fFieldFilter :: Lens' Filter (Maybe FieldFilter)
+fFieldFilter
+  = lens _fFieldFilter (\ s a -> s{_fFieldFilter = a})
+
+-- | A filter that takes exactly one argument.
+fUnaryFilter :: Lens' Filter (Maybe UnaryFilter)
+fUnaryFilter
+  = lens _fUnaryFilter (\ s a -> s{_fUnaryFilter = a})
+
+instance FromJSON Filter where
+        parseJSON
+          = withObject "Filter"
+              (\ o ->
+                 Filter' <$>
+                   (o .:? "compositeFilter") <*> (o .:? "fieldFilter")
+                     <*> (o .:? "unaryFilter"))
+
+instance ToJSON Filter where
+        toJSON Filter'{..}
+          = object
+              (catMaybes
+                 [("compositeFilter" .=) <$> _fCompositeFilter,
+                  ("fieldFilter" .=) <$> _fFieldFilter,
+                  ("unaryFilter" .=) <$> _fUnaryFilter])
+
+-- | Metadata for google.longrunning.Operation results from
+-- FirestoreAdmin.CreateIndex.
+--
+-- /See:/ 'googleFirestoreAdminV1IndexOperationMetadata' smart constructor.
+data GoogleFirestoreAdminV1IndexOperationMetadata =
+  GoogleFirestoreAdminV1IndexOperationMetadata'
+    { _gfaviomProgressBytes     :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfaviomState             :: !(Maybe GoogleFirestoreAdminV1IndexOperationMetadataState)
+    , _gfaviomStartTime         :: !(Maybe DateTime')
+    , _gfaviomProgressDocuments :: !(Maybe GoogleFirestoreAdminV1Progress)
+    , _gfaviomEndTime           :: !(Maybe DateTime')
+    , _gfaviomIndex             :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleFirestoreAdminV1IndexOperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfaviomProgressBytes'
+--
+-- * 'gfaviomState'
+--
+-- * 'gfaviomStartTime'
+--
+-- * 'gfaviomProgressDocuments'
+--
+-- * 'gfaviomEndTime'
+--
+-- * 'gfaviomIndex'
+googleFirestoreAdminV1IndexOperationMetadata
+    :: GoogleFirestoreAdminV1IndexOperationMetadata
+googleFirestoreAdminV1IndexOperationMetadata =
+  GoogleFirestoreAdminV1IndexOperationMetadata'
+    { _gfaviomProgressBytes = Nothing
+    , _gfaviomState = Nothing
+    , _gfaviomStartTime = Nothing
+    , _gfaviomProgressDocuments = Nothing
+    , _gfaviomEndTime = Nothing
+    , _gfaviomIndex = Nothing
+    }
+
+
+-- | The progress, in bytes, of this operation.
+gfaviomProgressBytes :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfaviomProgressBytes
+  = lens _gfaviomProgressBytes
+      (\ s a -> s{_gfaviomProgressBytes = a})
+
+-- | The state of the operation.
+gfaviomState :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe GoogleFirestoreAdminV1IndexOperationMetadataState)
+gfaviomState
+  = lens _gfaviomState (\ s a -> s{_gfaviomState = a})
+
+-- | The time this operation started.
+gfaviomStartTime :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe UTCTime)
+gfaviomStartTime
+  = lens _gfaviomStartTime
+      (\ s a -> s{_gfaviomStartTime = a})
+      . mapping _DateTime
+
+-- | The progress, in documents, of this operation.
+gfaviomProgressDocuments :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe GoogleFirestoreAdminV1Progress)
+gfaviomProgressDocuments
+  = lens _gfaviomProgressDocuments
+      (\ s a -> s{_gfaviomProgressDocuments = a})
+
+-- | The time this operation completed. Will be unset if operation still in
+-- progress.
+gfaviomEndTime :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe UTCTime)
+gfaviomEndTime
+  = lens _gfaviomEndTime
+      (\ s a -> s{_gfaviomEndTime = a})
+      . mapping _DateTime
+
+-- | The index resource that this operation is acting on. For example:
+-- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\/indexes\/{index_id}\`
+gfaviomIndex :: Lens' GoogleFirestoreAdminV1IndexOperationMetadata (Maybe Text)
+gfaviomIndex
+  = lens _gfaviomIndex (\ s a -> s{_gfaviomIndex = a})
+
+instance FromJSON
+           GoogleFirestoreAdminV1IndexOperationMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleFirestoreAdminV1IndexOperationMetadata"
+              (\ o ->
+                 GoogleFirestoreAdminV1IndexOperationMetadata' <$>
+                   (o .:? "progressBytes") <*> (o .:? "state") <*>
+                     (o .:? "startTime")
+                     <*> (o .:? "progressDocuments")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "index"))
+
+instance ToJSON
+           GoogleFirestoreAdminV1IndexOperationMetadata
+         where
+        toJSON
+          GoogleFirestoreAdminV1IndexOperationMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gfaviomProgressBytes,
+                  ("state" .=) <$> _gfaviomState,
+                  ("startTime" .=) <$> _gfaviomStartTime,
+                  ("progressDocuments" .=) <$>
+                    _gfaviomProgressDocuments,
+                  ("endTime" .=) <$> _gfaviomEndTime,
+                  ("index" .=) <$> _gfaviomIndex])
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+--
+-- /See:/ 'locationLabels' smart constructor.
+newtype LocationLabels =
+  LocationLabels'
+    { _llAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llAddtional'
+locationLabels
+    :: HashMap Text Text -- ^ 'llAddtional'
+    -> LocationLabels
+locationLabels pLlAddtional_ =
+  LocationLabels' {_llAddtional = _Coerce # pLlAddtional_}
+
+
+llAddtional :: Lens' LocationLabels (HashMap Text Text)
+llAddtional
+  = lens _llAddtional (\ s a -> s{_llAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationLabels where
+        parseJSON
+          = withObject "LocationLabels"
+              (\ o -> LocationLabels' <$> (parseJSONObject o))
+
+instance ToJSON LocationLabels where
+        toJSON = toJSON . _llAddtional
+
+-- | A request for Firestore.Listen
+--
+-- /See:/ 'listenRequest' smart constructor.
+data ListenRequest =
+  ListenRequest'
+    { _lrRemoveTarget :: !(Maybe (Textual Int32))
+    , _lrLabels       :: !(Maybe ListenRequestLabels)
+    , _lrAddTarget    :: !(Maybe Target)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListenRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrRemoveTarget'
+--
+-- * 'lrLabels'
+--
+-- * 'lrAddTarget'
+listenRequest
+    :: ListenRequest
+listenRequest =
+  ListenRequest'
+    {_lrRemoveTarget = Nothing, _lrLabels = Nothing, _lrAddTarget = Nothing}
+
+
+-- | The ID of a target to remove from this stream.
+lrRemoveTarget :: Lens' ListenRequest (Maybe Int32)
+lrRemoveTarget
+  = lens _lrRemoveTarget
+      (\ s a -> s{_lrRemoveTarget = a})
+      . mapping _Coerce
+
+-- | Labels associated with this target change.
+lrLabels :: Lens' ListenRequest (Maybe ListenRequestLabels)
+lrLabels = lens _lrLabels (\ s a -> s{_lrLabels = a})
+
+-- | A target to add to this stream.
+lrAddTarget :: Lens' ListenRequest (Maybe Target)
+lrAddTarget
+  = lens _lrAddTarget (\ s a -> s{_lrAddTarget = a})
+
+instance FromJSON ListenRequest where
+        parseJSON
+          = withObject "ListenRequest"
+              (\ o ->
+                 ListenRequest' <$>
+                   (o .:? "removeTarget") <*> (o .:? "labels") <*>
+                     (o .:? "addTarget"))
+
+instance ToJSON ListenRequest where
+        toJSON ListenRequest'{..}
+          = object
+              (catMaybes
+                 [("removeTarget" .=) <$> _lrRemoveTarget,
+                  ("labels" .=) <$> _lrLabels,
+                  ("addTarget" .=) <$> _lrAddTarget])
+
+-- | The request for Firestore.Commit.
+--
+-- /See:/ 'commitRequest' smart constructor.
+data CommitRequest =
+  CommitRequest'
+    { _crTransaction :: !(Maybe Bytes)
+    , _crWrites      :: !(Maybe [Write])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommitRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crTransaction'
+--
+-- * 'crWrites'
+commitRequest
+    :: CommitRequest
+commitRequest = CommitRequest' {_crTransaction = Nothing, _crWrites = Nothing}
+
+
+-- | If set, applies all writes in this transaction, and commits it.
+crTransaction :: Lens' CommitRequest (Maybe ByteString)
+crTransaction
+  = lens _crTransaction
+      (\ s a -> s{_crTransaction = a})
+      . mapping _Bytes
+
+-- | The writes to apply. Always executed atomically and in order.
+crWrites :: Lens' CommitRequest [Write]
+crWrites
+  = lens _crWrites (\ s a -> s{_crWrites = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON CommitRequest where
+        parseJSON
+          = withObject "CommitRequest"
+              (\ o ->
+                 CommitRequest' <$>
+                   (o .:? "transaction") <*>
+                     (o .:? "writes" .!= mempty))
+
+instance ToJSON CommitRequest where
+        toJSON CommitRequest'{..}
+          = object
+              (catMaybes
+                 [("transaction" .=) <$> _crTransaction,
+                  ("writes" .=) <$> _crWrites])
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+--
+-- /See:/ 'locationMetadata' smart constructor.
+newtype LocationMetadata =
+  LocationMetadata'
+    { _lmAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lmAddtional'
+locationMetadata
+    :: HashMap Text JSONValue -- ^ 'lmAddtional'
+    -> LocationMetadata
+locationMetadata pLmAddtional_ =
+  LocationMetadata' {_lmAddtional = _Coerce # pLmAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+lmAddtional :: Lens' LocationMetadata (HashMap Text JSONValue)
+lmAddtional
+  = lens _lmAddtional (\ s a -> s{_lmAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationMetadata where
+        parseJSON
+          = withObject "LocationMetadata"
+              (\ o -> LocationMetadata' <$> (parseJSONObject o))
+
+instance ToJSON LocationMetadata where
+        toJSON = toJSON . _lmAddtional
+
+-- | The response message for Operations.ListOperations.
+--
+-- /See:/ 'googleLongrunningListOperationsResponse' smart constructor.
+data GoogleLongrunningListOperationsResponse =
+  GoogleLongrunningListOperationsResponse'
+    { _gllorNextPageToken :: !(Maybe Text)
+    , _gllorOperations    :: !(Maybe [GoogleLongrunningOperation])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleLongrunningListOperationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gllorNextPageToken'
+--
+-- * 'gllorOperations'
+googleLongrunningListOperationsResponse
+    :: GoogleLongrunningListOperationsResponse
+googleLongrunningListOperationsResponse =
+  GoogleLongrunningListOperationsResponse'
+    {_gllorNextPageToken = Nothing, _gllorOperations = Nothing}
+
+
+-- | The standard List next-page token.
+gllorNextPageToken :: Lens' GoogleLongrunningListOperationsResponse (Maybe Text)
+gllorNextPageToken
+  = lens _gllorNextPageToken
+      (\ s a -> s{_gllorNextPageToken = a})
+
+-- | A list of operations that matches the specified filter in the request.
+gllorOperations :: Lens' GoogleLongrunningListOperationsResponse [GoogleLongrunningOperation]
+gllorOperations
+  = lens _gllorOperations
+      (\ s a -> s{_gllorOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+           GoogleLongrunningListOperationsResponse
+         where
+        parseJSON
+          = withObject
+              "GoogleLongrunningListOperationsResponse"
+              (\ o ->
+                 GoogleLongrunningListOperationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "operations" .!= mempty))
+
+instance ToJSON
+           GoogleLongrunningListOperationsResponse
+         where
+        toJSON GoogleLongrunningListOperationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _gllorNextPageToken,
+                  ("operations" .=) <$> _gllorOperations])
+
+-- | A selection of a collection, such as \`messages as m1\`.
+--
+-- /See:/ 'collectionSelector' smart constructor.
+data CollectionSelector =
+  CollectionSelector'
+    { _csAllDescendants :: !(Maybe Bool)
+    , _csCollectionId   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CollectionSelector' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csAllDescendants'
+--
+-- * 'csCollectionId'
+collectionSelector
+    :: CollectionSelector
+collectionSelector =
+  CollectionSelector' {_csAllDescendants = Nothing, _csCollectionId = Nothing}
+
+
+-- | When false, selects only collections that are immediate children of the
+-- \`parent\` specified in the containing \`RunQueryRequest\`. When true,
+-- selects all descendant collections.
+csAllDescendants :: Lens' CollectionSelector (Maybe Bool)
+csAllDescendants
+  = lens _csAllDescendants
+      (\ s a -> s{_csAllDescendants = a})
+
+-- | The collection ID. When set, selects only collections with this ID.
+csCollectionId :: Lens' CollectionSelector (Maybe Text)
+csCollectionId
+  = lens _csCollectionId
+      (\ s a -> s{_csCollectionId = a})
+
+instance FromJSON CollectionSelector where
+        parseJSON
+          = withObject "CollectionSelector"
+              (\ o ->
+                 CollectionSelector' <$>
+                   (o .:? "allDescendants") <*> (o .:? "collectionId"))
+
+instance ToJSON CollectionSelector where
+        toJSON CollectionSelector'{..}
+          = object
+              (catMaybes
+                 [("allDescendants" .=) <$> _csAllDescendants,
+                  ("collectionId" .=) <$> _csCollectionId])
+
+-- | The request for Firestore.ListCollectionIds.
+--
+-- /See:/ 'listCollectionIdsRequest' smart constructor.
+data ListCollectionIdsRequest =
+  ListCollectionIdsRequest'
+    { _lcirPageToken :: !(Maybe Text)
+    , _lcirPageSize  :: !(Maybe (Textual Int32))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListCollectionIdsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcirPageToken'
+--
+-- * 'lcirPageSize'
+listCollectionIdsRequest
+    :: ListCollectionIdsRequest
+listCollectionIdsRequest =
+  ListCollectionIdsRequest' {_lcirPageToken = Nothing, _lcirPageSize = Nothing}
+
+
+-- | A page token. Must be a value from ListCollectionIdsResponse.
+lcirPageToken :: Lens' ListCollectionIdsRequest (Maybe Text)
+lcirPageToken
+  = lens _lcirPageToken
+      (\ s a -> s{_lcirPageToken = a})
+
+-- | The maximum number of results to return.
+lcirPageSize :: Lens' ListCollectionIdsRequest (Maybe Int32)
+lcirPageSize
+  = lens _lcirPageSize (\ s a -> s{_lcirPageSize = a})
+      . mapping _Coerce
+
+instance FromJSON ListCollectionIdsRequest where
+        parseJSON
+          = withObject "ListCollectionIdsRequest"
+              (\ o ->
+                 ListCollectionIdsRequest' <$>
+                   (o .:? "pageToken") <*> (o .:? "pageSize"))
+
+instance ToJSON ListCollectionIdsRequest where
+        toJSON ListCollectionIdsRequest'{..}
+          = object
+              (catMaybes
+                 [("pageToken" .=) <$> _lcirPageToken,
+                  ("pageSize" .=) <$> _lcirPageSize])
+
+-- | The response for Firestore.Write.
+--
+-- /See:/ 'writeResponse' smart constructor.
+data WriteResponse =
+  WriteResponse'
+    { _wStreamToken  :: !(Maybe Bytes)
+    , _wCommitTime   :: !(Maybe DateTime')
+    , _wWriteResults :: !(Maybe [WriteResult])
+    , _wStreamId     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WriteResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wStreamToken'
+--
+-- * 'wCommitTime'
+--
+-- * 'wWriteResults'
+--
+-- * 'wStreamId'
+writeResponse
+    :: WriteResponse
+writeResponse =
+  WriteResponse'
+    { _wStreamToken = Nothing
+    , _wCommitTime = Nothing
+    , _wWriteResults = Nothing
+    , _wStreamId = Nothing
+    }
+
+
+-- | 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.
+wStreamToken :: Lens' WriteResponse (Maybe ByteString)
+wStreamToken
+  = lens _wStreamToken (\ s a -> s{_wStreamToken = a})
+      . mapping _Bytes
+
+-- | The time at which the commit occurred.
+wCommitTime :: Lens' WriteResponse (Maybe UTCTime)
+wCommitTime
+  = lens _wCommitTime (\ s a -> s{_wCommitTime = a}) .
+      mapping _DateTime
+
+-- | The result of applying the writes. This i-th write result corresponds to
+-- the i-th write in the request.
+wWriteResults :: Lens' WriteResponse [WriteResult]
+wWriteResults
+  = lens _wWriteResults
+      (\ s a -> s{_wWriteResults = a})
+      . _Default
+      . _Coerce
+
+-- | The ID of the stream. Only set on the first message, when a new stream
+-- was created.
+wStreamId :: Lens' WriteResponse (Maybe Text)
+wStreamId
+  = lens _wStreamId (\ s a -> s{_wStreamId = a})
+
+instance FromJSON WriteResponse where
+        parseJSON
+          = withObject "WriteResponse"
+              (\ o ->
+                 WriteResponse' <$>
+                   (o .:? "streamToken") <*> (o .:? "commitTime") <*>
+                     (o .:? "writeResults" .!= mempty)
+                     <*> (o .:? "streamId"))
+
+instance ToJSON WriteResponse where
+        toJSON WriteResponse'{..}
+          = object
+              (catMaybes
+                 [("streamToken" .=) <$> _wStreamToken,
+                  ("commitTime" .=) <$> _wCommitTime,
+                  ("writeResults" .=) <$> _wWriteResults,
+                  ("streamId" .=) <$> _wStreamId])
+
+-- | An order on a field.
+--
+-- /See:/ 'order' smart constructor.
+data Order =
+  Order'
+    { _oField     :: !(Maybe FieldReference)
+    , _oDirection :: !(Maybe OrderDirection)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Order' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oField'
+--
+-- * 'oDirection'
+order
+    :: Order
+order = Order' {_oField = Nothing, _oDirection = Nothing}
+
+
+-- | The field to order by.
+oField :: Lens' Order (Maybe FieldReference)
+oField = lens _oField (\ s a -> s{_oField = a})
+
+-- | The direction to order by. Defaults to \`ASCENDING\`.
+oDirection :: Lens' Order (Maybe OrderDirection)
+oDirection
+  = lens _oDirection (\ s a -> s{_oDirection = a})
+
+instance FromJSON Order where
+        parseJSON
+          = withObject "Order"
+              (\ o ->
+                 Order' <$> (o .:? "field") <*> (o .:? "direction"))
+
+instance ToJSON Order where
+        toJSON Order'{..}
+          = object
+              (catMaybes
+                 [("field" .=) <$> _oField,
+                  ("direction" .=) <$> _oDirection])
+
+-- | 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.
+--
+-- /See:/ 'documentDelete' smart constructor.
+data DocumentDelete =
+  DocumentDelete'
+    { _ddReadTime         :: !(Maybe DateTime')
+    , _ddDocument         :: !(Maybe Text)
+    , _ddRemovedTargetIds :: !(Maybe [Textual Int32])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddReadTime'
+--
+-- * 'ddDocument'
+--
+-- * 'ddRemovedTargetIds'
+documentDelete
+    :: DocumentDelete
+documentDelete =
+  DocumentDelete'
+    { _ddReadTime = Nothing
+    , _ddDocument = Nothing
+    , _ddRemovedTargetIds = Nothing
+    }
+
+
+-- | The read timestamp at which the delete was observed. Greater or equal to
+-- the \`commit_time\` of the delete.
+ddReadTime :: Lens' DocumentDelete (Maybe UTCTime)
+ddReadTime
+  = lens _ddReadTime (\ s a -> s{_ddReadTime = a}) .
+      mapping _DateTime
+
+-- | The resource name of the Document that was deleted.
+ddDocument :: Lens' DocumentDelete (Maybe Text)
+ddDocument
+  = lens _ddDocument (\ s a -> s{_ddDocument = a})
+
+-- | A set of target IDs for targets that previously matched this entity.
+ddRemovedTargetIds :: Lens' DocumentDelete [Int32]
+ddRemovedTargetIds
+  = lens _ddRemovedTargetIds
+      (\ s a -> s{_ddRemovedTargetIds = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON DocumentDelete where
+        parseJSON
+          = withObject "DocumentDelete"
+              (\ o ->
+                 DocumentDelete' <$>
+                   (o .:? "readTime") <*> (o .:? "document") <*>
+                     (o .:? "removedTargetIds" .!= mempty))
+
+instance ToJSON DocumentDelete where
+        toJSON DocumentDelete'{..}
+          = object
+              (catMaybes
+                 [("readTime" .=) <$> _ddReadTime,
+                  ("document" .=) <$> _ddDocument,
+                  ("removedTargetIds" .=) <$> _ddRemovedTargetIds])
+
+-- | A transformation of a field of the document.
+--
+-- /See:/ 'fieldTransform' smart constructor.
+data FieldTransform =
+  FieldTransform'
+    { _ftFieldPath             :: !(Maybe Text)
+    , _ftAppendMissingElements :: !(Maybe ArrayValue)
+    , _ftMaximum               :: !(Maybe Value)
+    , _ftMinimum               :: !(Maybe Value)
+    , _ftSetToServerValue      :: !(Maybe FieldTransformSetToServerValue)
+    , _ftRemoveAllFromArray    :: !(Maybe ArrayValue)
+    , _ftIncrement             :: !(Maybe Value)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FieldTransform' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ftFieldPath'
+--
+-- * 'ftAppendMissingElements'
+--
+-- * 'ftMaximum'
+--
+-- * 'ftMinimum'
+--
+-- * 'ftSetToServerValue'
+--
+-- * 'ftRemoveAllFromArray'
+--
+-- * 'ftIncrement'
+fieldTransform
+    :: FieldTransform
+fieldTransform =
+  FieldTransform'
+    { _ftFieldPath = Nothing
+    , _ftAppendMissingElements = Nothing
+    , _ftMaximum = Nothing
+    , _ftMinimum = Nothing
+    , _ftSetToServerValue = Nothing
+    , _ftRemoveAllFromArray = Nothing
+    , _ftIncrement = Nothing
+    }
+
+
+-- | The path of the field. See Document.fields for the field path syntax
+-- reference.
+ftFieldPath :: Lens' FieldTransform (Maybe Text)
+ftFieldPath
+  = lens _ftFieldPath (\ s a -> s{_ftFieldPath = a})
+
+-- | 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.
+ftAppendMissingElements :: Lens' FieldTransform (Maybe ArrayValue)
+ftAppendMissingElements
+  = lens _ftAppendMissingElements
+      (\ s a -> s{_ftAppendMissingElements = a})
+
+-- | 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.
+ftMaximum :: Lens' FieldTransform (Maybe Value)
+ftMaximum
+  = lens _ftMaximum (\ s a -> s{_ftMaximum = a})
+
+-- | 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.
+ftMinimum :: Lens' FieldTransform (Maybe Value)
+ftMinimum
+  = lens _ftMinimum (\ s a -> s{_ftMinimum = a})
+
+-- | Sets the field to the given server value.
+ftSetToServerValue :: Lens' FieldTransform (Maybe FieldTransformSetToServerValue)
+ftSetToServerValue
+  = lens _ftSetToServerValue
+      (\ s a -> s{_ftSetToServerValue = a})
+
+-- | 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.
+ftRemoveAllFromArray :: Lens' FieldTransform (Maybe ArrayValue)
+ftRemoveAllFromArray
+  = lens _ftRemoveAllFromArray
+      (\ s a -> s{_ftRemoveAllFromArray = a})
+
+-- | 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.
+ftIncrement :: Lens' FieldTransform (Maybe Value)
+ftIncrement
+  = lens _ftIncrement (\ s a -> s{_ftIncrement = a})
+
+instance FromJSON FieldTransform where
+        parseJSON
+          = withObject "FieldTransform"
+              (\ o ->
+                 FieldTransform' <$>
+                   (o .:? "fieldPath") <*>
+                     (o .:? "appendMissingElements")
+                     <*> (o .:? "maximum")
+                     <*> (o .:? "minimum")
+                     <*> (o .:? "setToServerValue")
+                     <*> (o .:? "removeAllFromArray")
+                     <*> (o .:? "increment"))
+
+instance ToJSON FieldTransform where
+        toJSON FieldTransform'{..}
+          = object
+              (catMaybes
+                 [("fieldPath" .=) <$> _ftFieldPath,
+                  ("appendMissingElements" .=) <$>
+                    _ftAppendMissingElements,
+                  ("maximum" .=) <$> _ftMaximum,
+                  ("minimum" .=) <$> _ftMinimum,
+                  ("setToServerValue" .=) <$> _ftSetToServerValue,
+                  ("removeAllFromArray" .=) <$> _ftRemoveAllFromArray,
+                  ("increment" .=) <$> _ftIncrement])
+
+-- | 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.
+--
+-- /See:/ 'mapValueFields' smart constructor.
+newtype MapValueFields =
+  MapValueFields'
+    { _mvfAddtional :: HashMap Text Value
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MapValueFields' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mvfAddtional'
+mapValueFields
+    :: HashMap Text Value -- ^ 'mvfAddtional'
+    -> MapValueFields
+mapValueFields pMvfAddtional_ =
+  MapValueFields' {_mvfAddtional = _Coerce # pMvfAddtional_}
+
+
+mvfAddtional :: Lens' MapValueFields (HashMap Text Value)
+mvfAddtional
+  = lens _mvfAddtional (\ s a -> s{_mvfAddtional = a})
+      . _Coerce
+
+instance FromJSON MapValueFields where
+        parseJSON
+          = withObject "MapValueFields"
+              (\ o -> MapValueFields' <$> (parseJSONObject o))
+
+instance ToJSON MapValueFields where
+        toJSON = toJSON . _mvfAddtional
+
+-- | 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 \`\`.
+--
+-- /See:/ 'documentFields' smart constructor.
+newtype DocumentFields =
+  DocumentFields'
+    { _dfAddtional :: HashMap Text Value
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentFields' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfAddtional'
+documentFields
+    :: HashMap Text Value -- ^ 'dfAddtional'
+    -> DocumentFields
+documentFields pDfAddtional_ =
+  DocumentFields' {_dfAddtional = _Coerce # pDfAddtional_}
+
+
+dfAddtional :: Lens' DocumentFields (HashMap Text Value)
+dfAddtional
+  = lens _dfAddtional (\ s a -> s{_dfAddtional = a}) .
+      _Coerce
+
+instance FromJSON DocumentFields where
+        parseJSON
+          = withObject "DocumentFields"
+              (\ o -> DocumentFields' <$> (parseJSONObject o))
+
+instance ToJSON DocumentFields where
+        toJSON = toJSON . _dfAddtional
+
+-- | Options for a transaction that can only be used to read documents.
+--
+-- /See:/ 'readOnly' smart constructor.
+newtype ReadOnly =
+  ReadOnly'
+    { _roReadTime :: Maybe DateTime'
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ReadOnly' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'roReadTime'
+readOnly
+    :: ReadOnly
+readOnly = ReadOnly' {_roReadTime = Nothing}
+
+
+-- | Reads documents at the given time. This may not be older than 60
+-- seconds.
+roReadTime :: Lens' ReadOnly (Maybe UTCTime)
+roReadTime
+  = lens _roReadTime (\ s a -> s{_roReadTime = a}) .
+      mapping _DateTime
+
+instance FromJSON ReadOnly where
+        parseJSON
+          = withObject "ReadOnly"
+              (\ o -> ReadOnly' <$> (o .:? "readTime"))
+
+instance ToJSON ReadOnly where
+        toJSON ReadOnly'{..}
+          = object
+              (catMaybes [("readTime" .=) <$> _roReadTime])
+
+-- | A specification of a set of documents to listen to.
+--
+-- /See:/ 'target' smart constructor.
+data Target =
+  Target'
+    { _tTargetId    :: !(Maybe (Textual Int32))
+    , _tOnce        :: !(Maybe Bool)
+    , _tReadTime    :: !(Maybe DateTime')
+    , _tResumeToken :: !(Maybe Bytes)
+    , _tDocuments   :: !(Maybe DocumentsTarget)
+    , _tQuery       :: !(Maybe QueryTarget)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Target' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tTargetId'
+--
+-- * 'tOnce'
+--
+-- * 'tReadTime'
+--
+-- * 'tResumeToken'
+--
+-- * 'tDocuments'
+--
+-- * 'tQuery'
+target
+    :: Target
+target =
+  Target'
+    { _tTargetId = Nothing
+    , _tOnce = Nothing
+    , _tReadTime = Nothing
+    , _tResumeToken = Nothing
+    , _tDocuments = Nothing
+    , _tQuery = Nothing
+    }
+
+
+-- | 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.
+tTargetId :: Lens' Target (Maybe Int32)
+tTargetId
+  = lens _tTargetId (\ s a -> s{_tTargetId = a}) .
+      mapping _Coerce
+
+-- | If the target should be removed once it is current and consistent.
+tOnce :: Lens' Target (Maybe Bool)
+tOnce = lens _tOnce (\ s a -> s{_tOnce = a})
+
+-- | Start listening after a specific \`read_time\`. The client must know the
+-- state of matching documents at this time.
+tReadTime :: Lens' Target (Maybe UTCTime)
+tReadTime
+  = lens _tReadTime (\ s a -> s{_tReadTime = a}) .
+      mapping _DateTime
+
+-- | A resume token from a prior TargetChange for an identical target. Using
+-- a resume token with a different target is unsupported and may fail.
+tResumeToken :: Lens' Target (Maybe ByteString)
+tResumeToken
+  = lens _tResumeToken (\ s a -> s{_tResumeToken = a})
+      . mapping _Bytes
+
+-- | A target specified by a set of document names.
+tDocuments :: Lens' Target (Maybe DocumentsTarget)
+tDocuments
+  = lens _tDocuments (\ s a -> s{_tDocuments = a})
+
+-- | A target specified by a query.
+tQuery :: Lens' Target (Maybe QueryTarget)
+tQuery = lens _tQuery (\ s a -> s{_tQuery = a})
+
+instance FromJSON Target where
+        parseJSON
+          = withObject "Target"
+              (\ o ->
+                 Target' <$>
+                   (o .:? "targetId") <*> (o .:? "once") <*>
+                     (o .:? "readTime")
+                     <*> (o .:? "resumeToken")
+                     <*> (o .:? "documents")
+                     <*> (o .:? "query"))
+
+instance ToJSON Target where
+        toJSON Target'{..}
+          = object
+              (catMaybes
+                 [("targetId" .=) <$> _tTargetId,
+                  ("once" .=) <$> _tOnce,
+                  ("readTime" .=) <$> _tReadTime,
+                  ("resumeToken" .=) <$> _tResumeToken,
+                  ("documents" .=) <$> _tDocuments,
+                  ("query" .=) <$> _tQuery])
+
+-- | Labels associated with this write request.
+--
+-- /See:/ 'writeRequestLabels' smart constructor.
+newtype WriteRequestLabels =
+  WriteRequestLabels'
+    { _wrlAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'WriteRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wrlAddtional'
+writeRequestLabels
+    :: HashMap Text Text -- ^ 'wrlAddtional'
+    -> WriteRequestLabels
+writeRequestLabels pWrlAddtional_ =
+  WriteRequestLabels' {_wrlAddtional = _Coerce # pWrlAddtional_}
+
+
+wrlAddtional :: Lens' WriteRequestLabels (HashMap Text Text)
+wrlAddtional
+  = lens _wrlAddtional (\ s a -> s{_wrlAddtional = a})
+      . _Coerce
+
+instance FromJSON WriteRequestLabels where
+        parseJSON
+          = withObject "WriteRequestLabels"
+              (\ o -> WriteRequestLabels' <$> (parseJSONObject o))
+
+instance ToJSON WriteRequestLabels where
+        toJSON = toJSON . _wrlAddtional
+
+-- | This resource represents a long-running operation that is the result of
+-- a network API call.
+--
+-- /See:/ 'googleLongrunningOperation' smart constructor.
+data GoogleLongrunningOperation =
+  GoogleLongrunningOperation'
+    { _gloDone     :: !(Maybe Bool)
+    , _gloError    :: !(Maybe Status)
+    , _gloResponse :: !(Maybe GoogleLongrunningOperationResponse)
+    , _gloName     :: !(Maybe Text)
+    , _gloMetadata :: !(Maybe GoogleLongrunningOperationMetadata)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GoogleLongrunningOperation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gloDone'
+--
+-- * 'gloError'
+--
+-- * 'gloResponse'
+--
+-- * 'gloName'
+--
+-- * 'gloMetadata'
+googleLongrunningOperation
+    :: GoogleLongrunningOperation
+googleLongrunningOperation =
+  GoogleLongrunningOperation'
+    { _gloDone = Nothing
+    , _gloError = Nothing
+    , _gloResponse = Nothing
+    , _gloName = Nothing
+    , _gloMetadata = Nothing
+    }
+
+
+-- | 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.
+gloDone :: Lens' GoogleLongrunningOperation (Maybe Bool)
+gloDone = lens _gloDone (\ s a -> s{_gloDone = a})
+
+-- | The error result of the operation in case of failure or cancellation.
+gloError :: Lens' GoogleLongrunningOperation (Maybe Status)
+gloError = lens _gloError (\ s a -> s{_gloError = a})
+
+-- | 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\`.
+gloResponse :: Lens' GoogleLongrunningOperation (Maybe GoogleLongrunningOperationResponse)
+gloResponse
+  = lens _gloResponse (\ s a -> s{_gloResponse = a})
+
+-- | 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\`.
+gloName :: Lens' GoogleLongrunningOperation (Maybe Text)
+gloName = lens _gloName (\ s a -> s{_gloName = a})
+
+-- | 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.
+gloMetadata :: Lens' GoogleLongrunningOperation (Maybe GoogleLongrunningOperationMetadata)
+gloMetadata
+  = lens _gloMetadata (\ s a -> s{_gloMetadata = a})
+
+instance FromJSON GoogleLongrunningOperation where
+        parseJSON
+          = withObject "GoogleLongrunningOperation"
+              (\ o ->
+                 GoogleLongrunningOperation' <$>
+                   (o .:? "done") <*> (o .:? "error") <*>
+                     (o .:? "response")
+                     <*> (o .:? "name")
+                     <*> (o .:? "metadata"))
+
+instance ToJSON GoogleLongrunningOperation where
+        toJSON GoogleLongrunningOperation'{..}
+          = object
+              (catMaybes
+                 [("done" .=) <$> _gloDone,
+                  ("error" .=) <$> _gloError,
+                  ("response" .=) <$> _gloResponse,
+                  ("name" .=) <$> _gloName,
+                  ("metadata" .=) <$> _gloMetadata])
+
+-- | A filter with a single operand.
+--
+-- /See:/ 'unaryFilter' smart constructor.
+data UnaryFilter =
+  UnaryFilter'
+    { _ufOp    :: !(Maybe UnaryFilterOp)
+    , _ufField :: !(Maybe FieldReference)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UnaryFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ufOp'
+--
+-- * 'ufField'
+unaryFilter
+    :: UnaryFilter
+unaryFilter = UnaryFilter' {_ufOp = Nothing, _ufField = Nothing}
+
 
 -- | The unary operator to apply.
 ufOp :: Lens' UnaryFilter (Maybe UnaryFilterOp)
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Get.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Get.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Get.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Get.hs
@@ -61,15 +61,18 @@
 -- | Gets the metadata and configuration for a Field.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsFieldsGet' smart constructor.
-data ProjectsDatabasesCollectionGroupsFieldsGet = ProjectsDatabasesCollectionGroupsFieldsGet'
+data ProjectsDatabasesCollectionGroupsFieldsGet =
+  ProjectsDatabasesCollectionGroupsFieldsGet'
     { _pdcgfgXgafv          :: !(Maybe Xgafv)
     , _pdcgfgUploadProtocol :: !(Maybe Text)
     , _pdcgfgAccessToken    :: !(Maybe Text)
     , _pdcgfgUploadType     :: !(Maybe Text)
     , _pdcgfgName           :: !Text
     , _pdcgfgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsFieldsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,7 +92,7 @@
     :: Text -- ^ 'pdcgfgName'
     -> ProjectsDatabasesCollectionGroupsFieldsGet
 projectsDatabasesCollectionGroupsFieldsGet pPdcgfgName_ =
-    ProjectsDatabasesCollectionGroupsFieldsGet'
+  ProjectsDatabasesCollectionGroupsFieldsGet'
     { _pdcgfgXgafv = Nothing
     , _pdcgfgUploadProtocol = Nothing
     , _pdcgfgAccessToken = Nothing
@@ -98,6 +101,7 @@
     , _pdcgfgCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdcgfgXgafv :: Lens' ProjectsDatabasesCollectionGroupsFieldsGet (Maybe Xgafv)
 pdcgfgXgafv
@@ -134,7 +138,8 @@
       (\ s a -> s{_pdcgfgCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsFieldsGet where
+           ProjectsDatabasesCollectionGroupsFieldsGet
+         where
         type Rs ProjectsDatabasesCollectionGroupsFieldsGet =
              GoogleFirestoreAdminV1Field
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/List.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/List.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/List.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/List.hs
@@ -77,7 +77,8 @@
 -- \`indexConfig.usesAncestorConfig:false\`.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsFieldsList' smart constructor.
-data ProjectsDatabasesCollectionGroupsFieldsList = ProjectsDatabasesCollectionGroupsFieldsList'
+data ProjectsDatabasesCollectionGroupsFieldsList =
+  ProjectsDatabasesCollectionGroupsFieldsList'
     { _pdcgflParent         :: !Text
     , _pdcgflXgafv          :: !(Maybe Xgafv)
     , _pdcgflUploadProtocol :: !(Maybe Text)
@@ -87,8 +88,10 @@
     , _pdcgflPageToken      :: !(Maybe Text)
     , _pdcgflPageSize       :: !(Maybe (Textual Int32))
     , _pdcgflCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsFieldsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -114,7 +117,7 @@
     :: Text -- ^ 'pdcgflParent'
     -> ProjectsDatabasesCollectionGroupsFieldsList
 projectsDatabasesCollectionGroupsFieldsList pPdcgflParent_ =
-    ProjectsDatabasesCollectionGroupsFieldsList'
+  ProjectsDatabasesCollectionGroupsFieldsList'
     { _pdcgflParent = pPdcgflParent_
     , _pdcgflXgafv = Nothing
     , _pdcgflUploadProtocol = Nothing
@@ -126,6 +129,7 @@
     , _pdcgflCallback = Nothing
     }
 
+
 -- | A parent name of the form
 -- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\`
 pdcgflParent :: Lens' ProjectsDatabasesCollectionGroupsFieldsList Text
@@ -186,7 +190,8 @@
       (\ s a -> s{_pdcgflCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsFieldsList where
+           ProjectsDatabasesCollectionGroupsFieldsList
+         where
         type Rs ProjectsDatabasesCollectionGroupsFieldsList =
              GoogleFirestoreAdminV1ListFieldsResponse
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Patch.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Patch.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Patch.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Patch.hs
@@ -83,7 +83,8 @@
 -- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/__default__\/fields\/*\`.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsFieldsPatch' smart constructor.
-data ProjectsDatabasesCollectionGroupsFieldsPatch = ProjectsDatabasesCollectionGroupsFieldsPatch'
+data ProjectsDatabasesCollectionGroupsFieldsPatch =
+  ProjectsDatabasesCollectionGroupsFieldsPatch'
     { _pdcgfpXgafv          :: !(Maybe Xgafv)
     , _pdcgfpUploadProtocol :: !(Maybe Text)
     , _pdcgfpUpdateMask     :: !(Maybe GFieldMask)
@@ -92,8 +93,10 @@
     , _pdcgfpPayload        :: !GoogleFirestoreAdminV1Field
     , _pdcgfpName           :: !Text
     , _pdcgfpCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsFieldsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -118,7 +121,7 @@
     -> Text -- ^ 'pdcgfpName'
     -> ProjectsDatabasesCollectionGroupsFieldsPatch
 projectsDatabasesCollectionGroupsFieldsPatch pPdcgfpPayload_ pPdcgfpName_ =
-    ProjectsDatabasesCollectionGroupsFieldsPatch'
+  ProjectsDatabasesCollectionGroupsFieldsPatch'
     { _pdcgfpXgafv = Nothing
     , _pdcgfpUploadProtocol = Nothing
     , _pdcgfpUpdateMask = Nothing
@@ -129,6 +132,7 @@
     , _pdcgfpCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdcgfpXgafv :: Lens' ProjectsDatabasesCollectionGroupsFieldsPatch (Maybe Xgafv)
 pdcgfpXgafv
@@ -195,7 +199,8 @@
       (\ s a -> s{_pdcgfpCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsFieldsPatch where
+           ProjectsDatabasesCollectionGroupsFieldsPatch
+         where
         type Rs ProjectsDatabasesCollectionGroupsFieldsPatch
              = GoogleLongrunningOperation
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Create.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Create.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Create.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Create.hs
@@ -68,7 +68,8 @@
 -- the operation will be the type IndexOperationMetadata.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsIndexesCreate' smart constructor.
-data ProjectsDatabasesCollectionGroupsIndexesCreate = ProjectsDatabasesCollectionGroupsIndexesCreate'
+data ProjectsDatabasesCollectionGroupsIndexesCreate =
+  ProjectsDatabasesCollectionGroupsIndexesCreate'
     { _pdcgicParent         :: !Text
     , _pdcgicXgafv          :: !(Maybe Xgafv)
     , _pdcgicUploadProtocol :: !(Maybe Text)
@@ -76,8 +77,10 @@
     , _pdcgicUploadType     :: !(Maybe Text)
     , _pdcgicPayload        :: !GoogleFirestoreAdminV1Index
     , _pdcgicCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsIndexesCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -100,7 +103,7 @@
     -> GoogleFirestoreAdminV1Index -- ^ 'pdcgicPayload'
     -> ProjectsDatabasesCollectionGroupsIndexesCreate
 projectsDatabasesCollectionGroupsIndexesCreate pPdcgicParent_ pPdcgicPayload_ =
-    ProjectsDatabasesCollectionGroupsIndexesCreate'
+  ProjectsDatabasesCollectionGroupsIndexesCreate'
     { _pdcgicParent = pPdcgicParent_
     , _pdcgicXgafv = Nothing
     , _pdcgicUploadProtocol = Nothing
@@ -110,6 +113,7 @@
     , _pdcgicCallback = Nothing
     }
 
+
 -- | A parent name of the form
 -- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\`
 pdcgicParent :: Lens' ProjectsDatabasesCollectionGroupsIndexesCreate Text
@@ -152,7 +156,8 @@
       (\ s a -> s{_pdcgicCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsIndexesCreate where
+           ProjectsDatabasesCollectionGroupsIndexesCreate
+         where
         type Rs
                ProjectsDatabasesCollectionGroupsIndexesCreate
              = GoogleLongrunningOperation
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Delete.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Delete.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Delete.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Delete.hs
@@ -60,15 +60,18 @@
 -- | Deletes a composite index.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsIndexesDelete' smart constructor.
-data ProjectsDatabasesCollectionGroupsIndexesDelete = ProjectsDatabasesCollectionGroupsIndexesDelete'
+data ProjectsDatabasesCollectionGroupsIndexesDelete =
+  ProjectsDatabasesCollectionGroupsIndexesDelete'
     { _pdcgidXgafv          :: !(Maybe Xgafv)
     , _pdcgidUploadProtocol :: !(Maybe Text)
     , _pdcgidAccessToken    :: !(Maybe Text)
     , _pdcgidUploadType     :: !(Maybe Text)
     , _pdcgidName           :: !Text
     , _pdcgidCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsIndexesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -88,7 +91,7 @@
     :: Text -- ^ 'pdcgidName'
     -> ProjectsDatabasesCollectionGroupsIndexesDelete
 projectsDatabasesCollectionGroupsIndexesDelete pPdcgidName_ =
-    ProjectsDatabasesCollectionGroupsIndexesDelete'
+  ProjectsDatabasesCollectionGroupsIndexesDelete'
     { _pdcgidXgafv = Nothing
     , _pdcgidUploadProtocol = Nothing
     , _pdcgidAccessToken = Nothing
@@ -97,6 +100,7 @@
     , _pdcgidCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdcgidXgafv :: Lens' ProjectsDatabasesCollectionGroupsIndexesDelete (Maybe Xgafv)
 pdcgidXgafv
@@ -133,7 +137,8 @@
       (\ s a -> s{_pdcgidCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsIndexesDelete where
+           ProjectsDatabasesCollectionGroupsIndexesDelete
+         where
         type Rs
                ProjectsDatabasesCollectionGroupsIndexesDelete
              = Empty
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Get.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Get.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Get.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Get.hs
@@ -61,15 +61,18 @@
 -- | Gets a composite index.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsIndexesGet' smart constructor.
-data ProjectsDatabasesCollectionGroupsIndexesGet = ProjectsDatabasesCollectionGroupsIndexesGet'
+data ProjectsDatabasesCollectionGroupsIndexesGet =
+  ProjectsDatabasesCollectionGroupsIndexesGet'
     { _pdcgigXgafv          :: !(Maybe Xgafv)
     , _pdcgigUploadProtocol :: !(Maybe Text)
     , _pdcgigAccessToken    :: !(Maybe Text)
     , _pdcgigUploadType     :: !(Maybe Text)
     , _pdcgigName           :: !Text
     , _pdcgigCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsIndexesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,7 +92,7 @@
     :: Text -- ^ 'pdcgigName'
     -> ProjectsDatabasesCollectionGroupsIndexesGet
 projectsDatabasesCollectionGroupsIndexesGet pPdcgigName_ =
-    ProjectsDatabasesCollectionGroupsIndexesGet'
+  ProjectsDatabasesCollectionGroupsIndexesGet'
     { _pdcgigXgafv = Nothing
     , _pdcgigUploadProtocol = Nothing
     , _pdcgigAccessToken = Nothing
@@ -98,6 +101,7 @@
     , _pdcgigCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdcgigXgafv :: Lens' ProjectsDatabasesCollectionGroupsIndexesGet (Maybe Xgafv)
 pdcgigXgafv
@@ -134,7 +138,8 @@
       (\ s a -> s{_pdcgigCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsIndexesGet where
+           ProjectsDatabasesCollectionGroupsIndexesGet
+         where
         type Rs ProjectsDatabasesCollectionGroupsIndexesGet =
              GoogleFirestoreAdminV1Index
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/List.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/List.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/List.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/List.hs
@@ -69,7 +69,8 @@
 -- | Lists composite indexes.
 --
 -- /See:/ 'projectsDatabasesCollectionGroupsIndexesList' smart constructor.
-data ProjectsDatabasesCollectionGroupsIndexesList = ProjectsDatabasesCollectionGroupsIndexesList'
+data ProjectsDatabasesCollectionGroupsIndexesList =
+  ProjectsDatabasesCollectionGroupsIndexesList'
     { _pdcgilParent         :: !Text
     , _pdcgilXgafv          :: !(Maybe Xgafv)
     , _pdcgilUploadProtocol :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _pdcgilPageToken      :: !(Maybe Text)
     , _pdcgilPageSize       :: !(Maybe (Textual Int32))
     , _pdcgilCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesCollectionGroupsIndexesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -106,7 +109,7 @@
     :: Text -- ^ 'pdcgilParent'
     -> ProjectsDatabasesCollectionGroupsIndexesList
 projectsDatabasesCollectionGroupsIndexesList pPdcgilParent_ =
-    ProjectsDatabasesCollectionGroupsIndexesList'
+  ProjectsDatabasesCollectionGroupsIndexesList'
     { _pdcgilParent = pPdcgilParent_
     , _pdcgilXgafv = Nothing
     , _pdcgilUploadProtocol = Nothing
@@ -118,6 +121,7 @@
     , _pdcgilCallback = Nothing
     }
 
+
 -- | A parent name of the form
 -- \`projects\/{project_id}\/databases\/{database_id}\/collectionGroups\/{collection_id}\`
 pdcgilParent :: Lens' ProjectsDatabasesCollectionGroupsIndexesList Text
@@ -174,7 +178,8 @@
       (\ s a -> s{_pdcgilCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesCollectionGroupsIndexesList where
+           ProjectsDatabasesCollectionGroupsIndexesList
+         where
         type Rs ProjectsDatabasesCollectionGroupsIndexesList
              = GoogleFirestoreAdminV1ListIndexesResponse
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BatchGet.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BatchGet.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BatchGet.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BatchGet.hs
@@ -65,7 +65,8 @@
 -- guaranteed to be returned in the same order that they were requested.
 --
 -- /See:/ 'projectsDatabasesDocumentsBatchGet' smart constructor.
-data ProjectsDatabasesDocumentsBatchGet = ProjectsDatabasesDocumentsBatchGet'
+data ProjectsDatabasesDocumentsBatchGet =
+  ProjectsDatabasesDocumentsBatchGet'
     { _pddbgXgafv          :: !(Maybe Xgafv)
     , _pddbgUploadProtocol :: !(Maybe Text)
     , _pddbgDatabase       :: !Text
@@ -73,8 +74,10 @@
     , _pddbgUploadType     :: !(Maybe Text)
     , _pddbgPayload        :: !BatchGetDocumentsRequest
     , _pddbgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsBatchGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,7 +100,7 @@
     -> BatchGetDocumentsRequest -- ^ 'pddbgPayload'
     -> ProjectsDatabasesDocumentsBatchGet
 projectsDatabasesDocumentsBatchGet pPddbgDatabase_ pPddbgPayload_ =
-    ProjectsDatabasesDocumentsBatchGet'
+  ProjectsDatabasesDocumentsBatchGet'
     { _pddbgXgafv = Nothing
     , _pddbgUploadProtocol = Nothing
     , _pddbgDatabase = pPddbgDatabase_
@@ -107,6 +110,7 @@
     , _pddbgCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddbgXgafv :: Lens' ProjectsDatabasesDocumentsBatchGet (Maybe Xgafv)
 pddbgXgafv
@@ -149,7 +153,8 @@
       (\ s a -> s{_pddbgCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsBatchGet where
+           ProjectsDatabasesDocumentsBatchGet
+         where
         type Rs ProjectsDatabasesDocumentsBatchGet =
              BatchGetDocumentsResponse
         type Scopes ProjectsDatabasesDocumentsBatchGet =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BeginTransaction.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BeginTransaction.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BeginTransaction.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BeginTransaction.hs
@@ -64,7 +64,8 @@
 -- | Starts a new transaction.
 --
 -- /See:/ 'projectsDatabasesDocumentsBeginTransaction' smart constructor.
-data ProjectsDatabasesDocumentsBeginTransaction = ProjectsDatabasesDocumentsBeginTransaction'
+data ProjectsDatabasesDocumentsBeginTransaction =
+  ProjectsDatabasesDocumentsBeginTransaction'
     { _pddbtXgafv          :: !(Maybe Xgafv)
     , _pddbtUploadProtocol :: !(Maybe Text)
     , _pddbtDatabase       :: !Text
@@ -72,8 +73,10 @@
     , _pddbtUploadType     :: !(Maybe Text)
     , _pddbtPayload        :: !BeginTransactionRequest
     , _pddbtCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsBeginTransaction' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -96,7 +99,7 @@
     -> BeginTransactionRequest -- ^ 'pddbtPayload'
     -> ProjectsDatabasesDocumentsBeginTransaction
 projectsDatabasesDocumentsBeginTransaction pPddbtDatabase_ pPddbtPayload_ =
-    ProjectsDatabasesDocumentsBeginTransaction'
+  ProjectsDatabasesDocumentsBeginTransaction'
     { _pddbtXgafv = Nothing
     , _pddbtUploadProtocol = Nothing
     , _pddbtDatabase = pPddbtDatabase_
@@ -106,6 +109,7 @@
     , _pddbtCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddbtXgafv :: Lens' ProjectsDatabasesDocumentsBeginTransaction (Maybe Xgafv)
 pddbtXgafv
@@ -148,7 +152,8 @@
       (\ s a -> s{_pddbtCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsBeginTransaction where
+           ProjectsDatabasesDocumentsBeginTransaction
+         where
         type Rs ProjectsDatabasesDocumentsBeginTransaction =
              BeginTransactionResponse
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Commit.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Commit.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Commit.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Commit.hs
@@ -63,7 +63,8 @@
 -- | Commits a transaction, while optionally updating documents.
 --
 -- /See:/ 'projectsDatabasesDocumentsCommit' smart constructor.
-data ProjectsDatabasesDocumentsCommit = ProjectsDatabasesDocumentsCommit'
+data ProjectsDatabasesDocumentsCommit =
+  ProjectsDatabasesDocumentsCommit'
     { _pddcXgafv          :: !(Maybe Xgafv)
     , _pddcUploadProtocol :: !(Maybe Text)
     , _pddcDatabase       :: !Text
@@ -71,8 +72,10 @@
     , _pddcUploadType     :: !(Maybe Text)
     , _pddcPayload        :: !CommitRequest
     , _pddcCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsCommit' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> CommitRequest -- ^ 'pddcPayload'
     -> ProjectsDatabasesDocumentsCommit
 projectsDatabasesDocumentsCommit pPddcDatabase_ pPddcPayload_ =
-    ProjectsDatabasesDocumentsCommit'
+  ProjectsDatabasesDocumentsCommit'
     { _pddcXgafv = Nothing
     , _pddcUploadProtocol = Nothing
     , _pddcDatabase = pPddcDatabase_
@@ -105,6 +108,7 @@
     , _pddcCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddcXgafv :: Lens' ProjectsDatabasesDocumentsCommit (Maybe Xgafv)
 pddcXgafv
@@ -145,7 +149,8 @@
   = lens _pddcCallback (\ s a -> s{_pddcCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsCommit where
+           ProjectsDatabasesDocumentsCommit
+         where
         type Rs ProjectsDatabasesDocumentsCommit =
              CommitResponse
         type Scopes ProjectsDatabasesDocumentsCommit =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/CreateDocument.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/CreateDocument.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/CreateDocument.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/CreateDocument.hs
@@ -68,7 +68,8 @@
 -- | Creates a new document.
 --
 -- /See:/ 'projectsDatabasesDocumentsCreateDocument' smart constructor.
-data ProjectsDatabasesDocumentsCreateDocument = ProjectsDatabasesDocumentsCreateDocument'
+data ProjectsDatabasesDocumentsCreateDocument =
+  ProjectsDatabasesDocumentsCreateDocument'
     { _pddcdParent         :: !Text
     , _pddcdXgafv          :: !(Maybe Xgafv)
     , _pddcdDocumentId     :: !(Maybe Text)
@@ -79,8 +80,10 @@
     , _pddcdPayload        :: !Document
     , _pddcdMaskFieldPaths :: !(Maybe [Text])
     , _pddcdCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsCreateDocument' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,7 +113,7 @@
     -> Document -- ^ 'pddcdPayload'
     -> ProjectsDatabasesDocumentsCreateDocument
 projectsDatabasesDocumentsCreateDocument pPddcdParent_ pPddcdCollectionId_ pPddcdPayload_ =
-    ProjectsDatabasesDocumentsCreateDocument'
+  ProjectsDatabasesDocumentsCreateDocument'
     { _pddcdParent = pPddcdParent_
     , _pddcdXgafv = Nothing
     , _pddcdDocumentId = Nothing
@@ -123,6 +126,7 @@
     , _pddcdCallback = Nothing
     }
 
+
 -- | The parent resource. For example:
 -- \`projects\/{project_id}\/databases\/{database_id}\/documents\` or
 -- \`projects\/{project_id}\/databases\/{database_id}\/documents\/chatrooms\/{chatroom_id}\`
@@ -188,7 +192,8 @@
       (\ s a -> s{_pddcdCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsCreateDocument where
+           ProjectsDatabasesDocumentsCreateDocument
+         where
         type Rs ProjectsDatabasesDocumentsCreateDocument =
              Document
         type Scopes ProjectsDatabasesDocumentsCreateDocument
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Delete.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Delete.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Delete.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Delete.hs
@@ -63,7 +63,8 @@
 -- | Deletes a document.
 --
 -- /See:/ 'projectsDatabasesDocumentsDelete' smart constructor.
-data ProjectsDatabasesDocumentsDelete = ProjectsDatabasesDocumentsDelete'
+data ProjectsDatabasesDocumentsDelete =
+  ProjectsDatabasesDocumentsDelete'
     { _pdddXgafv                     :: !(Maybe Xgafv)
     , _pdddUploadProtocol            :: !(Maybe Text)
     , _pdddCurrentDocumentExists     :: !(Maybe Bool)
@@ -72,8 +73,10 @@
     , _pdddCurrentDocumentUpdateTime :: !(Maybe DateTime')
     , _pdddName                      :: !Text
     , _pdddCallback                  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -97,7 +100,7 @@
     :: Text -- ^ 'pdddName'
     -> ProjectsDatabasesDocumentsDelete
 projectsDatabasesDocumentsDelete pPdddName_ =
-    ProjectsDatabasesDocumentsDelete'
+  ProjectsDatabasesDocumentsDelete'
     { _pdddXgafv = Nothing
     , _pdddUploadProtocol = Nothing
     , _pdddCurrentDocumentExists = Nothing
@@ -108,6 +111,7 @@
     , _pdddCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdddXgafv :: Lens' ProjectsDatabasesDocumentsDelete (Maybe Xgafv)
 pdddXgafv
@@ -157,7 +161,8 @@
   = lens _pdddCallback (\ s a -> s{_pdddCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsDelete where
+           ProjectsDatabasesDocumentsDelete
+         where
         type Rs ProjectsDatabasesDocumentsDelete = Empty
         type Scopes ProjectsDatabasesDocumentsDelete =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Get.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Get.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Get.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Get.hs
@@ -65,7 +65,8 @@
 -- | Gets a single document.
 --
 -- /See:/ 'projectsDatabasesDocumentsGet' smart constructor.
-data ProjectsDatabasesDocumentsGet = ProjectsDatabasesDocumentsGet'
+data ProjectsDatabasesDocumentsGet =
+  ProjectsDatabasesDocumentsGet'
     { _pddgXgafv          :: !(Maybe Xgafv)
     , _pddgReadTime       :: !(Maybe DateTime')
     , _pddgUploadProtocol :: !(Maybe Text)
@@ -75,8 +76,10 @@
     , _pddgName           :: !Text
     , _pddgMaskFieldPaths :: !(Maybe [Text])
     , _pddgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -102,7 +105,7 @@
     :: Text -- ^ 'pddgName'
     -> ProjectsDatabasesDocumentsGet
 projectsDatabasesDocumentsGet pPddgName_ =
-    ProjectsDatabasesDocumentsGet'
+  ProjectsDatabasesDocumentsGet'
     { _pddgXgafv = Nothing
     , _pddgReadTime = Nothing
     , _pddgUploadProtocol = Nothing
@@ -113,6 +116,7 @@
     , _pddgMaskFieldPaths = Nothing
     , _pddgCallback = Nothing
     }
+
 
 -- | V1 error format.
 pddgXgafv :: Lens' ProjectsDatabasesDocumentsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/List.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/List.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/List.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/List.hs
@@ -76,7 +76,8 @@
 -- | Lists documents.
 --
 -- /See:/ 'projectsDatabasesDocumentsList' smart constructor.
-data ProjectsDatabasesDocumentsList = ProjectsDatabasesDocumentsList'
+data ProjectsDatabasesDocumentsList =
+  ProjectsDatabasesDocumentsList'
     { _pParent         :: !Text
     , _pXgafv          :: !(Maybe Xgafv)
     , _pReadTime       :: !(Maybe DateTime')
@@ -91,8 +92,10 @@
     , _pPageSize       :: !(Maybe (Textual Int32))
     , _pMaskFieldPaths :: !(Maybe [Text])
     , _pCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -129,7 +132,7 @@
     -> Text -- ^ 'pCollectionId'
     -> ProjectsDatabasesDocumentsList
 projectsDatabasesDocumentsList pPParent_ pPCollectionId_ =
-    ProjectsDatabasesDocumentsList'
+  ProjectsDatabasesDocumentsList'
     { _pParent = pPParent_
     , _pXgafv = Nothing
     , _pReadTime = Nothing
@@ -145,6 +148,7 @@
     , _pMaskFieldPaths = Nothing
     , _pCallback = Nothing
     }
+
 
 -- | The parent resource name. In the format:
 -- \`projects\/{project_id}\/databases\/{database_id}\/documents\` or
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/ListCollectionIds.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/ListCollectionIds.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/ListCollectionIds.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/ListCollectionIds.hs
@@ -63,7 +63,8 @@
 -- | Lists all the collection IDs underneath a document.
 --
 -- /See:/ 'projectsDatabasesDocumentsListCollectionIds' smart constructor.
-data ProjectsDatabasesDocumentsListCollectionIds = ProjectsDatabasesDocumentsListCollectionIds'
+data ProjectsDatabasesDocumentsListCollectionIds =
+  ProjectsDatabasesDocumentsListCollectionIds'
     { _pddlciParent         :: !Text
     , _pddlciXgafv          :: !(Maybe Xgafv)
     , _pddlciUploadProtocol :: !(Maybe Text)
@@ -71,8 +72,10 @@
     , _pddlciUploadType     :: !(Maybe Text)
     , _pddlciPayload        :: !ListCollectionIdsRequest
     , _pddlciCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsListCollectionIds' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> ListCollectionIdsRequest -- ^ 'pddlciPayload'
     -> ProjectsDatabasesDocumentsListCollectionIds
 projectsDatabasesDocumentsListCollectionIds pPddlciParent_ pPddlciPayload_ =
-    ProjectsDatabasesDocumentsListCollectionIds'
+  ProjectsDatabasesDocumentsListCollectionIds'
     { _pddlciParent = pPddlciParent_
     , _pddlciXgafv = Nothing
     , _pddlciUploadProtocol = Nothing
@@ -105,6 +108,7 @@
     , _pddlciCallback = Nothing
     }
 
+
 -- | The parent document. In the format:
 -- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
 -- For example:
@@ -149,7 +153,8 @@
       (\ s a -> s{_pddlciCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsListCollectionIds where
+           ProjectsDatabasesDocumentsListCollectionIds
+         where
         type Rs ProjectsDatabasesDocumentsListCollectionIds =
              ListCollectionIdsResponse
         type Scopes
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Listen.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Listen.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Listen.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Listen.hs
@@ -63,7 +63,8 @@
 -- | Listens to changes.
 --
 -- /See:/ 'projectsDatabasesDocumentsListen' smart constructor.
-data ProjectsDatabasesDocumentsListen = ProjectsDatabasesDocumentsListen'
+data ProjectsDatabasesDocumentsListen =
+  ProjectsDatabasesDocumentsListen'
     { _pddlXgafv          :: !(Maybe Xgafv)
     , _pddlUploadProtocol :: !(Maybe Text)
     , _pddlDatabase       :: !Text
@@ -71,8 +72,10 @@
     , _pddlUploadType     :: !(Maybe Text)
     , _pddlPayload        :: !ListenRequest
     , _pddlCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsListen' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> ListenRequest -- ^ 'pddlPayload'
     -> ProjectsDatabasesDocumentsListen
 projectsDatabasesDocumentsListen pPddlDatabase_ pPddlPayload_ =
-    ProjectsDatabasesDocumentsListen'
+  ProjectsDatabasesDocumentsListen'
     { _pddlXgafv = Nothing
     , _pddlUploadProtocol = Nothing
     , _pddlDatabase = pPddlDatabase_
@@ -105,6 +108,7 @@
     , _pddlCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddlXgafv :: Lens' ProjectsDatabasesDocumentsListen (Maybe Xgafv)
 pddlXgafv
@@ -145,7 +149,8 @@
   = lens _pddlCallback (\ s a -> s{_pddlCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsListen where
+           ProjectsDatabasesDocumentsListen
+         where
         type Rs ProjectsDatabasesDocumentsListen =
              ListenResponse
         type Scopes ProjectsDatabasesDocumentsListen =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Patch.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Patch.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Patch.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Patch.hs
@@ -69,7 +69,8 @@
 -- | Updates or inserts a document.
 --
 -- /See:/ 'projectsDatabasesDocumentsPatch' smart constructor.
-data ProjectsDatabasesDocumentsPatch = ProjectsDatabasesDocumentsPatch'
+data ProjectsDatabasesDocumentsPatch =
+  ProjectsDatabasesDocumentsPatch'
     { _pddpXgafv                     :: !(Maybe Xgafv)
     , _pddpUpdateMaskFieldPaths      :: !(Maybe [Text])
     , _pddpUploadProtocol            :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _pddpName                      :: !Text
     , _pddpMaskFieldPaths            :: !(Maybe [Text])
     , _pddpCallback                  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsPatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -113,7 +116,7 @@
     -> Text -- ^ 'pddpName'
     -> ProjectsDatabasesDocumentsPatch
 projectsDatabasesDocumentsPatch pPddpPayload_ pPddpName_ =
-    ProjectsDatabasesDocumentsPatch'
+  ProjectsDatabasesDocumentsPatch'
     { _pddpXgafv = Nothing
     , _pddpUpdateMaskFieldPaths = Nothing
     , _pddpUploadProtocol = Nothing
@@ -127,6 +130,7 @@
     , _pddpCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddpXgafv :: Lens' ProjectsDatabasesDocumentsPatch (Maybe Xgafv)
 pddpXgafv
@@ -199,7 +203,8 @@
   = lens _pddpCallback (\ s a -> s{_pddpCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsPatch where
+           ProjectsDatabasesDocumentsPatch
+         where
         type Rs ProjectsDatabasesDocumentsPatch = Document
         type Scopes ProjectsDatabasesDocumentsPatch =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Rollback.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Rollback.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Rollback.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Rollback.hs
@@ -62,7 +62,8 @@
 -- | Rolls back a transaction.
 --
 -- /See:/ 'projectsDatabasesDocumentsRollback' smart constructor.
-data ProjectsDatabasesDocumentsRollback = ProjectsDatabasesDocumentsRollback'
+data ProjectsDatabasesDocumentsRollback =
+  ProjectsDatabasesDocumentsRollback'
     { _pddrXgafv          :: !(Maybe Xgafv)
     , _pddrUploadProtocol :: !(Maybe Text)
     , _pddrDatabase       :: !Text
@@ -70,8 +71,10 @@
     , _pddrUploadType     :: !(Maybe Text)
     , _pddrPayload        :: !RollbackRequest
     , _pddrCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsRollback' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> RollbackRequest -- ^ 'pddrPayload'
     -> ProjectsDatabasesDocumentsRollback
 projectsDatabasesDocumentsRollback pPddrDatabase_ pPddrPayload_ =
-    ProjectsDatabasesDocumentsRollback'
+  ProjectsDatabasesDocumentsRollback'
     { _pddrXgafv = Nothing
     , _pddrUploadProtocol = Nothing
     , _pddrDatabase = pPddrDatabase_
@@ -104,6 +107,7 @@
     , _pddrCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddrXgafv :: Lens' ProjectsDatabasesDocumentsRollback (Maybe Xgafv)
 pddrXgafv
@@ -144,7 +148,8 @@
   = lens _pddrCallback (\ s a -> s{_pddrCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsRollback where
+           ProjectsDatabasesDocumentsRollback
+         where
         type Rs ProjectsDatabasesDocumentsRollback = Empty
         type Scopes ProjectsDatabasesDocumentsRollback =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/RunQuery.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/RunQuery.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/RunQuery.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/RunQuery.hs
@@ -62,7 +62,8 @@
 -- | Runs a query.
 --
 -- /See:/ 'projectsDatabasesDocumentsRunQuery' smart constructor.
-data ProjectsDatabasesDocumentsRunQuery = ProjectsDatabasesDocumentsRunQuery'
+data ProjectsDatabasesDocumentsRunQuery =
+  ProjectsDatabasesDocumentsRunQuery'
     { _pddrqParent         :: !Text
     , _pddrqXgafv          :: !(Maybe Xgafv)
     , _pddrqUploadProtocol :: !(Maybe Text)
@@ -70,8 +71,10 @@
     , _pddrqUploadType     :: !(Maybe Text)
     , _pddrqPayload        :: !RunQueryRequest
     , _pddrqCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsRunQuery' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -94,7 +97,7 @@
     -> RunQueryRequest -- ^ 'pddrqPayload'
     -> ProjectsDatabasesDocumentsRunQuery
 projectsDatabasesDocumentsRunQuery pPddrqParent_ pPddrqPayload_ =
-    ProjectsDatabasesDocumentsRunQuery'
+  ProjectsDatabasesDocumentsRunQuery'
     { _pddrqParent = pPddrqParent_
     , _pddrqXgafv = Nothing
     , _pddrqUploadProtocol = Nothing
@@ -104,6 +107,7 @@
     , _pddrqCallback = Nothing
     }
 
+
 -- | The parent resource name. In the format:
 -- \`projects\/{project_id}\/databases\/{database_id}\/documents\` or
 -- \`projects\/{project_id}\/databases\/{database_id}\/documents\/{document_path}\`.
@@ -149,7 +153,8 @@
       (\ s a -> s{_pddrqCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsRunQuery where
+           ProjectsDatabasesDocumentsRunQuery
+         where
         type Rs ProjectsDatabasesDocumentsRunQuery =
              RunQueryResponse
         type Scopes ProjectsDatabasesDocumentsRunQuery =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Write.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Write.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Write.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Write.hs
@@ -63,7 +63,8 @@
 -- | Streams batches of document updates and deletes, in order.
 --
 -- /See:/ 'projectsDatabasesDocumentsWrite' smart constructor.
-data ProjectsDatabasesDocumentsWrite = ProjectsDatabasesDocumentsWrite'
+data ProjectsDatabasesDocumentsWrite =
+  ProjectsDatabasesDocumentsWrite'
     { _pddwXgafv          :: !(Maybe Xgafv)
     , _pddwUploadProtocol :: !(Maybe Text)
     , _pddwDatabase       :: !Text
@@ -71,8 +72,10 @@
     , _pddwUploadType     :: !(Maybe Text)
     , _pddwPayload        :: !WriteRequest
     , _pddwCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesDocumentsWrite' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,7 +98,7 @@
     -> WriteRequest -- ^ 'pddwPayload'
     -> ProjectsDatabasesDocumentsWrite
 projectsDatabasesDocumentsWrite pPddwDatabase_ pPddwPayload_ =
-    ProjectsDatabasesDocumentsWrite'
+  ProjectsDatabasesDocumentsWrite'
     { _pddwXgafv = Nothing
     , _pddwUploadProtocol = Nothing
     , _pddwDatabase = pPddwDatabase_
@@ -105,6 +108,7 @@
     , _pddwCallback = Nothing
     }
 
+
 -- | V1 error format.
 pddwXgafv :: Lens' ProjectsDatabasesDocumentsWrite (Maybe Xgafv)
 pddwXgafv
@@ -146,7 +150,8 @@
   = lens _pddwCallback (\ s a -> s{_pddwCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesDocumentsWrite where
+           ProjectsDatabasesDocumentsWrite
+         where
         type Rs ProjectsDatabasesDocumentsWrite =
              WriteResponse
         type Scopes ProjectsDatabasesDocumentsWrite =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/ExportDocuments.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/ExportDocuments.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/ExportDocuments.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/ExportDocuments.hs
@@ -77,7 +77,8 @@
 -- data behind in Google Cloud Storage.
 --
 -- /See:/ 'projectsDatabasesExportDocuments' smart constructor.
-data ProjectsDatabasesExportDocuments = ProjectsDatabasesExportDocuments'
+data ProjectsDatabasesExportDocuments =
+  ProjectsDatabasesExportDocuments'
     { _pdedXgafv          :: !(Maybe Xgafv)
     , _pdedUploadProtocol :: !(Maybe Text)
     , _pdedAccessToken    :: !(Maybe Text)
@@ -85,8 +86,10 @@
     , _pdedPayload        :: !GoogleFirestoreAdminV1ExportDocumentsRequest
     , _pdedName           :: !Text
     , _pdedCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesExportDocuments' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -109,7 +112,7 @@
     -> Text -- ^ 'pdedName'
     -> ProjectsDatabasesExportDocuments
 projectsDatabasesExportDocuments pPdedPayload_ pPdedName_ =
-    ProjectsDatabasesExportDocuments'
+  ProjectsDatabasesExportDocuments'
     { _pdedXgafv = Nothing
     , _pdedUploadProtocol = Nothing
     , _pdedAccessToken = Nothing
@@ -119,6 +122,7 @@
     , _pdedCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdedXgafv :: Lens' ProjectsDatabasesExportDocuments (Maybe Xgafv)
 pdedXgafv
@@ -158,7 +162,8 @@
   = lens _pdedCallback (\ s a -> s{_pdedCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesExportDocuments where
+           ProjectsDatabasesExportDocuments
+         where
         type Rs ProjectsDatabasesExportDocuments =
              GoogleLongrunningOperation
         type Scopes ProjectsDatabasesExportDocuments =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/ImportDocuments.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/ImportDocuments.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/ImportDocuments.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/ImportDocuments.hs
@@ -73,7 +73,8 @@
 -- Firestore.
 --
 -- /See:/ 'projectsDatabasesImportDocuments' smart constructor.
-data ProjectsDatabasesImportDocuments = ProjectsDatabasesImportDocuments'
+data ProjectsDatabasesImportDocuments =
+  ProjectsDatabasesImportDocuments'
     { _pdidXgafv          :: !(Maybe Xgafv)
     , _pdidUploadProtocol :: !(Maybe Text)
     , _pdidAccessToken    :: !(Maybe Text)
@@ -81,8 +82,10 @@
     , _pdidPayload        :: !GoogleFirestoreAdminV1ImportDocumentsRequest
     , _pdidName           :: !Text
     , _pdidCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesImportDocuments' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -105,7 +108,7 @@
     -> Text -- ^ 'pdidName'
     -> ProjectsDatabasesImportDocuments
 projectsDatabasesImportDocuments pPdidPayload_ pPdidName_ =
-    ProjectsDatabasesImportDocuments'
+  ProjectsDatabasesImportDocuments'
     { _pdidXgafv = Nothing
     , _pdidUploadProtocol = Nothing
     , _pdidAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _pdidCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdidXgafv :: Lens' ProjectsDatabasesImportDocuments (Maybe Xgafv)
 pdidXgafv
@@ -154,7 +158,8 @@
   = lens _pdidCallback (\ s a -> s{_pdidCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesImportDocuments where
+           ProjectsDatabasesImportDocuments
+         where
         type Rs ProjectsDatabasesImportDocuments =
              GoogleLongrunningOperation
         type Scopes ProjectsDatabasesImportDocuments =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Cancel.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Cancel.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Cancel.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Cancel.hs
@@ -79,7 +79,8 @@
 -- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
 --
 -- /See:/ 'projectsDatabasesOperationsCancel' smart constructor.
-data ProjectsDatabasesOperationsCancel = ProjectsDatabasesOperationsCancel'
+data ProjectsDatabasesOperationsCancel =
+  ProjectsDatabasesOperationsCancel'
     { _pdocXgafv          :: !(Maybe Xgafv)
     , _pdocUploadProtocol :: !(Maybe Text)
     , _pdocAccessToken    :: !(Maybe Text)
@@ -87,8 +88,10 @@
     , _pdocPayload        :: !GoogleLongrunningCancelOperationRequest
     , _pdocName           :: !Text
     , _pdocCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesOperationsCancel' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -111,7 +114,7 @@
     -> Text -- ^ 'pdocName'
     -> ProjectsDatabasesOperationsCancel
 projectsDatabasesOperationsCancel pPdocPayload_ pPdocName_ =
-    ProjectsDatabasesOperationsCancel'
+  ProjectsDatabasesOperationsCancel'
     { _pdocXgafv = Nothing
     , _pdocUploadProtocol = Nothing
     , _pdocAccessToken = Nothing
@@ -121,6 +124,7 @@
     , _pdocCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdocXgafv :: Lens' ProjectsDatabasesOperationsCancel (Maybe Xgafv)
 pdocXgafv
@@ -159,7 +163,8 @@
   = lens _pdocCallback (\ s a -> s{_pdocCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesOperationsCancel where
+           ProjectsDatabasesOperationsCancel
+         where
         type Rs ProjectsDatabasesOperationsCancel = Empty
         type Scopes ProjectsDatabasesOperationsCancel =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Delete.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Delete.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Delete.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Delete.hs
@@ -65,15 +65,18 @@
 -- \`google.rpc.Code.UNIMPLEMENTED\`.
 --
 -- /See:/ 'projectsDatabasesOperationsDelete' smart constructor.
-data ProjectsDatabasesOperationsDelete = ProjectsDatabasesOperationsDelete'
+data ProjectsDatabasesOperationsDelete =
+  ProjectsDatabasesOperationsDelete'
     { _pdodXgafv          :: !(Maybe Xgafv)
     , _pdodUploadProtocol :: !(Maybe Text)
     , _pdodAccessToken    :: !(Maybe Text)
     , _pdodUploadType     :: !(Maybe Text)
     , _pdodName           :: !Text
     , _pdodCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesOperationsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,7 +96,7 @@
     :: Text -- ^ 'pdodName'
     -> ProjectsDatabasesOperationsDelete
 projectsDatabasesOperationsDelete pPdodName_ =
-    ProjectsDatabasesOperationsDelete'
+  ProjectsDatabasesOperationsDelete'
     { _pdodXgafv = Nothing
     , _pdodUploadProtocol = Nothing
     , _pdodAccessToken = Nothing
@@ -102,6 +105,7 @@
     , _pdodCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdodXgafv :: Lens' ProjectsDatabasesOperationsDelete (Maybe Xgafv)
 pdodXgafv
@@ -135,7 +139,8 @@
   = lens _pdodCallback (\ s a -> s{_pdodCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesOperationsDelete where
+           ProjectsDatabasesOperationsDelete
+         where
         type Rs ProjectsDatabasesOperationsDelete = Empty
         type Scopes ProjectsDatabasesOperationsDelete =
              '["https://www.googleapis.com/auth/cloud-platform",
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Get.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Get.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Get.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Get.hs
@@ -64,15 +64,18 @@
 -- API service.
 --
 -- /See:/ 'projectsDatabasesOperationsGet' smart constructor.
-data ProjectsDatabasesOperationsGet = ProjectsDatabasesOperationsGet'
+data ProjectsDatabasesOperationsGet =
+  ProjectsDatabasesOperationsGet'
     { _pdogXgafv          :: !(Maybe Xgafv)
     , _pdogUploadProtocol :: !(Maybe Text)
     , _pdogAccessToken    :: !(Maybe Text)
     , _pdogUploadType     :: !(Maybe Text)
     , _pdogName           :: !Text
     , _pdogCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesOperationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -92,7 +95,7 @@
     :: Text -- ^ 'pdogName'
     -> ProjectsDatabasesOperationsGet
 projectsDatabasesOperationsGet pPdogName_ =
-    ProjectsDatabasesOperationsGet'
+  ProjectsDatabasesOperationsGet'
     { _pdogXgafv = Nothing
     , _pdogUploadProtocol = Nothing
     , _pdogAccessToken = Nothing
@@ -100,6 +103,7 @@
     , _pdogName = pPdogName_
     , _pdogCallback = Nothing
     }
+
 
 -- | V1 error format.
 pdogXgafv :: Lens' ProjectsDatabasesOperationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/List.hs b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/List.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/List.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/List.hs
@@ -85,7 +85,8 @@
 -- id.
 --
 -- /See:/ 'projectsDatabasesOperationsList' smart constructor.
-data ProjectsDatabasesOperationsList = ProjectsDatabasesOperationsList'
+data ProjectsDatabasesOperationsList =
+  ProjectsDatabasesOperationsList'
     { _pdolXgafv          :: !(Maybe Xgafv)
     , _pdolUploadProtocol :: !(Maybe Text)
     , _pdolAccessToken    :: !(Maybe Text)
@@ -95,8 +96,10 @@
     , _pdolPageToken      :: !(Maybe Text)
     , _pdolPageSize       :: !(Maybe (Textual Int32))
     , _pdolCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsDatabasesOperationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -122,7 +125,7 @@
     :: Text -- ^ 'pdolName'
     -> ProjectsDatabasesOperationsList
 projectsDatabasesOperationsList pPdolName_ =
-    ProjectsDatabasesOperationsList'
+  ProjectsDatabasesOperationsList'
     { _pdolXgafv = Nothing
     , _pdolUploadProtocol = Nothing
     , _pdolAccessToken = Nothing
@@ -134,6 +137,7 @@
     , _pdolCallback = Nothing
     }
 
+
 -- | V1 error format.
 pdolXgafv :: Lens' ProjectsDatabasesOperationsList (Maybe Xgafv)
 pdolXgafv
@@ -184,7 +188,8 @@
   = lens _pdolCallback (\ s a -> s{_pdolCallback = a})
 
 instance GoogleRequest
-         ProjectsDatabasesOperationsList where
+           ProjectsDatabasesOperationsList
+         where
         type Rs ProjectsDatabasesOperationsList =
              GoogleLongrunningListOperationsResponse
         type Scopes ProjectsDatabasesOperationsList =
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Locations/Get.hs b/gen/Network/Google/Resource/FireStore/Projects/Locations/Get.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Locations/Get.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Locations/Get.hs
@@ -59,15 +59,18 @@
 -- | Gets information about a location.
 --
 -- /See:/ 'projectsLocationsGet' smart constructor.
-data ProjectsLocationsGet = ProjectsLocationsGet'
+data ProjectsLocationsGet =
+  ProjectsLocationsGet'
     { _plgXgafv          :: !(Maybe Xgafv)
     , _plgUploadProtocol :: !(Maybe Text)
     , _plgAccessToken    :: !(Maybe Text)
     , _plgUploadType     :: !(Maybe Text)
     , _plgName           :: !Text
     , _plgCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,7 +90,7 @@
     :: Text -- ^ 'plgName'
     -> ProjectsLocationsGet
 projectsLocationsGet pPlgName_ =
-    ProjectsLocationsGet'
+  ProjectsLocationsGet'
     { _plgXgafv = Nothing
     , _plgUploadProtocol = Nothing
     , _plgAccessToken = Nothing
@@ -95,6 +98,7 @@
     , _plgName = pPlgName_
     , _plgCallback = Nothing
     }
+
 
 -- | V1 error format.
 plgXgafv :: Lens' ProjectsLocationsGet (Maybe Xgafv)
diff --git a/gen/Network/Google/Resource/FireStore/Projects/Locations/List.hs b/gen/Network/Google/Resource/FireStore/Projects/Locations/List.hs
--- a/gen/Network/Google/Resource/FireStore/Projects/Locations/List.hs
+++ b/gen/Network/Google/Resource/FireStore/Projects/Locations/List.hs
@@ -67,7 +67,8 @@
 -- | Lists information about the supported locations for this service.
 --
 -- /See:/ 'projectsLocationsList' smart constructor.
-data ProjectsLocationsList = ProjectsLocationsList'
+data ProjectsLocationsList =
+  ProjectsLocationsList'
     { _pllXgafv          :: !(Maybe Xgafv)
     , _pllUploadProtocol :: !(Maybe Text)
     , _pllAccessToken    :: !(Maybe Text)
@@ -77,8 +78,10 @@
     , _pllPageToken      :: !(Maybe Text)
     , _pllPageSize       :: !(Maybe (Textual Int32))
     , _pllCallback       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ProjectsLocationsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -104,7 +107,7 @@
     :: Text -- ^ 'pllName'
     -> ProjectsLocationsList
 projectsLocationsList pPllName_ =
-    ProjectsLocationsList'
+  ProjectsLocationsList'
     { _pllXgafv = Nothing
     , _pllUploadProtocol = Nothing
     , _pllAccessToken = Nothing
@@ -115,6 +118,7 @@
     , _pllPageSize = Nothing
     , _pllCallback = Nothing
     }
+
 
 -- | V1 error format.
 pllXgafv :: Lens' ProjectsLocationsList (Maybe Xgafv)
diff --git a/gogol-firestore.cabal b/gogol-firestore.cabal
--- a/gogol-firestore.cabal
+++ b/gogol-firestore.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-firestore
-version:               0.4.0
+version:               0.5.0
 synopsis:              Google Cloud Firestore SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -70,5 +70,5 @@
         , Network.Google.FireStore.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
