packages feed

gogol-firestore 0.4.0 → 0.5.0

raw patch · 33 files changed

+5384/−4987 lines, 33 filesdep ~gogol-corePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: gogol-core

API changes (from Hackage documentation)

+ Network.Google.FireStore: ftIncrement :: Lens' FieldTransform (Maybe Value)
+ Network.Google.FireStore: ftMaximum :: Lens' FieldTransform (Maybe Value)
+ Network.Google.FireStore: ftMinimum :: Lens' FieldTransform (Maybe Value)
+ Network.Google.FireStore.Types: ftIncrement :: Lens' FieldTransform (Maybe Value)
+ Network.Google.FireStore.Types: ftMaximum :: Lens' FieldTransform (Maybe Value)
+ Network.Google.FireStore.Types: ftMinimum :: Lens' FieldTransform (Maybe Value)

Files

README.md view
@@ -8,7 +8,7 @@  ## Version -`0.3.0`+`0.5.0`   ## Description
gen/Network/Google/FireStore.hs view
@@ -649,8 +649,11 @@     , fieldTransform     , ftFieldPath     , ftAppendMissingElements+    , ftMaximum+    , ftMinimum     , ftSetToServerValue     , ftRemoveAllFromArray+    , ftIncrement      -- ** MapValueFields     , MapValueFields
gen/Network/Google/FireStore/Types.hs view
@@ -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
gen/Network/Google/FireStore/Types/Product.hs view
@@ -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)
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Get.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/List.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Fields/Patch.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Create.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Delete.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/Get.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/CollectionGroups/Indexes/List.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BatchGet.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/BeginTransaction.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Commit.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/CreateDocument.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Delete.hs view
@@ -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",
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Get.hs view
@@ -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)
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/List.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/ListCollectionIds.hs view
@@ -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
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Listen.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Patch.hs view
@@ -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",
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Rollback.hs view
@@ -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",
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/RunQuery.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/Documents/Write.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/ExportDocuments.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/ImportDocuments.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Cancel.hs view
@@ -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",
gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Delete.hs view
@@ -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",
gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/Get.hs view
@@ -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)
gen/Network/Google/Resource/FireStore/Projects/Databases/Operations/List.hs view
@@ -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 =
gen/Network/Google/Resource/FireStore/Projects/Locations/Get.hs view
@@ -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)
gen/Network/Google/Resource/FireStore/Projects/Locations/List.hs view
@@ -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)
gogol-firestore.cabal view
@@ -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