diff --git a/gen/Network/Google/Datastore.hs b/gen/Network/Google/Datastore.hs
--- a/gen/Network/Google/Datastore.hs
+++ b/gen/Network/Google/Datastore.hs
@@ -16,7 +16,7 @@
 -- Accesses the schemaless NoSQL database to provide fully managed, robust,
 -- scalable storage for your application.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference>
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference>
 module Network.Google.Datastore
     (
     -- * Service Configuration
@@ -40,9 +40,36 @@
     -- ** datastore.projects.commit
     , module Network.Google.Resource.Datastore.Projects.Commit
 
+    -- ** datastore.projects.export
+    , module Network.Google.Resource.Datastore.Projects.Export
+
+    -- ** datastore.projects.import
+    , module Network.Google.Resource.Datastore.Projects.Import
+
+    -- ** datastore.projects.indexes.get
+    , module Network.Google.Resource.Datastore.Projects.Indexes.Get
+
+    -- ** datastore.projects.indexes.list
+    , module Network.Google.Resource.Datastore.Projects.Indexes.List
+
     -- ** datastore.projects.lookup
     , module Network.Google.Resource.Datastore.Projects.Lookup
 
+    -- ** datastore.projects.operations.cancel
+    , module Network.Google.Resource.Datastore.Projects.Operations.Cancel
+
+    -- ** datastore.projects.operations.delete
+    , module Network.Google.Resource.Datastore.Projects.Operations.Delete
+
+    -- ** datastore.projects.operations.get
+    , module Network.Google.Resource.Datastore.Projects.Operations.Get
+
+    -- ** datastore.projects.operations.list
+    , module Network.Google.Resource.Datastore.Projects.Operations.List
+
+    -- ** datastore.projects.reserveIds
+    , module Network.Google.Resource.Datastore.Projects.ReserveIds
+
     -- ** datastore.projects.rollback
     , module Network.Google.Resource.Datastore.Projects.Rollback
 
@@ -57,20 +84,60 @@
     , llLatitude
     , llLongitude
 
+    -- ** TransactionOptions
+    , TransactionOptions
+    , transactionOptions
+    , toReadWrite
+    , toReadOnly
+
     -- ** PropertyOrderDirection
     , PropertyOrderDirection (..)
 
+    -- ** Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- ** GoogleLongrunningOperationMetadata
+    , GoogleLongrunningOperationMetadata
+    , googleLongrunningOperationMetadata
+    , glomAddtional
+
+    -- ** ReadWrite
+    , ReadWrite
+    , readWrite
+    , rwPreviousTransaction
+
+    -- ** GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+    , GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+    , googleDatastoreAdminV1beta1ExportEntitiesResponse
+    , gdaveerOutputURL
+
     -- ** RollbackRequest
     , RollbackRequest
     , rollbackRequest
     , rrTransaction
 
+    -- ** ReserveIdsRequest
+    , ReserveIdsRequest
+    , reserveIdsRequest
+    , rirKeys
+    , rirDatabaseId
+
     -- ** PartitionId
     , PartitionId
     , partitionId
     , piNamespaceId
     , piProjectId
 
+    -- ** GoogleDatastoreAdminV1ListIndexesResponse
+    , GoogleDatastoreAdminV1ListIndexesResponse
+    , googleDatastoreAdminV1ListIndexesResponse
+    , gdavlirNextPageToken
+    , gdavlirIndexes
+
     -- ** QueryResultBatch
     , QueryResultBatch
     , queryResultBatch
@@ -90,9 +157,15 @@
     , entityProperties
     , epAddtional
 
+    -- ** GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+    , GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+    , googleDatastoreAdminV1ImportEntitiesRequestLabels
+    , gdavierlAddtional
+
     -- ** BeginTransactionRequest
     , BeginTransactionRequest
     , beginTransactionRequest
+    , btrTransactionOptions
 
     -- ** RunQueryRequest
     , RunQueryRequest
@@ -107,18 +180,65 @@
     , allocateIdsRequest
     , airKeys
 
+    -- ** GoogleDatastoreAdminV1ExportEntitiesMetadata
+    , GoogleDatastoreAdminV1ExportEntitiesMetadata
+    , googleDatastoreAdminV1ExportEntitiesMetadata
+    , gdaveemProgressBytes
+    , gdaveemOutputURLPrefix
+    , gdaveemProgressEntities
+    , gdaveemEntityFilter
+    , gdaveemCommon
+
     -- ** QueryResultBatchEntityResultType
     , QueryResultBatchEntityResultType (..)
 
+    -- ** GoogleDatastoreAdminV1beta1CommonMetadata
+    , GoogleDatastoreAdminV1beta1CommonMetadata
+    , googleDatastoreAdminV1beta1CommonMetadata
+    , gdavcmState
+    , gdavcmStartTime
+    , gdavcmEndTime
+    , gdavcmLabels
+    , gdavcmOperationType
+
+    -- ** Empty
+    , Empty
+    , empty
+
     -- ** CompositeFilter
     , CompositeFilter
     , compositeFilter
     , cfOp
     , cfFilters
 
+    -- ** GoogleDatastoreAdminV1beta1CommonMetadataOperationType
+    , GoogleDatastoreAdminV1beta1CommonMetadataOperationType (..)
+
     -- ** QueryResultBatchMoreResults
     , QueryResultBatchMoreResults (..)
 
+    -- ** GoogleDatastoreAdminV1IndexOperationMetadata
+    , GoogleDatastoreAdminV1IndexOperationMetadata
+    , googleDatastoreAdminV1IndexOperationMetadata
+    , gdaviomProgressEntities
+    , gdaviomCommon
+    , gdaviomIndexId
+
+    -- ** GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+    , GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+    , googleDatastoreAdminV1beta1ImportEntitiesMetadata
+    , gdaviemProgressBytes
+    , gdaviemProgressEntities
+    , gdaviemEntityFilter
+    , gdaviemInputURL
+    , gdaviemCommon
+
+    -- ** GoogleDatastoreAdminV1beta1Progress
+    , GoogleDatastoreAdminV1beta1Progress
+    , googleDatastoreAdminV1beta1Progress
+    , gdavpWorkCompleted
+    , gdavpWorkEstimated
+
     -- ** BeginTransactionResponse
     , BeginTransactionResponse
     , beginTransactionResponse
@@ -150,6 +270,14 @@
     , rBatch
     , rQuery
 
+    -- ** GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+    , GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+    , googleDatastoreAdminV1ExportEntitiesRequestLabels
+    , gdaveerlAddtional
+
+    -- ** GoogleDatastoreAdminV1CommonMetadataOperationType
+    , GoogleDatastoreAdminV1CommonMetadataOperationType (..)
+
     -- ** Value
     , Value
     , value
@@ -170,6 +298,22 @@
     -- ** ValueNullValue
     , ValueNullValue (..)
 
+    -- ** GoogleDatastoreAdminV1IndexedPropertyDirection
+    , GoogleDatastoreAdminV1IndexedPropertyDirection (..)
+
+    -- ** GoogleDatastoreAdminV1CommonMetadataLabels
+    , GoogleDatastoreAdminV1CommonMetadataLabels
+    , googleDatastoreAdminV1CommonMetadataLabels
+    , gdavcmlAddtional
+
+    -- ** GoogleDatastoreAdminV1IndexAncestor
+    , GoogleDatastoreAdminV1IndexAncestor (..)
+
+    -- ** StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
     -- ** LookupRequest
     , LookupRequest
     , lookupRequest
@@ -179,6 +323,22 @@
     -- ** ReadOptionsReadConsistency
     , ReadOptionsReadConsistency (..)
 
+    -- ** GoogleDatastoreAdminV1CommonMetadata
+    , GoogleDatastoreAdminV1CommonMetadata
+    , googleDatastoreAdminV1CommonMetadata
+    , gState
+    , gStartTime
+    , gEndTime
+    , gLabels
+    , gOperationType
+
+    -- ** GoogleDatastoreAdminV1ExportEntitiesRequest
+    , GoogleDatastoreAdminV1ExportEntitiesRequest
+    , googleDatastoreAdminV1ExportEntitiesRequest
+    , gdaveerOutputURLPrefix
+    , gdaveerEntityFilter
+    , gdaveerLabels
+
     -- ** Mutation
     , Mutation
     , mutation
@@ -193,6 +353,11 @@
     , gqlQueryNamedBindings
     , gqnbAddtional
 
+    -- ** GoogleDatastoreAdminV1ExportEntitiesResponse
+    , GoogleDatastoreAdminV1ExportEntitiesResponse
+    , googleDatastoreAdminV1ExportEntitiesResponse
+    , gOutputURL
+
     -- ** PropertyReference
     , PropertyReference
     , propertyReference
@@ -204,6 +369,16 @@
     , kPartitionId
     , kPath
 
+    -- ** GoogleDatastoreAdminV1ImportEntitiesRequest
+    , GoogleDatastoreAdminV1ImportEntitiesRequest
+    , googleDatastoreAdminV1ImportEntitiesRequest
+    , gdavierEntityFilter
+    , gdavierInputURL
+    , gdavierLabels
+
+    -- ** GoogleDatastoreAdminV1IndexState
+    , GoogleDatastoreAdminV1IndexState (..)
+
     -- ** PropertyFilter
     , PropertyFilter
     , propertyFilter
@@ -250,12 +425,26 @@
     , kindExpression
     , keName
 
+    -- ** GoogleLongrunningOperationResponse
+    , GoogleLongrunningOperationResponse
+    , googleLongrunningOperationResponse
+    , glorAddtional
+
     -- ** ReadOptions
     , ReadOptions
     , readOptions
     , roReadConsistency
     , roTransaction
 
+    -- ** GoogleDatastoreAdminV1beta1CommonMetadataState
+    , GoogleDatastoreAdminV1beta1CommonMetadataState (..)
+
+    -- ** GoogleDatastoreAdminV1EntityFilter
+    , GoogleDatastoreAdminV1EntityFilter
+    , googleDatastoreAdminV1EntityFilter
+    , gdavefNamespaceIds
+    , gdavefKinds
+
     -- ** RollbackResponse
     , RollbackResponse
     , rollbackResponse
@@ -265,12 +454,31 @@
     , projection
     , pProperty
 
+    -- ** ReserveIdsResponse
+    , ReserveIdsResponse
+    , reserveIdsResponse
+
     -- ** Filter
     , Filter
     , filter'
     , fCompositeFilter
     , fPropertyFilter
 
+    -- ** GoogleDatastoreAdminV1Index
+    , GoogleDatastoreAdminV1Index
+    , googleDatastoreAdminV1Index
+    , gdaviState
+    , gdaviKind
+    , gdaviProjectId
+    , gdaviIndexId
+    , gdaviAncestor
+    , gdaviProperties
+
+    -- ** GoogleDatastoreAdminV1beta1CommonMetadataLabels
+    , GoogleDatastoreAdminV1beta1CommonMetadataLabels
+    , googleDatastoreAdminV1beta1CommonMetadataLabels
+    , gAddtional
+
     -- ** PropertyFilterOp
     , PropertyFilterOp (..)
 
@@ -284,6 +492,27 @@
     -- ** CommitRequestMode
     , CommitRequestMode (..)
 
+    -- ** GoogleLongrunningListOperationsResponse
+    , GoogleLongrunningListOperationsResponse
+    , googleLongrunningListOperationsResponse
+    , gllorNextPageToken
+    , gllorOperations
+
+    -- ** GoogleDatastoreAdminV1ImportEntitiesMetadata
+    , GoogleDatastoreAdminV1ImportEntitiesMetadata
+    , googleDatastoreAdminV1ImportEntitiesMetadata
+    , gProgressBytes
+    , gProgressEntities
+    , gEntityFilter
+    , gInputURL
+    , gCommon
+
+    -- ** GoogleDatastoreAdminV1Progress
+    , GoogleDatastoreAdminV1Progress
+    , googleDatastoreAdminV1Progress
+    , gWorkCompleted
+    , gWorkEstimated
+
     -- ** PathElement
     , PathElement
     , pathElement
@@ -297,6 +526,22 @@
     , eKey
     , eProperties
 
+    -- ** GoogleDatastoreAdminV1beta1EntityFilter
+    , GoogleDatastoreAdminV1beta1EntityFilter
+    , googleDatastoreAdminV1beta1EntityFilter
+    , gNamespaceIds
+    , gKinds
+
+    -- ** ReadOnly
+    , ReadOnly
+    , readOnly
+
+    -- ** GoogleDatastoreAdminV1IndexedProperty
+    , GoogleDatastoreAdminV1IndexedProperty
+    , googleDatastoreAdminV1IndexedProperty
+    , gdavipDirection
+    , gdavipName
+
     -- ** LookupResponse
     , LookupResponse
     , lookupResponse
@@ -304,17 +549,38 @@
     , lrFound
     , lrMissing
 
+    -- ** GoogleLongrunningOperation
+    , GoogleLongrunningOperation
+    , googleLongrunningOperation
+    , gloDone
+    , gloError
+    , gloResponse
+    , gloName
+    , gloMetadata
+
     -- ** PropertyOrder
     , PropertyOrder
     , propertyOrder
     , poProperty
     , poDirection
 
+    -- ** GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+    , GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+    , googleDatastoreAdminV1beta1ExportEntitiesMetadata
+    , gooProgressBytes
+    , gooOutputURLPrefix
+    , gooProgressEntities
+    , gooEntityFilter
+    , gooCommon
+
     -- ** GqlQueryParameter
     , GqlQueryParameter
     , gqlQueryParameter
     , gqpCursor
     , gqpValue
+
+    -- ** GoogleDatastoreAdminV1CommonMetadataState
+    , GoogleDatastoreAdminV1CommonMetadataState (..)
     ) where
 
 import           Network.Google.Datastore.Types
@@ -322,7 +588,16 @@
 import           Network.Google.Resource.Datastore.Projects.AllocateIds
 import           Network.Google.Resource.Datastore.Projects.BeginTransaction
 import           Network.Google.Resource.Datastore.Projects.Commit
+import           Network.Google.Resource.Datastore.Projects.Export
+import           Network.Google.Resource.Datastore.Projects.Import
+import           Network.Google.Resource.Datastore.Projects.Indexes.Get
+import           Network.Google.Resource.Datastore.Projects.Indexes.List
 import           Network.Google.Resource.Datastore.Projects.Lookup
+import           Network.Google.Resource.Datastore.Projects.Operations.Cancel
+import           Network.Google.Resource.Datastore.Projects.Operations.Delete
+import           Network.Google.Resource.Datastore.Projects.Operations.Get
+import           Network.Google.Resource.Datastore.Projects.Operations.List
+import           Network.Google.Resource.Datastore.Projects.ReserveIds
 import           Network.Google.Resource.Datastore.Projects.Rollback
 import           Network.Google.Resource.Datastore.Projects.RunQuery
 
@@ -330,11 +605,20 @@
 TODO
 -}
 
--- | Represents the entirety of the methods and resources available for the Google Cloud Datastore API service.
+-- | Represents the entirety of the methods and resources available for the Cloud Datastore API service.
 type DatastoreAPI =
-     ProjectsBeginTransactionResource :<|>
-       ProjectsAllocateIdsResource
+     ProjectsIndexesListResource :<|>
+       ProjectsIndexesGetResource
+       :<|> ProjectsOperationsListResource
+       :<|> ProjectsOperationsGetResource
+       :<|> ProjectsOperationsCancelResource
+       :<|> ProjectsOperationsDeleteResource
+       :<|> ProjectsExportResource
+       :<|> ProjectsBeginTransactionResource
+       :<|> ProjectsAllocateIdsResource
        :<|> ProjectsRunQueryResource
        :<|> ProjectsRollbackResource
+       :<|> ProjectsReserveIdsResource
        :<|> ProjectsLookupResource
+       :<|> ProjectsImportResource
        :<|> ProjectsCommitResource
diff --git a/gen/Network/Google/Datastore/Types.hs b/gen/Network/Google/Datastore/Types.hs
--- a/gen/Network/Google/Datastore/Types.hs
+++ b/gen/Network/Google/Datastore/Types.hs
@@ -29,20 +29,60 @@
     , llLatitude
     , llLongitude
 
+    -- * TransactionOptions
+    , TransactionOptions
+    , transactionOptions
+    , toReadWrite
+    , toReadOnly
+
     -- * PropertyOrderDirection
     , PropertyOrderDirection (..)
 
+    -- * Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- * GoogleLongrunningOperationMetadata
+    , GoogleLongrunningOperationMetadata
+    , googleLongrunningOperationMetadata
+    , glomAddtional
+
+    -- * ReadWrite
+    , ReadWrite
+    , readWrite
+    , rwPreviousTransaction
+
+    -- * GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+    , GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+    , googleDatastoreAdminV1beta1ExportEntitiesResponse
+    , gdaveerOutputURL
+
     -- * RollbackRequest
     , RollbackRequest
     , rollbackRequest
     , rrTransaction
 
+    -- * ReserveIdsRequest
+    , ReserveIdsRequest
+    , reserveIdsRequest
+    , rirKeys
+    , rirDatabaseId
+
     -- * PartitionId
     , PartitionId
     , partitionId
     , piNamespaceId
     , piProjectId
 
+    -- * GoogleDatastoreAdminV1ListIndexesResponse
+    , GoogleDatastoreAdminV1ListIndexesResponse
+    , googleDatastoreAdminV1ListIndexesResponse
+    , gdavlirNextPageToken
+    , gdavlirIndexes
+
     -- * QueryResultBatch
     , QueryResultBatch
     , queryResultBatch
@@ -62,9 +102,15 @@
     , entityProperties
     , epAddtional
 
+    -- * GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+    , GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+    , googleDatastoreAdminV1ImportEntitiesRequestLabels
+    , gdavierlAddtional
+
     -- * BeginTransactionRequest
     , BeginTransactionRequest
     , beginTransactionRequest
+    , btrTransactionOptions
 
     -- * RunQueryRequest
     , RunQueryRequest
@@ -79,18 +125,65 @@
     , allocateIdsRequest
     , airKeys
 
+    -- * GoogleDatastoreAdminV1ExportEntitiesMetadata
+    , GoogleDatastoreAdminV1ExportEntitiesMetadata
+    , googleDatastoreAdminV1ExportEntitiesMetadata
+    , gdaveemProgressBytes
+    , gdaveemOutputURLPrefix
+    , gdaveemProgressEntities
+    , gdaveemEntityFilter
+    , gdaveemCommon
+
     -- * QueryResultBatchEntityResultType
     , QueryResultBatchEntityResultType (..)
 
+    -- * GoogleDatastoreAdminV1beta1CommonMetadata
+    , GoogleDatastoreAdminV1beta1CommonMetadata
+    , googleDatastoreAdminV1beta1CommonMetadata
+    , gdavcmState
+    , gdavcmStartTime
+    , gdavcmEndTime
+    , gdavcmLabels
+    , gdavcmOperationType
+
+    -- * Empty
+    , Empty
+    , empty
+
     -- * CompositeFilter
     , CompositeFilter
     , compositeFilter
     , cfOp
     , cfFilters
 
+    -- * GoogleDatastoreAdminV1beta1CommonMetadataOperationType
+    , GoogleDatastoreAdminV1beta1CommonMetadataOperationType (..)
+
     -- * QueryResultBatchMoreResults
     , QueryResultBatchMoreResults (..)
 
+    -- * GoogleDatastoreAdminV1IndexOperationMetadata
+    , GoogleDatastoreAdminV1IndexOperationMetadata
+    , googleDatastoreAdminV1IndexOperationMetadata
+    , gdaviomProgressEntities
+    , gdaviomCommon
+    , gdaviomIndexId
+
+    -- * GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+    , GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+    , googleDatastoreAdminV1beta1ImportEntitiesMetadata
+    , gdaviemProgressBytes
+    , gdaviemProgressEntities
+    , gdaviemEntityFilter
+    , gdaviemInputURL
+    , gdaviemCommon
+
+    -- * GoogleDatastoreAdminV1beta1Progress
+    , GoogleDatastoreAdminV1beta1Progress
+    , googleDatastoreAdminV1beta1Progress
+    , gdavpWorkCompleted
+    , gdavpWorkEstimated
+
     -- * BeginTransactionResponse
     , BeginTransactionResponse
     , beginTransactionResponse
@@ -122,6 +215,14 @@
     , rBatch
     , rQuery
 
+    -- * GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+    , GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+    , googleDatastoreAdminV1ExportEntitiesRequestLabels
+    , gdaveerlAddtional
+
+    -- * GoogleDatastoreAdminV1CommonMetadataOperationType
+    , GoogleDatastoreAdminV1CommonMetadataOperationType (..)
+
     -- * Value
     , Value
     , value
@@ -142,6 +243,22 @@
     -- * ValueNullValue
     , ValueNullValue (..)
 
+    -- * GoogleDatastoreAdminV1IndexedPropertyDirection
+    , GoogleDatastoreAdminV1IndexedPropertyDirection (..)
+
+    -- * GoogleDatastoreAdminV1CommonMetadataLabels
+    , GoogleDatastoreAdminV1CommonMetadataLabels
+    , googleDatastoreAdminV1CommonMetadataLabels
+    , gdavcmlAddtional
+
+    -- * GoogleDatastoreAdminV1IndexAncestor
+    , GoogleDatastoreAdminV1IndexAncestor (..)
+
+    -- * StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
     -- * LookupRequest
     , LookupRequest
     , lookupRequest
@@ -151,6 +268,22 @@
     -- * ReadOptionsReadConsistency
     , ReadOptionsReadConsistency (..)
 
+    -- * GoogleDatastoreAdminV1CommonMetadata
+    , GoogleDatastoreAdminV1CommonMetadata
+    , googleDatastoreAdminV1CommonMetadata
+    , gState
+    , gStartTime
+    , gEndTime
+    , gLabels
+    , gOperationType
+
+    -- * GoogleDatastoreAdminV1ExportEntitiesRequest
+    , GoogleDatastoreAdminV1ExportEntitiesRequest
+    , googleDatastoreAdminV1ExportEntitiesRequest
+    , gdaveerOutputURLPrefix
+    , gdaveerEntityFilter
+    , gdaveerLabels
+
     -- * Mutation
     , Mutation
     , mutation
@@ -165,6 +298,11 @@
     , gqlQueryNamedBindings
     , gqnbAddtional
 
+    -- * GoogleDatastoreAdminV1ExportEntitiesResponse
+    , GoogleDatastoreAdminV1ExportEntitiesResponse
+    , googleDatastoreAdminV1ExportEntitiesResponse
+    , gOutputURL
+
     -- * PropertyReference
     , PropertyReference
     , propertyReference
@@ -176,6 +314,16 @@
     , kPartitionId
     , kPath
 
+    -- * GoogleDatastoreAdminV1ImportEntitiesRequest
+    , GoogleDatastoreAdminV1ImportEntitiesRequest
+    , googleDatastoreAdminV1ImportEntitiesRequest
+    , gdavierEntityFilter
+    , gdavierInputURL
+    , gdavierLabels
+
+    -- * GoogleDatastoreAdminV1IndexState
+    , GoogleDatastoreAdminV1IndexState (..)
+
     -- * PropertyFilter
     , PropertyFilter
     , propertyFilter
@@ -222,12 +370,26 @@
     , kindExpression
     , keName
 
+    -- * GoogleLongrunningOperationResponse
+    , GoogleLongrunningOperationResponse
+    , googleLongrunningOperationResponse
+    , glorAddtional
+
     -- * ReadOptions
     , ReadOptions
     , readOptions
     , roReadConsistency
     , roTransaction
 
+    -- * GoogleDatastoreAdminV1beta1CommonMetadataState
+    , GoogleDatastoreAdminV1beta1CommonMetadataState (..)
+
+    -- * GoogleDatastoreAdminV1EntityFilter
+    , GoogleDatastoreAdminV1EntityFilter
+    , googleDatastoreAdminV1EntityFilter
+    , gdavefNamespaceIds
+    , gdavefKinds
+
     -- * RollbackResponse
     , RollbackResponse
     , rollbackResponse
@@ -237,12 +399,31 @@
     , projection
     , pProperty
 
+    -- * ReserveIdsResponse
+    , ReserveIdsResponse
+    , reserveIdsResponse
+
     -- * Filter
     , Filter
     , filter'
     , fCompositeFilter
     , fPropertyFilter
 
+    -- * GoogleDatastoreAdminV1Index
+    , GoogleDatastoreAdminV1Index
+    , googleDatastoreAdminV1Index
+    , gdaviState
+    , gdaviKind
+    , gdaviProjectId
+    , gdaviIndexId
+    , gdaviAncestor
+    , gdaviProperties
+
+    -- * GoogleDatastoreAdminV1beta1CommonMetadataLabels
+    , GoogleDatastoreAdminV1beta1CommonMetadataLabels
+    , googleDatastoreAdminV1beta1CommonMetadataLabels
+    , gAddtional
+
     -- * PropertyFilterOp
     , PropertyFilterOp (..)
 
@@ -256,6 +437,27 @@
     -- * CommitRequestMode
     , CommitRequestMode (..)
 
+    -- * GoogleLongrunningListOperationsResponse
+    , GoogleLongrunningListOperationsResponse
+    , googleLongrunningListOperationsResponse
+    , gllorNextPageToken
+    , gllorOperations
+
+    -- * GoogleDatastoreAdminV1ImportEntitiesMetadata
+    , GoogleDatastoreAdminV1ImportEntitiesMetadata
+    , googleDatastoreAdminV1ImportEntitiesMetadata
+    , gProgressBytes
+    , gProgressEntities
+    , gEntityFilter
+    , gInputURL
+    , gCommon
+
+    -- * GoogleDatastoreAdminV1Progress
+    , GoogleDatastoreAdminV1Progress
+    , googleDatastoreAdminV1Progress
+    , gWorkCompleted
+    , gWorkEstimated
+
     -- * PathElement
     , PathElement
     , pathElement
@@ -269,6 +471,22 @@
     , eKey
     , eProperties
 
+    -- * GoogleDatastoreAdminV1beta1EntityFilter
+    , GoogleDatastoreAdminV1beta1EntityFilter
+    , googleDatastoreAdminV1beta1EntityFilter
+    , gNamespaceIds
+    , gKinds
+
+    -- * ReadOnly
+    , ReadOnly
+    , readOnly
+
+    -- * GoogleDatastoreAdminV1IndexedProperty
+    , GoogleDatastoreAdminV1IndexedProperty
+    , googleDatastoreAdminV1IndexedProperty
+    , gdavipDirection
+    , gdavipName
+
     -- * LookupResponse
     , LookupResponse
     , lookupResponse
@@ -276,24 +494,45 @@
     , lrFound
     , lrMissing
 
+    -- * GoogleLongrunningOperation
+    , GoogleLongrunningOperation
+    , googleLongrunningOperation
+    , gloDone
+    , gloError
+    , gloResponse
+    , gloName
+    , gloMetadata
+
     -- * PropertyOrder
     , PropertyOrder
     , propertyOrder
     , poProperty
     , poDirection
 
+    -- * GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+    , GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+    , googleDatastoreAdminV1beta1ExportEntitiesMetadata
+    , gooProgressBytes
+    , gooOutputURLPrefix
+    , gooProgressEntities
+    , gooEntityFilter
+    , gooCommon
+
     -- * GqlQueryParameter
     , GqlQueryParameter
     , gqlQueryParameter
     , gqpCursor
     , gqpValue
+
+    -- * GoogleDatastoreAdminV1CommonMetadataState
+    , GoogleDatastoreAdminV1CommonMetadataState (..)
     ) where
 
 import           Network.Google.Datastore.Types.Product
 import           Network.Google.Datastore.Types.Sum
 import           Network.Google.Prelude
 
--- | Default request referring to version 'v1' of the Google Cloud Datastore API. This contains the host and root path used as a starting point for constructing service requests.
+-- | Default request referring to version 'v1' of the Cloud Datastore API. This contains the host and root path used as a starting point for constructing service requests.
 datastoreService :: ServiceConfig
 datastoreService
   = defaultService (ServiceId "datastore:v1")
diff --git a/gen/Network/Google/Datastore/Types/Product.hs b/gen/Network/Google/Datastore/Types/Product.hs
--- a/gen/Network/Google/Datastore/Types/Product.hs
+++ b/gen/Network/Google/Datastore/Types/Product.hs
@@ -24,2073 +24,4103 @@
 -- 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. Example of normalization code
--- in Python: def NormalizeLongitude(longitude): \"\"\"Wraps decimal
--- degrees longitude to [-180.0, 180.0].\"\"\" q, r = divmod(longitude,
--- 360.0) if r > 180.0 or (r == 180.0 and q \<= -1.0): return r - 360.0
--- return r def NormalizeLatLng(latitude, longitude): \"\"\"Wraps decimal
--- degrees latitude and longitude to [-90.0, 90.0] and [-180.0, 180.0],
--- respectively.\"\"\" r = latitude % 360.0 if r \<= 90.0: return r,
--- NormalizeLongitude(longitude) elif r >= 270.0: return r - 360,
--- NormalizeLongitude(longitude) else: return 180 - r,
--- NormalizeLongitude(longitude + 180.0) assert 180.0 ==
--- NormalizeLongitude(180.0) assert -180.0 == NormalizeLongitude(-180.0)
--- assert -179.0 == NormalizeLongitude(181.0) assert (0.0, 0.0) ==
--- NormalizeLatLng(360.0, 0.0) assert (0.0, 0.0) == NormalizeLatLng(-360.0,
--- 0.0) assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0) assert (-85.0,
--- -170.0) == NormalizeLatLng(-95.0, 10.0) assert (90.0, 10.0) ==
--- NormalizeLatLng(90.0, 10.0) assert (-90.0, -10.0) ==
--- NormalizeLatLng(-90.0, -10.0) assert (0.0, -170.0) ==
--- NormalizeLatLng(-180.0, 10.0) assert (0.0, -170.0) ==
--- NormalizeLatLng(180.0, 10.0) assert (-90.0, 10.0) ==
--- NormalizeLatLng(270.0, 10.0) assert (90.0, 10.0) ==
--- NormalizeLatLng(-270.0, 10.0) The code in
--- logs\/storage\/validator\/logs_validator_traits.cc treats this type as
--- if it were annotated as ST_LOCATION.
---
--- /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 request for Datastore.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 identifier, returned by a call to
--- Datastore.BeginTransaction.
-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])
-
--- | A partition ID identifies a grouping of entities. The grouping is always
--- by project and namespace, however the namespace ID may be empty. A
--- partition ID contains several dimensions: project ID and namespace ID.
--- Partition dimensions: - May be \`\"\"\`. - Must be valid UTF-8 bytes. -
--- Must have values that match regex \`[A-Za-z\\d\\.\\-_]{1,100}\` If the
--- value of any dimension matches regex \`__.*__\`, the partition is
--- reserved\/read-only. A reserved\/read-only partition ID is forbidden in
--- certain documented contexts. Foreign partition IDs (in which the project
--- ID does not match the context project ID ) are discouraged. Reads and
--- writes of foreign partition IDs may fail if the project is not in an
--- active state.
---
--- /See:/ 'partitionId' smart constructor.
-data PartitionId = PartitionId'
-    { _piNamespaceId :: !(Maybe Text)
-    , _piProjectId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PartitionId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piNamespaceId'
---
--- * 'piProjectId'
-partitionId
-    :: PartitionId
-partitionId =
-    PartitionId'
-    { _piNamespaceId = Nothing
-    , _piProjectId = Nothing
-    }
-
--- | If not empty, the ID of the namespace to which the entities belong.
-piNamespaceId :: Lens' PartitionId (Maybe Text)
-piNamespaceId
-  = lens _piNamespaceId
-      (\ s a -> s{_piNamespaceId = a})
-
--- | The ID of the project to which the entities belong.
-piProjectId :: Lens' PartitionId (Maybe Text)
-piProjectId
-  = lens _piProjectId (\ s a -> s{_piProjectId = a})
-
-instance FromJSON PartitionId where
-        parseJSON
-          = withObject "PartitionId"
-              (\ o ->
-                 PartitionId' <$>
-                   (o .:? "namespaceId") <*> (o .:? "projectId"))
-
-instance ToJSON PartitionId where
-        toJSON PartitionId'{..}
-          = object
-              (catMaybes
-                 [("namespaceId" .=) <$> _piNamespaceId,
-                  ("projectId" .=) <$> _piProjectId])
-
--- | A batch of results produced by a query.
---
--- /See:/ 'queryResultBatch' smart constructor.
-data QueryResultBatch = QueryResultBatch'
-    { _qrbSkippedResults   :: !(Maybe (Textual Int32))
-    , _qrbSkippedCursor    :: !(Maybe Bytes)
-    , _qrbEntityResultType :: !(Maybe QueryResultBatchEntityResultType)
-    , _qrbSnapshotVersion  :: !(Maybe (Textual Int64))
-    , _qrbEntityResults    :: !(Maybe [EntityResult])
-    , _qrbMoreResults      :: !(Maybe QueryResultBatchMoreResults)
-    , _qrbEndCursor        :: !(Maybe Bytes)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'QueryResultBatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qrbSkippedResults'
---
--- * 'qrbSkippedCursor'
---
--- * 'qrbEntityResultType'
---
--- * 'qrbSnapshotVersion'
---
--- * 'qrbEntityResults'
---
--- * 'qrbMoreResults'
---
--- * 'qrbEndCursor'
-queryResultBatch
-    :: QueryResultBatch
-queryResultBatch =
-    QueryResultBatch'
-    { _qrbSkippedResults = Nothing
-    , _qrbSkippedCursor = Nothing
-    , _qrbEntityResultType = Nothing
-    , _qrbSnapshotVersion = Nothing
-    , _qrbEntityResults = Nothing
-    , _qrbMoreResults = Nothing
-    , _qrbEndCursor = Nothing
-    }
-
--- | The number of results skipped, typically because of an offset.
-qrbSkippedResults :: Lens' QueryResultBatch (Maybe Int32)
-qrbSkippedResults
-  = lens _qrbSkippedResults
-      (\ s a -> s{_qrbSkippedResults = a})
-      . mapping _Coerce
-
--- | A cursor that points to the position after the last skipped result. Will
--- be set when \`skipped_results\` != 0.
-qrbSkippedCursor :: Lens' QueryResultBatch (Maybe ByteString)
-qrbSkippedCursor
-  = lens _qrbSkippedCursor
-      (\ s a -> s{_qrbSkippedCursor = a})
-      . mapping _Bytes
-
--- | The result type for every entity in \`entity_results\`.
-qrbEntityResultType :: Lens' QueryResultBatch (Maybe QueryResultBatchEntityResultType)
-qrbEntityResultType
-  = lens _qrbEntityResultType
-      (\ s a -> s{_qrbEntityResultType = a})
-
--- | The version number of the snapshot this batch was returned from. This
--- applies to the range of results from the query\'s \`start_cursor\` (or
--- the beginning of the query if no cursor was given) to this batch\'s
--- \`end_cursor\` (not the query\'s \`end_cursor\`). In a single
--- transaction, subsequent query result batches for the same query can have
--- a greater snapshot version number. Each batch\'s snapshot version is
--- valid for all preceding batches. The value will be zero for eventually
--- consistent queries.
-qrbSnapshotVersion :: Lens' QueryResultBatch (Maybe Int64)
-qrbSnapshotVersion
-  = lens _qrbSnapshotVersion
-      (\ s a -> s{_qrbSnapshotVersion = a})
-      . mapping _Coerce
-
--- | The results for this batch.
-qrbEntityResults :: Lens' QueryResultBatch [EntityResult]
-qrbEntityResults
-  = lens _qrbEntityResults
-      (\ s a -> s{_qrbEntityResults = a})
-      . _Default
-      . _Coerce
-
--- | The state of the query after the current batch.
-qrbMoreResults :: Lens' QueryResultBatch (Maybe QueryResultBatchMoreResults)
-qrbMoreResults
-  = lens _qrbMoreResults
-      (\ s a -> s{_qrbMoreResults = a})
-
--- | A cursor that points to the position after the last result in the batch.
-qrbEndCursor :: Lens' QueryResultBatch (Maybe ByteString)
-qrbEndCursor
-  = lens _qrbEndCursor (\ s a -> s{_qrbEndCursor = a})
-      . mapping _Bytes
-
-instance FromJSON QueryResultBatch where
-        parseJSON
-          = withObject "QueryResultBatch"
-              (\ o ->
-                 QueryResultBatch' <$>
-                   (o .:? "skippedResults") <*> (o .:? "skippedCursor")
-                     <*> (o .:? "entityResultType")
-                     <*> (o .:? "snapshotVersion")
-                     <*> (o .:? "entityResults" .!= mempty)
-                     <*> (o .:? "moreResults")
-                     <*> (o .:? "endCursor"))
-
-instance ToJSON QueryResultBatch where
-        toJSON QueryResultBatch'{..}
-          = object
-              (catMaybes
-                 [("skippedResults" .=) <$> _qrbSkippedResults,
-                  ("skippedCursor" .=) <$> _qrbSkippedCursor,
-                  ("entityResultType" .=) <$> _qrbEntityResultType,
-                  ("snapshotVersion" .=) <$> _qrbSnapshotVersion,
-                  ("entityResults" .=) <$> _qrbEntityResults,
-                  ("moreResults" .=) <$> _qrbMoreResults,
-                  ("endCursor" .=) <$> _qrbEndCursor])
-
--- | The entity\'s properties. The map\'s keys are property names. A property
--- name matching regex \`__.*__\` is reserved. A reserved property name is
--- forbidden in certain documented contexts. The name must not contain more
--- than 500 characters. The name cannot be \`\"\"\`.
---
--- /See:/ 'entityProperties' smart constructor.
-newtype EntityProperties = EntityProperties'
-    { _epAddtional :: HashMap Text Value
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EntityProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'epAddtional'
-entityProperties
-    :: HashMap Text Value -- ^ 'epAddtional'
-    -> EntityProperties
-entityProperties pEpAddtional_ =
-    EntityProperties'
-    { _epAddtional = _Coerce # pEpAddtional_
-    }
-
-epAddtional :: Lens' EntityProperties (HashMap Text Value)
-epAddtional
-  = lens _epAddtional (\ s a -> s{_epAddtional = a}) .
-      _Coerce
-
-instance FromJSON EntityProperties where
-        parseJSON
-          = withObject "EntityProperties"
-              (\ o -> EntityProperties' <$> (parseJSONObject o))
-
-instance ToJSON EntityProperties where
-        toJSON = toJSON . _epAddtional
-
--- | The request for Datastore.BeginTransaction.
---
--- /See:/ 'beginTransactionRequest' smart constructor.
-data BeginTransactionRequest =
-    BeginTransactionRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'BeginTransactionRequest' with the minimum fields required to make a request.
---
-beginTransactionRequest
-    :: BeginTransactionRequest
-beginTransactionRequest = BeginTransactionRequest'
-
-instance FromJSON BeginTransactionRequest where
-        parseJSON
-          = withObject "BeginTransactionRequest"
-              (\ o -> pure BeginTransactionRequest')
-
-instance ToJSON BeginTransactionRequest where
-        toJSON = const emptyObject
-
--- | The request for Datastore.RunQuery.
---
--- /See:/ 'runQueryRequest' smart constructor.
-data RunQueryRequest = RunQueryRequest'
-    { _rqrPartitionId :: !(Maybe PartitionId)
-    , _rqrGqlQuery    :: !(Maybe GqlQuery)
-    , _rqrQuery       :: !(Maybe Query)
-    , _rqrReadOptions :: !(Maybe ReadOptions)
-    } 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:
---
--- * 'rqrPartitionId'
---
--- * 'rqrGqlQuery'
---
--- * 'rqrQuery'
---
--- * 'rqrReadOptions'
-runQueryRequest
-    :: RunQueryRequest
-runQueryRequest =
-    RunQueryRequest'
-    { _rqrPartitionId = Nothing
-    , _rqrGqlQuery = Nothing
-    , _rqrQuery = Nothing
-    , _rqrReadOptions = Nothing
-    }
-
--- | Entities are partitioned into subsets, identified by a partition ID.
--- Queries are scoped to a single partition. This partition ID is
--- normalized with the standard default context partition ID.
-rqrPartitionId :: Lens' RunQueryRequest (Maybe PartitionId)
-rqrPartitionId
-  = lens _rqrPartitionId
-      (\ s a -> s{_rqrPartitionId = a})
-
--- | The GQL query to run.
-rqrGqlQuery :: Lens' RunQueryRequest (Maybe GqlQuery)
-rqrGqlQuery
-  = lens _rqrGqlQuery (\ s a -> s{_rqrGqlQuery = a})
-
--- | The query to run.
-rqrQuery :: Lens' RunQueryRequest (Maybe Query)
-rqrQuery = lens _rqrQuery (\ s a -> s{_rqrQuery = a})
-
--- | The options for this query.
-rqrReadOptions :: Lens' RunQueryRequest (Maybe ReadOptions)
-rqrReadOptions
-  = lens _rqrReadOptions
-      (\ s a -> s{_rqrReadOptions = a})
-
-instance FromJSON RunQueryRequest where
-        parseJSON
-          = withObject "RunQueryRequest"
-              (\ o ->
-                 RunQueryRequest' <$>
-                   (o .:? "partitionId") <*> (o .:? "gqlQuery") <*>
-                     (o .:? "query")
-                     <*> (o .:? "readOptions"))
-
-instance ToJSON RunQueryRequest where
-        toJSON RunQueryRequest'{..}
-          = object
-              (catMaybes
-                 [("partitionId" .=) <$> _rqrPartitionId,
-                  ("gqlQuery" .=) <$> _rqrGqlQuery,
-                  ("query" .=) <$> _rqrQuery,
-                  ("readOptions" .=) <$> _rqrReadOptions])
-
--- | The request for Datastore.AllocateIds.
---
--- /See:/ 'allocateIdsRequest' smart constructor.
-newtype AllocateIdsRequest = AllocateIdsRequest'
-    { _airKeys :: Maybe [Key]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AllocateIdsRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'airKeys'
-allocateIdsRequest
-    :: AllocateIdsRequest
-allocateIdsRequest =
-    AllocateIdsRequest'
-    { _airKeys = Nothing
-    }
-
--- | A list of keys with incomplete key paths for which to allocate IDs. No
--- key may be reserved\/read-only.
-airKeys :: Lens' AllocateIdsRequest [Key]
-airKeys
-  = lens _airKeys (\ s a -> s{_airKeys = a}) . _Default
-      . _Coerce
-
-instance FromJSON AllocateIdsRequest where
-        parseJSON
-          = withObject "AllocateIdsRequest"
-              (\ o ->
-                 AllocateIdsRequest' <$> (o .:? "keys" .!= mempty))
-
-instance ToJSON AllocateIdsRequest where
-        toJSON AllocateIdsRequest'{..}
-          = object (catMaybes [("keys" .=) <$> _airKeys])
-
--- | 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])
-
--- | The response for Datastore.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 identifier (always present).
-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 result of applying a mutation.
---
--- /See:/ 'mutationResult' smart constructor.
-data MutationResult = MutationResult'
-    { _mrConflictDetected :: !(Maybe Bool)
-    , _mrKey              :: !(Maybe Key)
-    , _mrVersion          :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MutationResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mrConflictDetected'
---
--- * 'mrKey'
---
--- * 'mrVersion'
-mutationResult
-    :: MutationResult
-mutationResult =
-    MutationResult'
-    { _mrConflictDetected = Nothing
-    , _mrKey = Nothing
-    , _mrVersion = Nothing
-    }
-
--- | Whether a conflict was detected for this mutation. Always false when a
--- conflict detection strategy field is not set in the mutation.
-mrConflictDetected :: Lens' MutationResult (Maybe Bool)
-mrConflictDetected
-  = lens _mrConflictDetected
-      (\ s a -> s{_mrConflictDetected = a})
-
--- | The automatically allocated key. Set only when the mutation allocated a
--- key.
-mrKey :: Lens' MutationResult (Maybe Key)
-mrKey = lens _mrKey (\ s a -> s{_mrKey = a})
-
--- | The version of the entity on the server after processing the mutation.
--- If the mutation doesn\'t change anything on the server, then the version
--- will be the version of the current entity or, if no entity is present, a
--- version that is strictly greater than the version of any previous entity
--- and less than the version of any possible future entity.
-mrVersion :: Lens' MutationResult (Maybe Int64)
-mrVersion
-  = lens _mrVersion (\ s a -> s{_mrVersion = a}) .
-      mapping _Coerce
-
-instance FromJSON MutationResult where
-        parseJSON
-          = withObject "MutationResult"
-              (\ o ->
-                 MutationResult' <$>
-                   (o .:? "conflictDetected") <*> (o .:? "key") <*>
-                     (o .:? "version"))
-
-instance ToJSON MutationResult where
-        toJSON MutationResult'{..}
-          = object
-              (catMaybes
-                 [("conflictDetected" .=) <$> _mrConflictDetected,
-                  ("key" .=) <$> _mrKey,
-                  ("version" .=) <$> _mrVersion])
-
--- | The response for Datastore.AllocateIds.
---
--- /See:/ 'allocateIdsResponse' smart constructor.
-newtype AllocateIdsResponse = AllocateIdsResponse'
-    { _aKeys :: Maybe [Key]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AllocateIdsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aKeys'
-allocateIdsResponse
-    :: AllocateIdsResponse
-allocateIdsResponse =
-    AllocateIdsResponse'
-    { _aKeys = Nothing
-    }
-
--- | The keys specified in the request (in the same order), each with its key
--- path completed with a newly allocated ID.
-aKeys :: Lens' AllocateIdsResponse [Key]
-aKeys
-  = lens _aKeys (\ s a -> s{_aKeys = a}) . _Default .
-      _Coerce
-
-instance FromJSON AllocateIdsResponse where
-        parseJSON
-          = withObject "AllocateIdsResponse"
-              (\ o ->
-                 AllocateIdsResponse' <$> (o .:? "keys" .!= mempty))
-
-instance ToJSON AllocateIdsResponse where
-        toJSON AllocateIdsResponse'{..}
-          = object (catMaybes [("keys" .=) <$> _aKeys])
-
--- | A [GQL
--- query](https:\/\/cloud.google.com\/datastore\/docs\/apis\/gql\/gql_reference).
---
--- /See:/ 'gqlQuery' smart constructor.
-data GqlQuery = GqlQuery'
-    { _gqPositionalBindings :: !(Maybe [GqlQueryParameter])
-    , _gqNamedBindings      :: !(Maybe GqlQueryNamedBindings)
-    , _gqQueryString        :: !(Maybe Text)
-    , _gqAllowLiterals      :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GqlQuery' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gqPositionalBindings'
---
--- * 'gqNamedBindings'
---
--- * 'gqQueryString'
---
--- * 'gqAllowLiterals'
-gqlQuery
-    :: GqlQuery
-gqlQuery =
-    GqlQuery'
-    { _gqPositionalBindings = Nothing
-    , _gqNamedBindings = Nothing
-    , _gqQueryString = Nothing
-    , _gqAllowLiterals = Nothing
-    }
-
--- | Numbered binding site \'1 references the first numbered parameter,
--- effectively using 1-based indexing, rather than the usual 0. For each
--- binding site numbered i in \`query_string\`, there must be an i-th
--- numbered parameter. The inverse must also be true.
-gqPositionalBindings :: Lens' GqlQuery [GqlQueryParameter]
-gqPositionalBindings
-  = lens _gqPositionalBindings
-      (\ s a -> s{_gqPositionalBindings = a})
-      . _Default
-      . _Coerce
-
--- | For each non-reserved named binding site in the query string, there must
--- be a named parameter with that name, but not necessarily the inverse.
--- Key must match regex \`A-Za-z_$*\`, must not match regex \`__.*__\`, and
--- must not be \`\"\"\`.
-gqNamedBindings :: Lens' GqlQuery (Maybe GqlQueryNamedBindings)
-gqNamedBindings
-  = lens _gqNamedBindings
-      (\ s a -> s{_gqNamedBindings = a})
-
--- | A string of the format described
--- [here](https:\/\/cloud.google.com\/datastore\/docs\/apis\/gql\/gql_reference).
-gqQueryString :: Lens' GqlQuery (Maybe Text)
-gqQueryString
-  = lens _gqQueryString
-      (\ s a -> s{_gqQueryString = a})
-
--- | When false, the query string must not contain any literals and instead
--- must bind all values. For example, \`SELECT * FROM Kind WHERE a =
--- \'string literal\'\` is not allowed, while \`SELECT * FROM Kind WHERE a
--- = \'value\` is.
-gqAllowLiterals :: Lens' GqlQuery (Maybe Bool)
-gqAllowLiterals
-  = lens _gqAllowLiterals
-      (\ s a -> s{_gqAllowLiterals = a})
-
-instance FromJSON GqlQuery where
-        parseJSON
-          = withObject "GqlQuery"
-              (\ o ->
-                 GqlQuery' <$>
-                   (o .:? "positionalBindings" .!= mempty) <*>
-                     (o .:? "namedBindings")
-                     <*> (o .:? "queryString")
-                     <*> (o .:? "allowLiterals"))
-
-instance ToJSON GqlQuery where
-        toJSON GqlQuery'{..}
-          = object
-              (catMaybes
-                 [("positionalBindings" .=) <$> _gqPositionalBindings,
-                  ("namedBindings" .=) <$> _gqNamedBindings,
-                  ("queryString" .=) <$> _gqQueryString,
-                  ("allowLiterals" .=) <$> _gqAllowLiterals])
-
--- | The response for Datastore.RunQuery.
---
--- /See:/ 'runQueryResponse' smart constructor.
-data RunQueryResponse = RunQueryResponse'
-    { _rBatch :: !(Maybe QueryResultBatch)
-    , _rQuery :: !(Maybe Query)
-    } 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:
---
--- * 'rBatch'
---
--- * 'rQuery'
-runQueryResponse
-    :: RunQueryResponse
-runQueryResponse =
-    RunQueryResponse'
-    { _rBatch = Nothing
-    , _rQuery = Nothing
-    }
-
--- | A batch of query results (always present).
-rBatch :: Lens' RunQueryResponse (Maybe QueryResultBatch)
-rBatch = lens _rBatch (\ s a -> s{_rBatch = a})
-
--- | The parsed form of the \`GqlQuery\` from the request, if it was set.
-rQuery :: Lens' RunQueryResponse (Maybe Query)
-rQuery = lens _rQuery (\ s a -> s{_rQuery = a})
-
-instance FromJSON RunQueryResponse where
-        parseJSON
-          = withObject "RunQueryResponse"
-              (\ o ->
-                 RunQueryResponse' <$>
-                   (o .:? "batch") <*> (o .:? "query"))
-
-instance ToJSON RunQueryResponse where
-        toJSON RunQueryResponse'{..}
-          = object
-              (catMaybes
-                 [("batch" .=) <$> _rBatch, ("query" .=) <$> _rQuery])
-
--- | A message that can hold any of the supported value types and associated
--- metadata.
---
--- /See:/ 'value' smart constructor.
-data Value = Value'
-    { _vKeyValue           :: !(Maybe Key)
-    , _vGeoPointValue      :: !(Maybe LatLng)
-    , _vIntegerValue       :: !(Maybe (Textual Int64))
-    , _vTimestampValue     :: !(Maybe DateTime')
-    , _vEntityValue        :: !(Maybe Entity)
-    , _vExcludeFromIndexes :: !(Maybe Bool)
-    , _vDoubleValue        :: !(Maybe (Textual Double))
-    , _vStringValue        :: !(Maybe Text)
-    , _vBooleanValue       :: !(Maybe Bool)
-    , _vMeaning            :: !(Maybe (Textual Int32))
-    , _vArrayValue         :: !(Maybe ArrayValue)
-    , _vNullValue          :: !(Maybe ValueNullValue)
-    , _vBlobValue          :: !(Maybe Bytes)
-    } 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:
---
--- * 'vKeyValue'
---
--- * 'vGeoPointValue'
---
--- * 'vIntegerValue'
---
--- * 'vTimestampValue'
---
--- * 'vEntityValue'
---
--- * 'vExcludeFromIndexes'
---
--- * 'vDoubleValue'
---
--- * 'vStringValue'
---
--- * 'vBooleanValue'
---
--- * 'vMeaning'
---
--- * 'vArrayValue'
---
--- * 'vNullValue'
---
--- * 'vBlobValue'
-value
-    :: Value
-value =
-    Value'
-    { _vKeyValue = Nothing
-    , _vGeoPointValue = Nothing
-    , _vIntegerValue = Nothing
-    , _vTimestampValue = Nothing
-    , _vEntityValue = Nothing
-    , _vExcludeFromIndexes = Nothing
-    , _vDoubleValue = Nothing
-    , _vStringValue = Nothing
-    , _vBooleanValue = Nothing
-    , _vMeaning = Nothing
-    , _vArrayValue = Nothing
-    , _vNullValue = Nothing
-    , _vBlobValue = Nothing
-    }
-
--- | A key value.
-vKeyValue :: Lens' Value (Maybe Key)
-vKeyValue
-  = lens _vKeyValue (\ s a -> s{_vKeyValue = a})
-
--- | 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})
-
--- | An integer value.
-vIntegerValue :: Lens' Value (Maybe Int64)
-vIntegerValue
-  = lens _vIntegerValue
-      (\ s a -> s{_vIntegerValue = a})
-      . mapping _Coerce
-
--- | A timestamp value. When stored in the Datastore, precise only to
--- microseconds; any additional precision is rounded down.
-vTimestampValue :: Lens' Value (Maybe UTCTime)
-vTimestampValue
-  = lens _vTimestampValue
-      (\ s a -> s{_vTimestampValue = a})
-      . mapping _DateTime
-
--- | An entity value. - May have no key. - May have a key with an incomplete
--- key path. - May have a reserved\/read-only key.
-vEntityValue :: Lens' Value (Maybe Entity)
-vEntityValue
-  = lens _vEntityValue (\ s a -> s{_vEntityValue = a})
-
--- | If the value should be excluded from all indexes including those defined
--- explicitly.
-vExcludeFromIndexes :: Lens' Value (Maybe Bool)
-vExcludeFromIndexes
-  = lens _vExcludeFromIndexes
-      (\ s a -> s{_vExcludeFromIndexes = a})
-
--- | A double value.
-vDoubleValue :: Lens' Value (Maybe Double)
-vDoubleValue
-  = lens _vDoubleValue (\ s a -> s{_vDoubleValue = a})
-      . mapping _Coerce
-
--- | A UTF-8 encoded string value. When \`exclude_from_indexes\` is false (it
--- is indexed) , may have at most 1500 bytes. Otherwise, may be set to at
--- least 1,000,000 bytes.
-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})
-
--- | The \`meaning\` field should only be populated for backwards
--- compatibility.
-vMeaning :: Lens' Value (Maybe Int32)
-vMeaning
-  = lens _vMeaning (\ s a -> s{_vMeaning = a}) .
-      mapping _Coerce
-
--- | An array value. Cannot contain another array value. A \`Value\` instance
--- that sets field \`array_value\` must not set fields \`meaning\` or
--- \`exclude_from_indexes\`.
-vArrayValue :: Lens' Value (Maybe ArrayValue)
-vArrayValue
-  = lens _vArrayValue (\ s a -> s{_vArrayValue = a})
-
--- | A null value.
-vNullValue :: Lens' Value (Maybe ValueNullValue)
-vNullValue
-  = lens _vNullValue (\ s a -> s{_vNullValue = a})
-
--- | A blob value. May have at most 1,000,000 bytes. When
--- \`exclude_from_indexes\` is false, may have at most 1500 bytes. In JSON
--- requests, must be base64-encoded.
-vBlobValue :: Lens' Value (Maybe ByteString)
-vBlobValue
-  = lens _vBlobValue (\ s a -> s{_vBlobValue = a}) .
-      mapping _Bytes
-
-instance FromJSON Value where
-        parseJSON
-          = withObject "Value"
-              (\ o ->
-                 Value' <$>
-                   (o .:? "keyValue") <*> (o .:? "geoPointValue") <*>
-                     (o .:? "integerValue")
-                     <*> (o .:? "timestampValue")
-                     <*> (o .:? "entityValue")
-                     <*> (o .:? "excludeFromIndexes")
-                     <*> (o .:? "doubleValue")
-                     <*> (o .:? "stringValue")
-                     <*> (o .:? "booleanValue")
-                     <*> (o .:? "meaning")
-                     <*> (o .:? "arrayValue")
-                     <*> (o .:? "nullValue")
-                     <*> (o .:? "blobValue"))
-
-instance ToJSON Value where
-        toJSON Value'{..}
-          = object
-              (catMaybes
-                 [("keyValue" .=) <$> _vKeyValue,
-                  ("geoPointValue" .=) <$> _vGeoPointValue,
-                  ("integerValue" .=) <$> _vIntegerValue,
-                  ("timestampValue" .=) <$> _vTimestampValue,
-                  ("entityValue" .=) <$> _vEntityValue,
-                  ("excludeFromIndexes" .=) <$> _vExcludeFromIndexes,
-                  ("doubleValue" .=) <$> _vDoubleValue,
-                  ("stringValue" .=) <$> _vStringValue,
-                  ("booleanValue" .=) <$> _vBooleanValue,
-                  ("meaning" .=) <$> _vMeaning,
-                  ("arrayValue" .=) <$> _vArrayValue,
-                  ("nullValue" .=) <$> _vNullValue,
-                  ("blobValue" .=) <$> _vBlobValue])
-
--- | The request for Datastore.Lookup.
---
--- /See:/ 'lookupRequest' smart constructor.
-data LookupRequest = LookupRequest'
-    { _lrKeys        :: !(Maybe [Key])
-    , _lrReadOptions :: !(Maybe ReadOptions)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LookupRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrKeys'
---
--- * 'lrReadOptions'
-lookupRequest
-    :: LookupRequest
-lookupRequest =
-    LookupRequest'
-    { _lrKeys = Nothing
-    , _lrReadOptions = Nothing
-    }
-
--- | Keys of entities to look up.
-lrKeys :: Lens' LookupRequest [Key]
-lrKeys
-  = lens _lrKeys (\ s a -> s{_lrKeys = a}) . _Default .
-      _Coerce
-
--- | The options for this lookup request.
-lrReadOptions :: Lens' LookupRequest (Maybe ReadOptions)
-lrReadOptions
-  = lens _lrReadOptions
-      (\ s a -> s{_lrReadOptions = a})
-
-instance FromJSON LookupRequest where
-        parseJSON
-          = withObject "LookupRequest"
-              (\ o ->
-                 LookupRequest' <$>
-                   (o .:? "keys" .!= mempty) <*> (o .:? "readOptions"))
-
-instance ToJSON LookupRequest where
-        toJSON LookupRequest'{..}
-          = object
-              (catMaybes
-                 [("keys" .=) <$> _lrKeys,
-                  ("readOptions" .=) <$> _lrReadOptions])
-
--- | A mutation to apply to an entity.
---
--- /See:/ 'mutation' smart constructor.
-data Mutation = Mutation'
-    { _mBaseVersion :: !(Maybe (Textual Int64))
-    , _mInsert      :: !(Maybe Entity)
-    , _mUpsert      :: !(Maybe Entity)
-    , _mDelete      :: !(Maybe Key)
-    , _mUpdate      :: !(Maybe Entity)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Mutation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mBaseVersion'
---
--- * 'mInsert'
---
--- * 'mUpsert'
---
--- * 'mDelete'
---
--- * 'mUpdate'
-mutation
-    :: Mutation
-mutation =
-    Mutation'
-    { _mBaseVersion = Nothing
-    , _mInsert = Nothing
-    , _mUpsert = Nothing
-    , _mDelete = Nothing
-    , _mUpdate = Nothing
-    }
-
--- | The version of the entity that this mutation is being applied to. If
--- this does not match the current version on the server, the mutation
--- conflicts.
-mBaseVersion :: Lens' Mutation (Maybe Int64)
-mBaseVersion
-  = lens _mBaseVersion (\ s a -> s{_mBaseVersion = a})
-      . mapping _Coerce
-
--- | The entity to insert. The entity must not already exist. The entity
--- key\'s final path element may be incomplete.
-mInsert :: Lens' Mutation (Maybe Entity)
-mInsert = lens _mInsert (\ s a -> s{_mInsert = a})
-
--- | The entity to upsert. The entity may or may not already exist. The
--- entity key\'s final path element may be incomplete.
-mUpsert :: Lens' Mutation (Maybe Entity)
-mUpsert = lens _mUpsert (\ s a -> s{_mUpsert = a})
-
--- | The key of the entity to delete. The entity may or may not already
--- exist. Must have a complete key path and must not be
--- reserved\/read-only.
-mDelete :: Lens' Mutation (Maybe Key)
-mDelete = lens _mDelete (\ s a -> s{_mDelete = a})
-
--- | The entity to update. The entity must already exist. Must have a
--- complete key path.
-mUpdate :: Lens' Mutation (Maybe Entity)
-mUpdate = lens _mUpdate (\ s a -> s{_mUpdate = a})
-
-instance FromJSON Mutation where
-        parseJSON
-          = withObject "Mutation"
-              (\ o ->
-                 Mutation' <$>
-                   (o .:? "baseVersion") <*> (o .:? "insert") <*>
-                     (o .:? "upsert")
-                     <*> (o .:? "delete")
-                     <*> (o .:? "update"))
-
-instance ToJSON Mutation where
-        toJSON Mutation'{..}
-          = object
-              (catMaybes
-                 [("baseVersion" .=) <$> _mBaseVersion,
-                  ("insert" .=) <$> _mInsert,
-                  ("upsert" .=) <$> _mUpsert,
-                  ("delete" .=) <$> _mDelete,
-                  ("update" .=) <$> _mUpdate])
-
--- | For each non-reserved named binding site in the query string, there must
--- be a named parameter with that name, but not necessarily the inverse.
--- Key must match regex \`A-Za-z_$*\`, must not match regex \`__.*__\`, and
--- must not be \`\"\"\`.
---
--- /See:/ 'gqlQueryNamedBindings' smart constructor.
-newtype GqlQueryNamedBindings = GqlQueryNamedBindings'
-    { _gqnbAddtional :: HashMap Text GqlQueryParameter
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GqlQueryNamedBindings' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gqnbAddtional'
-gqlQueryNamedBindings
-    :: HashMap Text GqlQueryParameter -- ^ 'gqnbAddtional'
-    -> GqlQueryNamedBindings
-gqlQueryNamedBindings pGqnbAddtional_ =
-    GqlQueryNamedBindings'
-    { _gqnbAddtional = _Coerce # pGqnbAddtional_
-    }
-
-gqnbAddtional :: Lens' GqlQueryNamedBindings (HashMap Text GqlQueryParameter)
-gqnbAddtional
-  = lens _gqnbAddtional
-      (\ s a -> s{_gqnbAddtional = a})
-      . _Coerce
-
-instance FromJSON GqlQueryNamedBindings where
-        parseJSON
-          = withObject "GqlQueryNamedBindings"
-              (\ o ->
-                 GqlQueryNamedBindings' <$> (parseJSONObject o))
-
-instance ToJSON GqlQueryNamedBindings where
-        toJSON = toJSON . _gqnbAddtional
-
--- | A reference to a property relative to the kind expressions.
---
--- /See:/ 'propertyReference' smart constructor.
-newtype PropertyReference = PropertyReference'
-    { _prName :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertyReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prName'
-propertyReference
-    :: PropertyReference
-propertyReference =
-    PropertyReference'
-    { _prName = Nothing
-    }
-
--- | The name of the property. If name includes \".\"s, it may be interpreted
--- as a property name path.
-prName :: Lens' PropertyReference (Maybe Text)
-prName = lens _prName (\ s a -> s{_prName = a})
-
-instance FromJSON PropertyReference where
-        parseJSON
-          = withObject "PropertyReference"
-              (\ o -> PropertyReference' <$> (o .:? "name"))
-
-instance ToJSON PropertyReference where
-        toJSON PropertyReference'{..}
-          = object (catMaybes [("name" .=) <$> _prName])
-
--- | A unique identifier for an entity. If a key\'s partition ID or any of
--- its path kinds or names are reserved\/read-only, the key is
--- reserved\/read-only. A reserved\/read-only key is forbidden in certain
--- documented contexts.
---
--- /See:/ 'key' smart constructor.
-data Key = Key'
-    { _kPartitionId :: !(Maybe PartitionId)
-    , _kPath        :: !(Maybe [PathElement])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Key' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kPartitionId'
---
--- * 'kPath'
-key
-    :: Key
-key =
-    Key'
-    { _kPartitionId = Nothing
-    , _kPath = Nothing
-    }
-
--- | Entities are partitioned into subsets, currently identified by a project
--- ID and namespace ID. Queries are scoped to a single partition.
-kPartitionId :: Lens' Key (Maybe PartitionId)
-kPartitionId
-  = lens _kPartitionId (\ s a -> s{_kPartitionId = a})
-
--- | The entity path. An entity path consists of one or more elements
--- composed of a kind and a string or numerical identifier, which identify
--- entities. The first element identifies a _root entity_, the second
--- element identifies a _child_ of the root entity, the third element
--- identifies a child of the second entity, and so forth. The entities
--- identified by all prefixes of the path are called the element\'s
--- _ancestors_. An entity path is always fully complete: *all* of the
--- entity\'s ancestors are required to be in the path along with the entity
--- identifier itself. The only exception is that in some documented cases,
--- the identifier in the last path element (for the entity) itself may be
--- omitted. For example, the last path element of the key of
--- \`Mutation.insert\` may have no identifier. A path can never be empty,
--- and a path can have at most 100 elements.
-kPath :: Lens' Key [PathElement]
-kPath
-  = lens _kPath (\ s a -> s{_kPath = a}) . _Default .
-      _Coerce
-
-instance FromJSON Key where
-        parseJSON
-          = withObject "Key"
-              (\ o ->
-                 Key' <$>
-                   (o .:? "partitionId") <*> (o .:? "path" .!= mempty))
-
-instance ToJSON Key where
-        toJSON Key'{..}
-          = object
-              (catMaybes
-                 [("partitionId" .=) <$> _kPartitionId,
-                  ("path" .=) <$> _kPath])
-
--- | A filter on a specific property.
---
--- /See:/ 'propertyFilter' smart constructor.
-data PropertyFilter = PropertyFilter'
-    { _pfProperty :: !(Maybe PropertyReference)
-    , _pfOp       :: !(Maybe PropertyFilterOp)
-    , _pfValue    :: !(Maybe Value)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertyFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pfProperty'
---
--- * 'pfOp'
---
--- * 'pfValue'
-propertyFilter
-    :: PropertyFilter
-propertyFilter =
-    PropertyFilter'
-    { _pfProperty = Nothing
-    , _pfOp = Nothing
-    , _pfValue = Nothing
-    }
-
--- | The property to filter by.
-pfProperty :: Lens' PropertyFilter (Maybe PropertyReference)
-pfProperty
-  = lens _pfProperty (\ s a -> s{_pfProperty = a})
-
--- | The operator to filter by.
-pfOp :: Lens' PropertyFilter (Maybe PropertyFilterOp)
-pfOp = lens _pfOp (\ s a -> s{_pfOp = a})
-
--- | The value to compare the property to.
-pfValue :: Lens' PropertyFilter (Maybe Value)
-pfValue = lens _pfValue (\ s a -> s{_pfValue = a})
-
-instance FromJSON PropertyFilter where
-        parseJSON
-          = withObject "PropertyFilter"
-              (\ o ->
-                 PropertyFilter' <$>
-                   (o .:? "property") <*> (o .:? "op") <*>
-                     (o .:? "value"))
-
-instance ToJSON PropertyFilter where
-        toJSON PropertyFilter'{..}
-          = object
-              (catMaybes
-                 [("property" .=) <$> _pfProperty,
-                  ("op" .=) <$> _pfOp, ("value" .=) <$> _pfValue])
-
--- | A query for entities.
---
--- /See:/ 'query' smart constructor.
-data Query = Query'
-    { _qStartCursor :: !(Maybe Bytes)
-    , _qOffSet      :: !(Maybe (Textual Int32))
-    , _qKind        :: !(Maybe [KindExpression])
-    , _qDistinctOn  :: !(Maybe [PropertyReference])
-    , _qEndCursor   :: !(Maybe Bytes)
-    , _qLimit       :: !(Maybe (Textual Int32))
-    , _qProjection  :: !(Maybe [Projection])
-    , _qFilter      :: !(Maybe Filter)
-    , _qOrder       :: !(Maybe [PropertyOrder])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Query' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'qStartCursor'
---
--- * 'qOffSet'
---
--- * 'qKind'
---
--- * 'qDistinctOn'
---
--- * 'qEndCursor'
---
--- * 'qLimit'
---
--- * 'qProjection'
---
--- * 'qFilter'
---
--- * 'qOrder'
-query
-    :: Query
-query =
-    Query'
-    { _qStartCursor = Nothing
-    , _qOffSet = Nothing
-    , _qKind = Nothing
-    , _qDistinctOn = Nothing
-    , _qEndCursor = Nothing
-    , _qLimit = Nothing
-    , _qProjection = Nothing
-    , _qFilter = Nothing
-    , _qOrder = Nothing
-    }
-
--- | A starting point for the query results. Query cursors are returned in
--- query result batches and [can only be used to continue the same
--- query](https:\/\/cloud.google.com\/datastore\/docs\/concepts\/queries#cursors_limits_and_offsets).
-qStartCursor :: Lens' Query (Maybe ByteString)
-qStartCursor
-  = lens _qStartCursor (\ s a -> s{_qStartCursor = a})
-      . mapping _Bytes
-
--- | The number of results to skip. Applies before limit, but after all other
--- constraints. Optional. Must be >= 0 if specified.
-qOffSet :: Lens' Query (Maybe Int32)
-qOffSet
-  = lens _qOffSet (\ s a -> s{_qOffSet = a}) .
-      mapping _Coerce
-
--- | The kinds to query (if empty, returns entities of all kinds). Currently
--- at most 1 kind may be specified.
-qKind :: Lens' Query [KindExpression]
-qKind
-  = lens _qKind (\ s a -> s{_qKind = a}) . _Default .
-      _Coerce
-
--- | The properties to make distinct. The query results will contain the
--- first result for each distinct combination of values for the given
--- properties (if empty, all results are returned).
-qDistinctOn :: Lens' Query [PropertyReference]
-qDistinctOn
-  = lens _qDistinctOn (\ s a -> s{_qDistinctOn = a}) .
-      _Default
-      . _Coerce
-
--- | An ending point for the query results. Query cursors are returned in
--- query result batches and [can only be used to limit the same
--- query](https:\/\/cloud.google.com\/datastore\/docs\/concepts\/queries#cursors_limits_and_offsets).
-qEndCursor :: Lens' Query (Maybe ByteString)
-qEndCursor
-  = lens _qEndCursor (\ s a -> s{_qEndCursor = a}) .
-      mapping _Bytes
-
--- | The maximum number of results to return. Applies after all other
--- constraints. Optional. Unspecified is interpreted as no limit. Must be
--- >= 0 if specified.
-qLimit :: Lens' Query (Maybe Int32)
-qLimit
-  = lens _qLimit (\ s a -> s{_qLimit = a}) .
-      mapping _Coerce
-
--- | The projection to return. Defaults to returning all properties.
-qProjection :: Lens' Query [Projection]
-qProjection
-  = lens _qProjection (\ s a -> s{_qProjection = a}) .
-      _Default
-      . _Coerce
-
--- | The filter to apply.
-qFilter :: Lens' Query (Maybe Filter)
-qFilter = lens _qFilter (\ s a -> s{_qFilter = a})
-
--- | The order to apply to the query results (if empty, order is
--- unspecified).
-qOrder :: Lens' Query [PropertyOrder]
-qOrder
-  = lens _qOrder (\ s a -> s{_qOrder = a}) . _Default .
-      _Coerce
-
-instance FromJSON Query where
-        parseJSON
-          = withObject "Query"
-              (\ o ->
-                 Query' <$>
-                   (o .:? "startCursor") <*> (o .:? "offset") <*>
-                     (o .:? "kind" .!= mempty)
-                     <*> (o .:? "distinctOn" .!= mempty)
-                     <*> (o .:? "endCursor")
-                     <*> (o .:? "limit")
-                     <*> (o .:? "projection" .!= mempty)
-                     <*> (o .:? "filter")
-                     <*> (o .:? "order" .!= mempty))
-
-instance ToJSON Query where
-        toJSON Query'{..}
-          = object
-              (catMaybes
-                 [("startCursor" .=) <$> _qStartCursor,
-                  ("offset" .=) <$> _qOffSet, ("kind" .=) <$> _qKind,
-                  ("distinctOn" .=) <$> _qDistinctOn,
-                  ("endCursor" .=) <$> _qEndCursor,
-                  ("limit" .=) <$> _qLimit,
-                  ("projection" .=) <$> _qProjection,
-                  ("filter" .=) <$> _qFilter,
-                  ("order" .=) <$> _qOrder])
-
--- | 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. The order of this array may not be preserved if it
--- contains a mix of indexed and unindexed values.
-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 result of fetching an entity from Datastore.
---
--- /See:/ 'entityResult' smart constructor.
-data EntityResult = EntityResult'
-    { _erCursor  :: !(Maybe Bytes)
-    , _erVersion :: !(Maybe (Textual Int64))
-    , _erEntity  :: !(Maybe Entity)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'EntityResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'erCursor'
---
--- * 'erVersion'
---
--- * 'erEntity'
-entityResult
-    :: EntityResult
-entityResult =
-    EntityResult'
-    { _erCursor = Nothing
-    , _erVersion = Nothing
-    , _erEntity = Nothing
-    }
-
--- | A cursor that points to the position after the result entity. Set only
--- when the \`EntityResult\` is part of a \`QueryResultBatch\` message.
-erCursor :: Lens' EntityResult (Maybe ByteString)
-erCursor
-  = lens _erCursor (\ s a -> s{_erCursor = a}) .
-      mapping _Bytes
-
--- | The version of the entity, a strictly positive number that monotonically
--- increases with changes to the entity. This field is set for \`FULL\`
--- entity results. For missing entities in \`LookupResponse\`, this is the
--- version of the snapshot that was used to look up the entity, and it is
--- always set except for eventually consistent reads.
-erVersion :: Lens' EntityResult (Maybe Int64)
-erVersion
-  = lens _erVersion (\ s a -> s{_erVersion = a}) .
-      mapping _Coerce
-
--- | The resulting entity.
-erEntity :: Lens' EntityResult (Maybe Entity)
-erEntity = lens _erEntity (\ s a -> s{_erEntity = a})
-
-instance FromJSON EntityResult where
-        parseJSON
-          = withObject "EntityResult"
-              (\ o ->
-                 EntityResult' <$>
-                   (o .:? "cursor") <*> (o .:? "version") <*>
-                     (o .:? "entity"))
-
-instance ToJSON EntityResult where
-        toJSON EntityResult'{..}
-          = object
-              (catMaybes
-                 [("cursor" .=) <$> _erCursor,
-                  ("version" .=) <$> _erVersion,
-                  ("entity" .=) <$> _erEntity])
-
--- | The response for Datastore.Commit.
---
--- /See:/ 'commitResponse' smart constructor.
-data CommitResponse = CommitResponse'
-    { _crIndexUpdates    :: !(Maybe (Textual Int32))
-    , _crMutationResults :: !(Maybe [MutationResult])
-    } 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:
---
--- * 'crIndexUpdates'
---
--- * 'crMutationResults'
-commitResponse
-    :: CommitResponse
-commitResponse =
-    CommitResponse'
-    { _crIndexUpdates = Nothing
-    , _crMutationResults = Nothing
-    }
-
--- | The number of index entries updated during the commit, or zero if none
--- were updated.
-crIndexUpdates :: Lens' CommitResponse (Maybe Int32)
-crIndexUpdates
-  = lens _crIndexUpdates
-      (\ s a -> s{_crIndexUpdates = a})
-      . mapping _Coerce
-
--- | The result of performing the mutations. The i-th mutation result
--- corresponds to the i-th mutation in the request.
-crMutationResults :: Lens' CommitResponse [MutationResult]
-crMutationResults
-  = lens _crMutationResults
-      (\ s a -> s{_crMutationResults = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON CommitResponse where
-        parseJSON
-          = withObject "CommitResponse"
-              (\ o ->
-                 CommitResponse' <$>
-                   (o .:? "indexUpdates") <*>
-                     (o .:? "mutationResults" .!= mempty))
-
-instance ToJSON CommitResponse where
-        toJSON CommitResponse'{..}
-          = object
-              (catMaybes
-                 [("indexUpdates" .=) <$> _crIndexUpdates,
-                  ("mutationResults" .=) <$> _crMutationResults])
-
--- | A representation of a kind.
---
--- /See:/ 'kindExpression' smart constructor.
-newtype KindExpression = KindExpression'
-    { _keName :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'KindExpression' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'keName'
-kindExpression
-    :: KindExpression
-kindExpression =
-    KindExpression'
-    { _keName = Nothing
-    }
-
--- | The name of the kind.
-keName :: Lens' KindExpression (Maybe Text)
-keName = lens _keName (\ s a -> s{_keName = a})
-
-instance FromJSON KindExpression where
-        parseJSON
-          = withObject "KindExpression"
-              (\ o -> KindExpression' <$> (o .:? "name"))
-
-instance ToJSON KindExpression where
-        toJSON KindExpression'{..}
-          = object (catMaybes [("name" .=) <$> _keName])
-
--- | The options shared by read requests.
---
--- /See:/ 'readOptions' smart constructor.
-data ReadOptions = ReadOptions'
-    { _roReadConsistency :: !(Maybe ReadOptionsReadConsistency)
-    , _roTransaction     :: !(Maybe Bytes)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReadOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'roReadConsistency'
---
--- * 'roTransaction'
-readOptions
-    :: ReadOptions
-readOptions =
-    ReadOptions'
-    { _roReadConsistency = Nothing
-    , _roTransaction = Nothing
-    }
-
--- | The non-transactional read consistency to use. Cannot be set to
--- \`STRONG\` for global queries.
-roReadConsistency :: Lens' ReadOptions (Maybe ReadOptionsReadConsistency)
-roReadConsistency
-  = lens _roReadConsistency
-      (\ s a -> s{_roReadConsistency = a})
-
--- | The identifier of the transaction in which to read. A transaction
--- identifier is returned by a call to Datastore.BeginTransaction.
-roTransaction :: Lens' ReadOptions (Maybe ByteString)
-roTransaction
-  = lens _roTransaction
-      (\ s a -> s{_roTransaction = a})
-      . mapping _Bytes
-
-instance FromJSON ReadOptions where
-        parseJSON
-          = withObject "ReadOptions"
-              (\ o ->
-                 ReadOptions' <$>
-                   (o .:? "readConsistency") <*> (o .:? "transaction"))
-
-instance ToJSON ReadOptions where
-        toJSON ReadOptions'{..}
-          = object
-              (catMaybes
-                 [("readConsistency" .=) <$> _roReadConsistency,
-                  ("transaction" .=) <$> _roTransaction])
-
--- | The response for Datastore.Rollback. (an empty message).
---
--- /See:/ 'rollbackResponse' smart constructor.
-data RollbackResponse =
-    RollbackResponse'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RollbackResponse' with the minimum fields required to make a request.
---
-rollbackResponse
-    :: RollbackResponse
-rollbackResponse = RollbackResponse'
-
-instance FromJSON RollbackResponse where
-        parseJSON
-          = withObject "RollbackResponse"
-              (\ o -> pure RollbackResponse')
-
-instance ToJSON RollbackResponse where
-        toJSON = const emptyObject
-
--- | A representation of a property in a projection.
---
--- /See:/ 'projection' smart constructor.
-newtype Projection = Projection'
-    { _pProperty :: Maybe PropertyReference
-    } 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:
---
--- * 'pProperty'
-projection
-    :: Projection
-projection =
-    Projection'
-    { _pProperty = Nothing
-    }
-
--- | The property to project.
-pProperty :: Lens' Projection (Maybe PropertyReference)
-pProperty
-  = lens _pProperty (\ s a -> s{_pProperty = a})
-
-instance FromJSON Projection where
-        parseJSON
-          = withObject "Projection"
-              (\ o -> Projection' <$> (o .:? "property"))
-
-instance ToJSON Projection where
-        toJSON Projection'{..}
-          = object (catMaybes [("property" .=) <$> _pProperty])
-
--- | A holder for any type of filter.
---
--- /See:/ 'filter'' smart constructor.
-data Filter = Filter'
-    { _fCompositeFilter :: !(Maybe CompositeFilter)
-    , _fPropertyFilter  :: !(Maybe PropertyFilter)
-    } 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'
---
--- * 'fPropertyFilter'
-filter'
-    :: Filter
-filter' =
-    Filter'
-    { _fCompositeFilter = Nothing
-    , _fPropertyFilter = Nothing
-    }
-
--- | A composite filter.
-fCompositeFilter :: Lens' Filter (Maybe CompositeFilter)
-fCompositeFilter
-  = lens _fCompositeFilter
-      (\ s a -> s{_fCompositeFilter = a})
-
--- | A filter on a property.
-fPropertyFilter :: Lens' Filter (Maybe PropertyFilter)
-fPropertyFilter
-  = lens _fPropertyFilter
-      (\ s a -> s{_fPropertyFilter = a})
-
-instance FromJSON Filter where
-        parseJSON
-          = withObject "Filter"
-              (\ o ->
-                 Filter' <$>
-                   (o .:? "compositeFilter") <*>
-                     (o .:? "propertyFilter"))
-
-instance ToJSON Filter where
-        toJSON Filter'{..}
-          = object
-              (catMaybes
-                 [("compositeFilter" .=) <$> _fCompositeFilter,
-                  ("propertyFilter" .=) <$> _fPropertyFilter])
-
--- | The request for Datastore.Commit.
---
--- /See:/ 'commitRequest' smart constructor.
-data CommitRequest = CommitRequest'
-    { _crMutations   :: !(Maybe [Mutation])
-    , _crMode        :: !(Maybe CommitRequestMode)
-    , _crTransaction :: !(Maybe Bytes)
-    } 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:
---
--- * 'crMutations'
---
--- * 'crMode'
---
--- * 'crTransaction'
-commitRequest
-    :: CommitRequest
-commitRequest =
-    CommitRequest'
-    { _crMutations = Nothing
-    , _crMode = Nothing
-    , _crTransaction = Nothing
-    }
-
--- | The mutations to perform. When mode is \`TRANSACTIONAL\`, mutations
--- affecting a single entity are applied in order. The following sequences
--- of mutations affecting a single entity are not permitted in a single
--- \`Commit\` request: - \`insert\` followed by \`insert\` - \`update\`
--- followed by \`insert\` - \`upsert\` followed by \`insert\` - \`delete\`
--- followed by \`update\` When mode is \`NON_TRANSACTIONAL\`, no two
--- mutations may affect a single entity.
-crMutations :: Lens' CommitRequest [Mutation]
-crMutations
-  = lens _crMutations (\ s a -> s{_crMutations = a}) .
-      _Default
-      . _Coerce
-
--- | The type of commit to perform. Defaults to \`TRANSACTIONAL\`.
-crMode :: Lens' CommitRequest (Maybe CommitRequestMode)
-crMode = lens _crMode (\ s a -> s{_crMode = a})
-
--- | The identifier of the transaction associated with the commit. A
--- transaction identifier is returned by a call to
--- Datastore.BeginTransaction.
-crTransaction :: Lens' CommitRequest (Maybe ByteString)
-crTransaction
-  = lens _crTransaction
-      (\ s a -> s{_crTransaction = a})
-      . mapping _Bytes
-
-instance FromJSON CommitRequest where
-        parseJSON
-          = withObject "CommitRequest"
-              (\ o ->
-                 CommitRequest' <$>
-                   (o .:? "mutations" .!= mempty) <*> (o .:? "mode") <*>
-                     (o .:? "transaction"))
-
-instance ToJSON CommitRequest where
-        toJSON CommitRequest'{..}
-          = object
-              (catMaybes
-                 [("mutations" .=) <$> _crMutations,
-                  ("mode" .=) <$> _crMode,
-                  ("transaction" .=) <$> _crTransaction])
-
--- | A (kind, ID\/name) pair used to construct a key path. If either name or
--- ID is set, the element is complete. If neither is set, the element is
--- incomplete.
---
--- /See:/ 'pathElement' smart constructor.
-data PathElement = PathElement'
-    { _peKind :: !(Maybe Text)
-    , _peName :: !(Maybe Text)
-    , _peId   :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PathElement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'peKind'
---
--- * 'peName'
---
--- * 'peId'
-pathElement
-    :: PathElement
-pathElement =
-    PathElement'
-    { _peKind = Nothing
-    , _peName = Nothing
-    , _peId = Nothing
-    }
-
--- | The kind of the entity. A kind matching regex \`__.*__\` is
--- reserved\/read-only. A kind must not contain more than 1500 bytes when
--- UTF-8 encoded. Cannot be \`\"\"\`.
-peKind :: Lens' PathElement (Maybe Text)
-peKind = lens _peKind (\ s a -> s{_peKind = a})
-
--- | The name of the entity. A name matching regex \`__.*__\` is
--- reserved\/read-only. A name must not be more than 1500 bytes when UTF-8
--- encoded. Cannot be \`\"\"\`.
-peName :: Lens' PathElement (Maybe Text)
-peName = lens _peName (\ s a -> s{_peName = a})
-
--- | The auto-allocated ID of the entity. Never equal to zero. Values less
--- than zero are discouraged and may not be supported in the future.
-peId :: Lens' PathElement (Maybe Int64)
-peId
-  = lens _peId (\ s a -> s{_peId = a}) .
-      mapping _Coerce
-
-instance FromJSON PathElement where
-        parseJSON
-          = withObject "PathElement"
-              (\ o ->
-                 PathElement' <$>
-                   (o .:? "kind") <*> (o .:? "name") <*> (o .:? "id"))
-
-instance ToJSON PathElement where
-        toJSON PathElement'{..}
-          = object
-              (catMaybes
-                 [("kind" .=) <$> _peKind, ("name" .=) <$> _peName,
-                  ("id" .=) <$> _peId])
-
--- | A Datastore data object. An entity is limited to 1 megabyte when stored.
--- That _roughly_ corresponds to a limit of 1 megabyte for the serialized
--- form of this message.
---
--- /See:/ 'entity' smart constructor.
-data Entity = Entity'
-    { _eKey        :: !(Maybe Key)
-    , _eProperties :: !(Maybe EntityProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Entity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'eKey'
---
--- * 'eProperties'
-entity
-    :: Entity
-entity =
-    Entity'
-    { _eKey = Nothing
-    , _eProperties = Nothing
-    }
-
--- | The entity\'s key. An entity must have a key, unless otherwise
--- documented (for example, an entity in \`Value.entity_value\` may have no
--- key). An entity\'s kind is its key path\'s last element\'s kind, or null
--- if it has no key.
-eKey :: Lens' Entity (Maybe Key)
-eKey = lens _eKey (\ s a -> s{_eKey = a})
-
--- | The entity\'s properties. The map\'s keys are property names. A property
--- name matching regex \`__.*__\` is reserved. A reserved property name is
--- forbidden in certain documented contexts. The name must not contain more
--- than 500 characters. The name cannot be \`\"\"\`.
-eProperties :: Lens' Entity (Maybe EntityProperties)
-eProperties
-  = lens _eProperties (\ s a -> s{_eProperties = a})
-
-instance FromJSON Entity where
-        parseJSON
-          = withObject "Entity"
-              (\ o ->
-                 Entity' <$> (o .:? "key") <*> (o .:? "properties"))
-
-instance ToJSON Entity where
-        toJSON Entity'{..}
-          = object
-              (catMaybes
-                 [("key" .=) <$> _eKey,
-                  ("properties" .=) <$> _eProperties])
-
--- | The response for Datastore.Lookup.
---
--- /See:/ 'lookupResponse' smart constructor.
-data LookupResponse = LookupResponse'
-    { _lrDeferred :: !(Maybe [Key])
-    , _lrFound    :: !(Maybe [EntityResult])
-    , _lrMissing  :: !(Maybe [EntityResult])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LookupResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrDeferred'
---
--- * 'lrFound'
---
--- * 'lrMissing'
-lookupResponse
-    :: LookupResponse
-lookupResponse =
-    LookupResponse'
-    { _lrDeferred = Nothing
-    , _lrFound = Nothing
-    , _lrMissing = Nothing
-    }
-
--- | A list of keys that were not looked up due to resource constraints. The
--- order of results in this field is undefined and has no relation to the
--- order of the keys in the input.
-lrDeferred :: Lens' LookupResponse [Key]
-lrDeferred
-  = lens _lrDeferred (\ s a -> s{_lrDeferred = a}) .
-      _Default
-      . _Coerce
-
--- | Entities found as \`ResultType.FULL\` entities. The order of results in
--- this field is undefined and has no relation to the order of the keys in
--- the input.
-lrFound :: Lens' LookupResponse [EntityResult]
-lrFound
-  = lens _lrFound (\ s a -> s{_lrFound = a}) . _Default
-      . _Coerce
-
--- | Entities not found as \`ResultType.KEY_ONLY\` entities. The order of
--- results in this field is undefined and has no relation to the order of
--- the keys in the input.
-lrMissing :: Lens' LookupResponse [EntityResult]
-lrMissing
-  = lens _lrMissing (\ s a -> s{_lrMissing = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON LookupResponse where
-        parseJSON
-          = withObject "LookupResponse"
-              (\ o ->
-                 LookupResponse' <$>
-                   (o .:? "deferred" .!= mempty) <*>
-                     (o .:? "found" .!= mempty)
-                     <*> (o .:? "missing" .!= mempty))
-
-instance ToJSON LookupResponse where
-        toJSON LookupResponse'{..}
-          = object
-              (catMaybes
-                 [("deferred" .=) <$> _lrDeferred,
-                  ("found" .=) <$> _lrFound,
-                  ("missing" .=) <$> _lrMissing])
-
--- | The desired order for a specific property.
---
--- /See:/ 'propertyOrder' smart constructor.
-data PropertyOrder = PropertyOrder'
-    { _poProperty  :: !(Maybe PropertyReference)
-    , _poDirection :: !(Maybe PropertyOrderDirection)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertyOrder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'poProperty'
---
--- * 'poDirection'
-propertyOrder
-    :: PropertyOrder
-propertyOrder =
-    PropertyOrder'
-    { _poProperty = Nothing
-    , _poDirection = Nothing
-    }
-
--- | The property to order by.
-poProperty :: Lens' PropertyOrder (Maybe PropertyReference)
-poProperty
-  = lens _poProperty (\ s a -> s{_poProperty = a})
-
--- | The direction to order by. Defaults to \`ASCENDING\`.
-poDirection :: Lens' PropertyOrder (Maybe PropertyOrderDirection)
-poDirection
-  = lens _poDirection (\ s a -> s{_poDirection = a})
-
-instance FromJSON PropertyOrder where
-        parseJSON
-          = withObject "PropertyOrder"
-              (\ o ->
-                 PropertyOrder' <$>
-                   (o .:? "property") <*> (o .:? "direction"))
-
-instance ToJSON PropertyOrder where
-        toJSON PropertyOrder'{..}
-          = object
-              (catMaybes
-                 [("property" .=) <$> _poProperty,
-                  ("direction" .=) <$> _poDirection])
+-- 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])
+
+-- | Options for beginning a new transaction. Transactions can be created
+-- explicitly with calls to Datastore.BeginTransaction or implicitly by
+-- setting ReadOptions.new_transaction in read requests.
+--
+-- /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 should allow both reads and writes.
+toReadWrite :: Lens' TransactionOptions (Maybe ReadWrite)
+toReadWrite
+  = lens _toReadWrite (\ s a -> s{_toReadWrite = a})
+
+-- | The transaction should only allow reads.
+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
+
+-- | Options specific to read \/ write transactions.
+--
+-- /See:/ 'readWrite' smart constructor.
+newtype ReadWrite = ReadWrite'
+    { _rwPreviousTransaction :: 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:
+--
+-- * 'rwPreviousTransaction'
+readWrite
+    :: ReadWrite
+readWrite =
+    ReadWrite'
+    { _rwPreviousTransaction = Nothing
+    }
+
+-- | The transaction identifier of the transaction being retried.
+rwPreviousTransaction :: Lens' ReadWrite (Maybe ByteString)
+rwPreviousTransaction
+  = lens _rwPreviousTransaction
+      (\ s a -> s{_rwPreviousTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON ReadWrite where
+        parseJSON
+          = withObject "ReadWrite"
+              (\ o -> ReadWrite' <$> (o .:? "previousTransaction"))
+
+instance ToJSON ReadWrite where
+        toJSON ReadWrite'{..}
+          = object
+              (catMaybes
+                 [("previousTransaction" .=) <$>
+                    _rwPreviousTransaction])
+
+-- | The response for
+-- google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.
+--
+-- /See:/ 'googleDatastoreAdminV1beta1ExportEntitiesResponse' smart constructor.
+newtype GoogleDatastoreAdminV1beta1ExportEntitiesResponse = GoogleDatastoreAdminV1beta1ExportEntitiesResponse'
+    { _gdaveerOutputURL :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1ExportEntitiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaveerOutputURL'
+googleDatastoreAdminV1beta1ExportEntitiesResponse
+    :: GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+googleDatastoreAdminV1beta1ExportEntitiesResponse =
+    GoogleDatastoreAdminV1beta1ExportEntitiesResponse'
+    { _gdaveerOutputURL = Nothing
+    }
+
+-- | Location of the output metadata file. This can be used to begin an
+-- import into Cloud Datastore (this project or another project). See
+-- google.datastore.admin.v1beta1.ImportEntitiesRequest.input_url. Only
+-- present if the operation completed successfully.
+gdaveerOutputURL :: Lens' GoogleDatastoreAdminV1beta1ExportEntitiesResponse (Maybe Text)
+gdaveerOutputURL
+  = lens _gdaveerOutputURL
+      (\ s a -> s{_gdaveerOutputURL = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+         where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1beta1ExportEntitiesResponse"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1ExportEntitiesResponse'
+                   <$> (o .:? "outputUrl"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1beta1ExportEntitiesResponse
+         where
+        toJSON
+          GoogleDatastoreAdminV1beta1ExportEntitiesResponse'{..}
+          = object
+              (catMaybes [("outputUrl" .=) <$> _gdaveerOutputURL])
+
+-- | The request for Datastore.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 identifier, returned by a call to
+-- Datastore.BeginTransaction.
+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 Datastore.ReserveIds.
+--
+-- /See:/ 'reserveIdsRequest' smart constructor.
+data ReserveIdsRequest = ReserveIdsRequest'
+    { _rirKeys       :: !(Maybe [Key])
+    , _rirDatabaseId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReserveIdsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rirKeys'
+--
+-- * 'rirDatabaseId'
+reserveIdsRequest
+    :: ReserveIdsRequest
+reserveIdsRequest =
+    ReserveIdsRequest'
+    { _rirKeys = Nothing
+    , _rirDatabaseId = Nothing
+    }
+
+-- | A list of keys with complete key paths whose numeric IDs should not be
+-- auto-allocated.
+rirKeys :: Lens' ReserveIdsRequest [Key]
+rirKeys
+  = lens _rirKeys (\ s a -> s{_rirKeys = a}) . _Default
+      . _Coerce
+
+-- | If not empty, the ID of the database against which to make the request.
+rirDatabaseId :: Lens' ReserveIdsRequest (Maybe Text)
+rirDatabaseId
+  = lens _rirDatabaseId
+      (\ s a -> s{_rirDatabaseId = a})
+
+instance FromJSON ReserveIdsRequest where
+        parseJSON
+          = withObject "ReserveIdsRequest"
+              (\ o ->
+                 ReserveIdsRequest' <$>
+                   (o .:? "keys" .!= mempty) <*> (o .:? "databaseId"))
+
+instance ToJSON ReserveIdsRequest where
+        toJSON ReserveIdsRequest'{..}
+          = object
+              (catMaybes
+                 [("keys" .=) <$> _rirKeys,
+                  ("databaseId" .=) <$> _rirDatabaseId])
+
+-- | A partition ID identifies a grouping of entities. The grouping is always
+-- by project and namespace, however the namespace ID may be empty. A
+-- partition ID contains several dimensions: project ID and namespace ID.
+-- Partition dimensions: - May be \`\"\"\`. - Must be valid UTF-8 bytes. -
+-- Must have values that match regex \`[A-Za-z\\d\\.\\-_]{1,100}\` If the
+-- value of any dimension matches regex \`__.*__\`, the partition is
+-- reserved\/read-only. A reserved\/read-only partition ID is forbidden in
+-- certain documented contexts. Foreign partition IDs (in which the project
+-- ID does not match the context project ID ) are discouraged. Reads and
+-- writes of foreign partition IDs may fail if the project is not in an
+-- active state.
+--
+-- /See:/ 'partitionId' smart constructor.
+data PartitionId = PartitionId'
+    { _piNamespaceId :: !(Maybe Text)
+    , _piProjectId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PartitionId' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piNamespaceId'
+--
+-- * 'piProjectId'
+partitionId
+    :: PartitionId
+partitionId =
+    PartitionId'
+    { _piNamespaceId = Nothing
+    , _piProjectId = Nothing
+    }
+
+-- | If not empty, the ID of the namespace to which the entities belong.
+piNamespaceId :: Lens' PartitionId (Maybe Text)
+piNamespaceId
+  = lens _piNamespaceId
+      (\ s a -> s{_piNamespaceId = a})
+
+-- | The ID of the project to which the entities belong.
+piProjectId :: Lens' PartitionId (Maybe Text)
+piProjectId
+  = lens _piProjectId (\ s a -> s{_piProjectId = a})
+
+instance FromJSON PartitionId where
+        parseJSON
+          = withObject "PartitionId"
+              (\ o ->
+                 PartitionId' <$>
+                   (o .:? "namespaceId") <*> (o .:? "projectId"))
+
+instance ToJSON PartitionId where
+        toJSON PartitionId'{..}
+          = object
+              (catMaybes
+                 [("namespaceId" .=) <$> _piNamespaceId,
+                  ("projectId" .=) <$> _piProjectId])
+
+-- | The response for google.datastore.admin.v1.DatastoreAdmin.ListIndexes.
+--
+-- /See:/ 'googleDatastoreAdminV1ListIndexesResponse' smart constructor.
+data GoogleDatastoreAdminV1ListIndexesResponse = GoogleDatastoreAdminV1ListIndexesResponse'
+    { _gdavlirNextPageToken :: !(Maybe Text)
+    , _gdavlirIndexes       :: !(Maybe [GoogleDatastoreAdminV1Index])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ListIndexesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavlirNextPageToken'
+--
+-- * 'gdavlirIndexes'
+googleDatastoreAdminV1ListIndexesResponse
+    :: GoogleDatastoreAdminV1ListIndexesResponse
+googleDatastoreAdminV1ListIndexesResponse =
+    GoogleDatastoreAdminV1ListIndexesResponse'
+    { _gdavlirNextPageToken = Nothing
+    , _gdavlirIndexes = Nothing
+    }
+
+-- | The standard List next-page token.
+gdavlirNextPageToken :: Lens' GoogleDatastoreAdminV1ListIndexesResponse (Maybe Text)
+gdavlirNextPageToken
+  = lens _gdavlirNextPageToken
+      (\ s a -> s{_gdavlirNextPageToken = a})
+
+-- | The indexes.
+gdavlirIndexes :: Lens' GoogleDatastoreAdminV1ListIndexesResponse [GoogleDatastoreAdminV1Index]
+gdavlirIndexes
+  = lens _gdavlirIndexes
+      (\ s a -> s{_gdavlirIndexes = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         GoogleDatastoreAdminV1ListIndexesResponse where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ListIndexesResponse"
+              (\ o ->
+                 GoogleDatastoreAdminV1ListIndexesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "indexes" .!= mempty))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ListIndexesResponse where
+        toJSON GoogleDatastoreAdminV1ListIndexesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _gdavlirNextPageToken,
+                  ("indexes" .=) <$> _gdavlirIndexes])
+
+-- | A batch of results produced by a query.
+--
+-- /See:/ 'queryResultBatch' smart constructor.
+data QueryResultBatch = QueryResultBatch'
+    { _qrbSkippedResults   :: !(Maybe (Textual Int32))
+    , _qrbSkippedCursor    :: !(Maybe Bytes)
+    , _qrbEntityResultType :: !(Maybe QueryResultBatchEntityResultType)
+    , _qrbSnapshotVersion  :: !(Maybe (Textual Int64))
+    , _qrbEntityResults    :: !(Maybe [EntityResult])
+    , _qrbMoreResults      :: !(Maybe QueryResultBatchMoreResults)
+    , _qrbEndCursor        :: !(Maybe Bytes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'QueryResultBatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qrbSkippedResults'
+--
+-- * 'qrbSkippedCursor'
+--
+-- * 'qrbEntityResultType'
+--
+-- * 'qrbSnapshotVersion'
+--
+-- * 'qrbEntityResults'
+--
+-- * 'qrbMoreResults'
+--
+-- * 'qrbEndCursor'
+queryResultBatch
+    :: QueryResultBatch
+queryResultBatch =
+    QueryResultBatch'
+    { _qrbSkippedResults = Nothing
+    , _qrbSkippedCursor = Nothing
+    , _qrbEntityResultType = Nothing
+    , _qrbSnapshotVersion = Nothing
+    , _qrbEntityResults = Nothing
+    , _qrbMoreResults = Nothing
+    , _qrbEndCursor = Nothing
+    }
+
+-- | The number of results skipped, typically because of an offset.
+qrbSkippedResults :: Lens' QueryResultBatch (Maybe Int32)
+qrbSkippedResults
+  = lens _qrbSkippedResults
+      (\ s a -> s{_qrbSkippedResults = a})
+      . mapping _Coerce
+
+-- | A cursor that points to the position after the last skipped result. Will
+-- be set when \`skipped_results\` != 0.
+qrbSkippedCursor :: Lens' QueryResultBatch (Maybe ByteString)
+qrbSkippedCursor
+  = lens _qrbSkippedCursor
+      (\ s a -> s{_qrbSkippedCursor = a})
+      . mapping _Bytes
+
+-- | The result type for every entity in \`entity_results\`.
+qrbEntityResultType :: Lens' QueryResultBatch (Maybe QueryResultBatchEntityResultType)
+qrbEntityResultType
+  = lens _qrbEntityResultType
+      (\ s a -> s{_qrbEntityResultType = a})
+
+-- | The version number of the snapshot this batch was returned from. This
+-- applies to the range of results from the query\'s \`start_cursor\` (or
+-- the beginning of the query if no cursor was given) to this batch\'s
+-- \`end_cursor\` (not the query\'s \`end_cursor\`). In a single
+-- transaction, subsequent query result batches for the same query can have
+-- a greater snapshot version number. Each batch\'s snapshot version is
+-- valid for all preceding batches. The value will be zero for eventually
+-- consistent queries.
+qrbSnapshotVersion :: Lens' QueryResultBatch (Maybe Int64)
+qrbSnapshotVersion
+  = lens _qrbSnapshotVersion
+      (\ s a -> s{_qrbSnapshotVersion = a})
+      . mapping _Coerce
+
+-- | The results for this batch.
+qrbEntityResults :: Lens' QueryResultBatch [EntityResult]
+qrbEntityResults
+  = lens _qrbEntityResults
+      (\ s a -> s{_qrbEntityResults = a})
+      . _Default
+      . _Coerce
+
+-- | The state of the query after the current batch.
+qrbMoreResults :: Lens' QueryResultBatch (Maybe QueryResultBatchMoreResults)
+qrbMoreResults
+  = lens _qrbMoreResults
+      (\ s a -> s{_qrbMoreResults = a})
+
+-- | A cursor that points to the position after the last result in the batch.
+qrbEndCursor :: Lens' QueryResultBatch (Maybe ByteString)
+qrbEndCursor
+  = lens _qrbEndCursor (\ s a -> s{_qrbEndCursor = a})
+      . mapping _Bytes
+
+instance FromJSON QueryResultBatch where
+        parseJSON
+          = withObject "QueryResultBatch"
+              (\ o ->
+                 QueryResultBatch' <$>
+                   (o .:? "skippedResults") <*> (o .:? "skippedCursor")
+                     <*> (o .:? "entityResultType")
+                     <*> (o .:? "snapshotVersion")
+                     <*> (o .:? "entityResults" .!= mempty)
+                     <*> (o .:? "moreResults")
+                     <*> (o .:? "endCursor"))
+
+instance ToJSON QueryResultBatch where
+        toJSON QueryResultBatch'{..}
+          = object
+              (catMaybes
+                 [("skippedResults" .=) <$> _qrbSkippedResults,
+                  ("skippedCursor" .=) <$> _qrbSkippedCursor,
+                  ("entityResultType" .=) <$> _qrbEntityResultType,
+                  ("snapshotVersion" .=) <$> _qrbSnapshotVersion,
+                  ("entityResults" .=) <$> _qrbEntityResults,
+                  ("moreResults" .=) <$> _qrbMoreResults,
+                  ("endCursor" .=) <$> _qrbEndCursor])
+
+-- | The entity\'s properties. The map\'s keys are property names. A property
+-- name matching regex \`__.*__\` is reserved. A reserved property name is
+-- forbidden in certain documented contexts. The name must not contain more
+-- than 500 characters. The name cannot be \`\"\"\`.
+--
+-- /See:/ 'entityProperties' smart constructor.
+newtype EntityProperties = EntityProperties'
+    { _epAddtional :: HashMap Text Value
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'epAddtional'
+entityProperties
+    :: HashMap Text Value -- ^ 'epAddtional'
+    -> EntityProperties
+entityProperties pEpAddtional_ =
+    EntityProperties'
+    { _epAddtional = _Coerce # pEpAddtional_
+    }
+
+epAddtional :: Lens' EntityProperties (HashMap Text Value)
+epAddtional
+  = lens _epAddtional (\ s a -> s{_epAddtional = a}) .
+      _Coerce
+
+instance FromJSON EntityProperties where
+        parseJSON
+          = withObject "EntityProperties"
+              (\ o -> EntityProperties' <$> (parseJSONObject o))
+
+instance ToJSON EntityProperties where
+        toJSON = toJSON . _epAddtional
+
+-- | Client-assigned labels.
+--
+-- /See:/ 'googleDatastoreAdminV1ImportEntitiesRequestLabels' smart constructor.
+newtype GoogleDatastoreAdminV1ImportEntitiesRequestLabels = GoogleDatastoreAdminV1ImportEntitiesRequestLabels'
+    { _gdavierlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ImportEntitiesRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavierlAddtional'
+googleDatastoreAdminV1ImportEntitiesRequestLabels
+    :: HashMap Text Text -- ^ 'gdavierlAddtional'
+    -> GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+googleDatastoreAdminV1ImportEntitiesRequestLabels pGdavierlAddtional_ =
+    GoogleDatastoreAdminV1ImportEntitiesRequestLabels'
+    { _gdavierlAddtional = _Coerce # pGdavierlAddtional_
+    }
+
+gdavierlAddtional :: Lens' GoogleDatastoreAdminV1ImportEntitiesRequestLabels (HashMap Text Text)
+gdavierlAddtional
+  = lens _gdavierlAddtional
+      (\ s a -> s{_gdavierlAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+         where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ImportEntitiesRequestLabels"
+              (\ o ->
+                 GoogleDatastoreAdminV1ImportEntitiesRequestLabels'
+                   <$> (parseJSONObject o))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ImportEntitiesRequestLabels
+         where
+        toJSON = toJSON . _gdavierlAddtional
+
+-- | The request for Datastore.BeginTransaction.
+--
+-- /See:/ 'beginTransactionRequest' smart constructor.
+newtype BeginTransactionRequest = BeginTransactionRequest'
+    { _btrTransactionOptions :: 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:
+--
+-- * 'btrTransactionOptions'
+beginTransactionRequest
+    :: BeginTransactionRequest
+beginTransactionRequest =
+    BeginTransactionRequest'
+    { _btrTransactionOptions = Nothing
+    }
+
+-- | Options for a new transaction.
+btrTransactionOptions :: Lens' BeginTransactionRequest (Maybe TransactionOptions)
+btrTransactionOptions
+  = lens _btrTransactionOptions
+      (\ s a -> s{_btrTransactionOptions = a})
+
+instance FromJSON BeginTransactionRequest where
+        parseJSON
+          = withObject "BeginTransactionRequest"
+              (\ o ->
+                 BeginTransactionRequest' <$>
+                   (o .:? "transactionOptions"))
+
+instance ToJSON BeginTransactionRequest where
+        toJSON BeginTransactionRequest'{..}
+          = object
+              (catMaybes
+                 [("transactionOptions" .=) <$>
+                    _btrTransactionOptions])
+
+-- | The request for Datastore.RunQuery.
+--
+-- /See:/ 'runQueryRequest' smart constructor.
+data RunQueryRequest = RunQueryRequest'
+    { _rqrPartitionId :: !(Maybe PartitionId)
+    , _rqrGqlQuery    :: !(Maybe GqlQuery)
+    , _rqrQuery       :: !(Maybe Query)
+    , _rqrReadOptions :: !(Maybe ReadOptions)
+    } 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:
+--
+-- * 'rqrPartitionId'
+--
+-- * 'rqrGqlQuery'
+--
+-- * 'rqrQuery'
+--
+-- * 'rqrReadOptions'
+runQueryRequest
+    :: RunQueryRequest
+runQueryRequest =
+    RunQueryRequest'
+    { _rqrPartitionId = Nothing
+    , _rqrGqlQuery = Nothing
+    , _rqrQuery = Nothing
+    , _rqrReadOptions = Nothing
+    }
+
+-- | Entities are partitioned into subsets, identified by a partition ID.
+-- Queries are scoped to a single partition. This partition ID is
+-- normalized with the standard default context partition ID.
+rqrPartitionId :: Lens' RunQueryRequest (Maybe PartitionId)
+rqrPartitionId
+  = lens _rqrPartitionId
+      (\ s a -> s{_rqrPartitionId = a})
+
+-- | The GQL query to run.
+rqrGqlQuery :: Lens' RunQueryRequest (Maybe GqlQuery)
+rqrGqlQuery
+  = lens _rqrGqlQuery (\ s a -> s{_rqrGqlQuery = a})
+
+-- | The query to run.
+rqrQuery :: Lens' RunQueryRequest (Maybe Query)
+rqrQuery = lens _rqrQuery (\ s a -> s{_rqrQuery = a})
+
+-- | The options for this query.
+rqrReadOptions :: Lens' RunQueryRequest (Maybe ReadOptions)
+rqrReadOptions
+  = lens _rqrReadOptions
+      (\ s a -> s{_rqrReadOptions = a})
+
+instance FromJSON RunQueryRequest where
+        parseJSON
+          = withObject "RunQueryRequest"
+              (\ o ->
+                 RunQueryRequest' <$>
+                   (o .:? "partitionId") <*> (o .:? "gqlQuery") <*>
+                     (o .:? "query")
+                     <*> (o .:? "readOptions"))
+
+instance ToJSON RunQueryRequest where
+        toJSON RunQueryRequest'{..}
+          = object
+              (catMaybes
+                 [("partitionId" .=) <$> _rqrPartitionId,
+                  ("gqlQuery" .=) <$> _rqrGqlQuery,
+                  ("query" .=) <$> _rqrQuery,
+                  ("readOptions" .=) <$> _rqrReadOptions])
+
+-- | The request for Datastore.AllocateIds.
+--
+-- /See:/ 'allocateIdsRequest' smart constructor.
+newtype AllocateIdsRequest = AllocateIdsRequest'
+    { _airKeys :: Maybe [Key]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocateIdsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'airKeys'
+allocateIdsRequest
+    :: AllocateIdsRequest
+allocateIdsRequest =
+    AllocateIdsRequest'
+    { _airKeys = Nothing
+    }
+
+-- | A list of keys with incomplete key paths for which to allocate IDs. No
+-- key may be reserved\/read-only.
+airKeys :: Lens' AllocateIdsRequest [Key]
+airKeys
+  = lens _airKeys (\ s a -> s{_airKeys = a}) . _Default
+      . _Coerce
+
+instance FromJSON AllocateIdsRequest where
+        parseJSON
+          = withObject "AllocateIdsRequest"
+              (\ o ->
+                 AllocateIdsRequest' <$> (o .:? "keys" .!= mempty))
+
+instance ToJSON AllocateIdsRequest where
+        toJSON AllocateIdsRequest'{..}
+          = object (catMaybes [("keys" .=) <$> _airKeys])
+
+-- | Metadata for ExportEntities operations.
+--
+-- /See:/ 'googleDatastoreAdminV1ExportEntitiesMetadata' smart constructor.
+data GoogleDatastoreAdminV1ExportEntitiesMetadata = GoogleDatastoreAdminV1ExportEntitiesMetadata'
+    { _gdaveemProgressBytes    :: !(Maybe GoogleDatastoreAdminV1Progress)
+    , _gdaveemOutputURLPrefix  :: !(Maybe Text)
+    , _gdaveemProgressEntities :: !(Maybe GoogleDatastoreAdminV1Progress)
+    , _gdaveemEntityFilter     :: !(Maybe GoogleDatastoreAdminV1EntityFilter)
+    , _gdaveemCommon           :: !(Maybe GoogleDatastoreAdminV1CommonMetadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ExportEntitiesMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaveemProgressBytes'
+--
+-- * 'gdaveemOutputURLPrefix'
+--
+-- * 'gdaveemProgressEntities'
+--
+-- * 'gdaveemEntityFilter'
+--
+-- * 'gdaveemCommon'
+googleDatastoreAdminV1ExportEntitiesMetadata
+    :: GoogleDatastoreAdminV1ExportEntitiesMetadata
+googleDatastoreAdminV1ExportEntitiesMetadata =
+    GoogleDatastoreAdminV1ExportEntitiesMetadata'
+    { _gdaveemProgressBytes = Nothing
+    , _gdaveemOutputURLPrefix = Nothing
+    , _gdaveemProgressEntities = Nothing
+    , _gdaveemEntityFilter = Nothing
+    , _gdaveemCommon = Nothing
+    }
+
+-- | An estimate of the number of bytes processed.
+gdaveemProgressBytes :: Lens' GoogleDatastoreAdminV1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1Progress)
+gdaveemProgressBytes
+  = lens _gdaveemProgressBytes
+      (\ s a -> s{_gdaveemProgressBytes = a})
+
+-- | Location for the export metadata and data files. This will be the same
+-- value as the
+-- google.datastore.admin.v1.ExportEntitiesRequest.output_url_prefix field.
+-- The final output location is provided in
+-- google.datastore.admin.v1.ExportEntitiesResponse.output_url.
+gdaveemOutputURLPrefix :: Lens' GoogleDatastoreAdminV1ExportEntitiesMetadata (Maybe Text)
+gdaveemOutputURLPrefix
+  = lens _gdaveemOutputURLPrefix
+      (\ s a -> s{_gdaveemOutputURLPrefix = a})
+
+-- | An estimate of the number of entities processed.
+gdaveemProgressEntities :: Lens' GoogleDatastoreAdminV1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1Progress)
+gdaveemProgressEntities
+  = lens _gdaveemProgressEntities
+      (\ s a -> s{_gdaveemProgressEntities = a})
+
+-- | Description of which entities are being exported.
+gdaveemEntityFilter :: Lens' GoogleDatastoreAdminV1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1EntityFilter)
+gdaveemEntityFilter
+  = lens _gdaveemEntityFilter
+      (\ s a -> s{_gdaveemEntityFilter = a})
+
+-- | Metadata common to all Datastore Admin operations.
+gdaveemCommon :: Lens' GoogleDatastoreAdminV1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1CommonMetadata)
+gdaveemCommon
+  = lens _gdaveemCommon
+      (\ s a -> s{_gdaveemCommon = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1ExportEntitiesMetadata where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ExportEntitiesMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1ExportEntitiesMetadata' <$>
+                   (o .:? "progressBytes") <*> (o .:? "outputUrlPrefix")
+                     <*> (o .:? "progressEntities")
+                     <*> (o .:? "entityFilter")
+                     <*> (o .:? "common"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ExportEntitiesMetadata where
+        toJSON
+          GoogleDatastoreAdminV1ExportEntitiesMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gdaveemProgressBytes,
+                  ("outputUrlPrefix" .=) <$> _gdaveemOutputURLPrefix,
+                  ("progressEntities" .=) <$> _gdaveemProgressEntities,
+                  ("entityFilter" .=) <$> _gdaveemEntityFilter,
+                  ("common" .=) <$> _gdaveemCommon])
+
+-- | Metadata common to all Datastore Admin operations.
+--
+-- /See:/ 'googleDatastoreAdminV1beta1CommonMetadata' smart constructor.
+data GoogleDatastoreAdminV1beta1CommonMetadata = GoogleDatastoreAdminV1beta1CommonMetadata'
+    { _gdavcmState         :: !(Maybe GoogleDatastoreAdminV1beta1CommonMetadataState)
+    , _gdavcmStartTime     :: !(Maybe DateTime')
+    , _gdavcmEndTime       :: !(Maybe DateTime')
+    , _gdavcmLabels        :: !(Maybe GoogleDatastoreAdminV1beta1CommonMetadataLabels)
+    , _gdavcmOperationType :: !(Maybe GoogleDatastoreAdminV1beta1CommonMetadataOperationType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1CommonMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavcmState'
+--
+-- * 'gdavcmStartTime'
+--
+-- * 'gdavcmEndTime'
+--
+-- * 'gdavcmLabels'
+--
+-- * 'gdavcmOperationType'
+googleDatastoreAdminV1beta1CommonMetadata
+    :: GoogleDatastoreAdminV1beta1CommonMetadata
+googleDatastoreAdminV1beta1CommonMetadata =
+    GoogleDatastoreAdminV1beta1CommonMetadata'
+    { _gdavcmState = Nothing
+    , _gdavcmStartTime = Nothing
+    , _gdavcmEndTime = Nothing
+    , _gdavcmLabels = Nothing
+    , _gdavcmOperationType = Nothing
+    }
+
+-- | The current state of the Operation.
+gdavcmState :: Lens' GoogleDatastoreAdminV1beta1CommonMetadata (Maybe GoogleDatastoreAdminV1beta1CommonMetadataState)
+gdavcmState
+  = lens _gdavcmState (\ s a -> s{_gdavcmState = a})
+
+-- | The time that work began on the operation.
+gdavcmStartTime :: Lens' GoogleDatastoreAdminV1beta1CommonMetadata (Maybe UTCTime)
+gdavcmStartTime
+  = lens _gdavcmStartTime
+      (\ s a -> s{_gdavcmStartTime = a})
+      . mapping _DateTime
+
+-- | The time the operation ended, either successfully or otherwise.
+gdavcmEndTime :: Lens' GoogleDatastoreAdminV1beta1CommonMetadata (Maybe UTCTime)
+gdavcmEndTime
+  = lens _gdavcmEndTime
+      (\ s a -> s{_gdavcmEndTime = a})
+      . mapping _DateTime
+
+-- | The client-assigned labels which were provided when the operation was
+-- created. May also include additional labels.
+gdavcmLabels :: Lens' GoogleDatastoreAdminV1beta1CommonMetadata (Maybe GoogleDatastoreAdminV1beta1CommonMetadataLabels)
+gdavcmLabels
+  = lens _gdavcmLabels (\ s a -> s{_gdavcmLabels = a})
+
+-- | The type of the operation. Can be used as a filter in
+-- ListOperationsRequest.
+gdavcmOperationType :: Lens' GoogleDatastoreAdminV1beta1CommonMetadata (Maybe GoogleDatastoreAdminV1beta1CommonMetadataOperationType)
+gdavcmOperationType
+  = lens _gdavcmOperationType
+      (\ s a -> s{_gdavcmOperationType = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1beta1CommonMetadata where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1beta1CommonMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1CommonMetadata' <$>
+                   (o .:? "state") <*> (o .:? "startTime") <*>
+                     (o .:? "endTime")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "operationType"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1beta1CommonMetadata where
+        toJSON GoogleDatastoreAdminV1beta1CommonMetadata'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _gdavcmState,
+                  ("startTime" .=) <$> _gdavcmStartTime,
+                  ("endTime" .=) <$> _gdavcmEndTime,
+                  ("labels" .=) <$> _gdavcmLabels,
+                  ("operationType" .=) <$> _gdavcmOperationType])
+
+-- | 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
+
+-- | 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])
+
+-- | Metadata for Index operations.
+--
+-- /See:/ 'googleDatastoreAdminV1IndexOperationMetadata' smart constructor.
+data GoogleDatastoreAdminV1IndexOperationMetadata = GoogleDatastoreAdminV1IndexOperationMetadata'
+    { _gdaviomProgressEntities :: !(Maybe GoogleDatastoreAdminV1Progress)
+    , _gdaviomCommon           :: !(Maybe GoogleDatastoreAdminV1CommonMetadata)
+    , _gdaviomIndexId          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1IndexOperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaviomProgressEntities'
+--
+-- * 'gdaviomCommon'
+--
+-- * 'gdaviomIndexId'
+googleDatastoreAdminV1IndexOperationMetadata
+    :: GoogleDatastoreAdminV1IndexOperationMetadata
+googleDatastoreAdminV1IndexOperationMetadata =
+    GoogleDatastoreAdminV1IndexOperationMetadata'
+    { _gdaviomProgressEntities = Nothing
+    , _gdaviomCommon = Nothing
+    , _gdaviomIndexId = Nothing
+    }
+
+-- | An estimate of the number of entities processed.
+gdaviomProgressEntities :: Lens' GoogleDatastoreAdminV1IndexOperationMetadata (Maybe GoogleDatastoreAdminV1Progress)
+gdaviomProgressEntities
+  = lens _gdaviomProgressEntities
+      (\ s a -> s{_gdaviomProgressEntities = a})
+
+-- | Metadata common to all Datastore Admin operations.
+gdaviomCommon :: Lens' GoogleDatastoreAdminV1IndexOperationMetadata (Maybe GoogleDatastoreAdminV1CommonMetadata)
+gdaviomCommon
+  = lens _gdaviomCommon
+      (\ s a -> s{_gdaviomCommon = a})
+
+-- | The index resource ID that this operation is acting on.
+gdaviomIndexId :: Lens' GoogleDatastoreAdminV1IndexOperationMetadata (Maybe Text)
+gdaviomIndexId
+  = lens _gdaviomIndexId
+      (\ s a -> s{_gdaviomIndexId = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1IndexOperationMetadata where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1IndexOperationMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1IndexOperationMetadata' <$>
+                   (o .:? "progressEntities") <*> (o .:? "common") <*>
+                     (o .:? "indexId"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1IndexOperationMetadata where
+        toJSON
+          GoogleDatastoreAdminV1IndexOperationMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressEntities" .=) <$>
+                    _gdaviomProgressEntities,
+                  ("common" .=) <$> _gdaviomCommon,
+                  ("indexId" .=) <$> _gdaviomIndexId])
+
+-- | Metadata for ImportEntities operations.
+--
+-- /See:/ 'googleDatastoreAdminV1beta1ImportEntitiesMetadata' smart constructor.
+data GoogleDatastoreAdminV1beta1ImportEntitiesMetadata = GoogleDatastoreAdminV1beta1ImportEntitiesMetadata'
+    { _gdaviemProgressBytes    :: !(Maybe GoogleDatastoreAdminV1beta1Progress)
+    , _gdaviemProgressEntities :: !(Maybe GoogleDatastoreAdminV1beta1Progress)
+    , _gdaviemEntityFilter     :: !(Maybe GoogleDatastoreAdminV1beta1EntityFilter)
+    , _gdaviemInputURL         :: !(Maybe Text)
+    , _gdaviemCommon           :: !(Maybe GoogleDatastoreAdminV1beta1CommonMetadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1ImportEntitiesMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaviemProgressBytes'
+--
+-- * 'gdaviemProgressEntities'
+--
+-- * 'gdaviemEntityFilter'
+--
+-- * 'gdaviemInputURL'
+--
+-- * 'gdaviemCommon'
+googleDatastoreAdminV1beta1ImportEntitiesMetadata
+    :: GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+googleDatastoreAdminV1beta1ImportEntitiesMetadata =
+    GoogleDatastoreAdminV1beta1ImportEntitiesMetadata'
+    { _gdaviemProgressBytes = Nothing
+    , _gdaviemProgressEntities = Nothing
+    , _gdaviemEntityFilter = Nothing
+    , _gdaviemInputURL = Nothing
+    , _gdaviemCommon = Nothing
+    }
+
+-- | An estimate of the number of bytes processed.
+gdaviemProgressBytes :: Lens' GoogleDatastoreAdminV1beta1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1Progress)
+gdaviemProgressBytes
+  = lens _gdaviemProgressBytes
+      (\ s a -> s{_gdaviemProgressBytes = a})
+
+-- | An estimate of the number of entities processed.
+gdaviemProgressEntities :: Lens' GoogleDatastoreAdminV1beta1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1Progress)
+gdaviemProgressEntities
+  = lens _gdaviemProgressEntities
+      (\ s a -> s{_gdaviemProgressEntities = a})
+
+-- | Description of which entities are being imported.
+gdaviemEntityFilter :: Lens' GoogleDatastoreAdminV1beta1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1EntityFilter)
+gdaviemEntityFilter
+  = lens _gdaviemEntityFilter
+      (\ s a -> s{_gdaviemEntityFilter = a})
+
+-- | The location of the import metadata file. This will be the same value as
+-- the google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url
+-- field.
+gdaviemInputURL :: Lens' GoogleDatastoreAdminV1beta1ImportEntitiesMetadata (Maybe Text)
+gdaviemInputURL
+  = lens _gdaviemInputURL
+      (\ s a -> s{_gdaviemInputURL = a})
+
+-- | Metadata common to all Datastore Admin operations.
+gdaviemCommon :: Lens' GoogleDatastoreAdminV1beta1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1CommonMetadata)
+gdaviemCommon
+  = lens _gdaviemCommon
+      (\ s a -> s{_gdaviemCommon = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1ImportEntitiesMetadata'
+                   <$>
+                   (o .:? "progressBytes") <*>
+                     (o .:? "progressEntities")
+                     <*> (o .:? "entityFilter")
+                     <*> (o .:? "inputUrl")
+                     <*> (o .:? "common"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1beta1ImportEntitiesMetadata
+         where
+        toJSON
+          GoogleDatastoreAdminV1beta1ImportEntitiesMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gdaviemProgressBytes,
+                  ("progressEntities" .=) <$> _gdaviemProgressEntities,
+                  ("entityFilter" .=) <$> _gdaviemEntityFilter,
+                  ("inputUrl" .=) <$> _gdaviemInputURL,
+                  ("common" .=) <$> _gdaviemCommon])
+
+-- | Measures the progress of a particular metric.
+--
+-- /See:/ 'googleDatastoreAdminV1beta1Progress' smart constructor.
+data GoogleDatastoreAdminV1beta1Progress = GoogleDatastoreAdminV1beta1Progress'
+    { _gdavpWorkCompleted :: !(Maybe (Textual Int64))
+    , _gdavpWorkEstimated :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1Progress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavpWorkCompleted'
+--
+-- * 'gdavpWorkEstimated'
+googleDatastoreAdminV1beta1Progress
+    :: GoogleDatastoreAdminV1beta1Progress
+googleDatastoreAdminV1beta1Progress =
+    GoogleDatastoreAdminV1beta1Progress'
+    { _gdavpWorkCompleted = Nothing
+    , _gdavpWorkEstimated = Nothing
+    }
+
+-- | The amount of work that has been completed. Note that this may be
+-- greater than work_estimated.
+gdavpWorkCompleted :: Lens' GoogleDatastoreAdminV1beta1Progress (Maybe Int64)
+gdavpWorkCompleted
+  = lens _gdavpWorkCompleted
+      (\ s a -> s{_gdavpWorkCompleted = a})
+      . mapping _Coerce
+
+-- | An estimate of how much work needs to be performed. May be zero if the
+-- work estimate is unavailable.
+gdavpWorkEstimated :: Lens' GoogleDatastoreAdminV1beta1Progress (Maybe Int64)
+gdavpWorkEstimated
+  = lens _gdavpWorkEstimated
+      (\ s a -> s{_gdavpWorkEstimated = a})
+      . mapping _Coerce
+
+instance FromJSON GoogleDatastoreAdminV1beta1Progress
+         where
+        parseJSON
+          = withObject "GoogleDatastoreAdminV1beta1Progress"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1Progress' <$>
+                   (o .:? "workCompleted") <*> (o .:? "workEstimated"))
+
+instance ToJSON GoogleDatastoreAdminV1beta1Progress
+         where
+        toJSON GoogleDatastoreAdminV1beta1Progress'{..}
+          = object
+              (catMaybes
+                 [("workCompleted" .=) <$> _gdavpWorkCompleted,
+                  ("workEstimated" .=) <$> _gdavpWorkEstimated])
+
+-- | The response for Datastore.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 identifier (always present).
+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 result of applying a mutation.
+--
+-- /See:/ 'mutationResult' smart constructor.
+data MutationResult = MutationResult'
+    { _mrConflictDetected :: !(Maybe Bool)
+    , _mrKey              :: !(Maybe Key)
+    , _mrVersion          :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MutationResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mrConflictDetected'
+--
+-- * 'mrKey'
+--
+-- * 'mrVersion'
+mutationResult
+    :: MutationResult
+mutationResult =
+    MutationResult'
+    { _mrConflictDetected = Nothing
+    , _mrKey = Nothing
+    , _mrVersion = Nothing
+    }
+
+-- | Whether a conflict was detected for this mutation. Always false when a
+-- conflict detection strategy field is not set in the mutation.
+mrConflictDetected :: Lens' MutationResult (Maybe Bool)
+mrConflictDetected
+  = lens _mrConflictDetected
+      (\ s a -> s{_mrConflictDetected = a})
+
+-- | The automatically allocated key. Set only when the mutation allocated a
+-- key.
+mrKey :: Lens' MutationResult (Maybe Key)
+mrKey = lens _mrKey (\ s a -> s{_mrKey = a})
+
+-- | The version of the entity on the server after processing the mutation.
+-- If the mutation doesn\'t change anything on the server, then the version
+-- will be the version of the current entity or, if no entity is present, a
+-- version that is strictly greater than the version of any previous entity
+-- and less than the version of any possible future entity.
+mrVersion :: Lens' MutationResult (Maybe Int64)
+mrVersion
+  = lens _mrVersion (\ s a -> s{_mrVersion = a}) .
+      mapping _Coerce
+
+instance FromJSON MutationResult where
+        parseJSON
+          = withObject "MutationResult"
+              (\ o ->
+                 MutationResult' <$>
+                   (o .:? "conflictDetected") <*> (o .:? "key") <*>
+                     (o .:? "version"))
+
+instance ToJSON MutationResult where
+        toJSON MutationResult'{..}
+          = object
+              (catMaybes
+                 [("conflictDetected" .=) <$> _mrConflictDetected,
+                  ("key" .=) <$> _mrKey,
+                  ("version" .=) <$> _mrVersion])
+
+-- | The response for Datastore.AllocateIds.
+--
+-- /See:/ 'allocateIdsResponse' smart constructor.
+newtype AllocateIdsResponse = AllocateIdsResponse'
+    { _aKeys :: Maybe [Key]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AllocateIdsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aKeys'
+allocateIdsResponse
+    :: AllocateIdsResponse
+allocateIdsResponse =
+    AllocateIdsResponse'
+    { _aKeys = Nothing
+    }
+
+-- | The keys specified in the request (in the same order), each with its key
+-- path completed with a newly allocated ID.
+aKeys :: Lens' AllocateIdsResponse [Key]
+aKeys
+  = lens _aKeys (\ s a -> s{_aKeys = a}) . _Default .
+      _Coerce
+
+instance FromJSON AllocateIdsResponse where
+        parseJSON
+          = withObject "AllocateIdsResponse"
+              (\ o ->
+                 AllocateIdsResponse' <$> (o .:? "keys" .!= mempty))
+
+instance ToJSON AllocateIdsResponse where
+        toJSON AllocateIdsResponse'{..}
+          = object (catMaybes [("keys" .=) <$> _aKeys])
+
+-- | A [GQL
+-- query](https:\/\/cloud.google.com\/datastore\/docs\/apis\/gql\/gql_reference).
+--
+-- /See:/ 'gqlQuery' smart constructor.
+data GqlQuery = GqlQuery'
+    { _gqPositionalBindings :: !(Maybe [GqlQueryParameter])
+    , _gqNamedBindings      :: !(Maybe GqlQueryNamedBindings)
+    , _gqQueryString        :: !(Maybe Text)
+    , _gqAllowLiterals      :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GqlQuery' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gqPositionalBindings'
+--
+-- * 'gqNamedBindings'
+--
+-- * 'gqQueryString'
+--
+-- * 'gqAllowLiterals'
+gqlQuery
+    :: GqlQuery
+gqlQuery =
+    GqlQuery'
+    { _gqPositionalBindings = Nothing
+    , _gqNamedBindings = Nothing
+    , _gqQueryString = Nothing
+    , _gqAllowLiterals = Nothing
+    }
+
+-- | Numbered binding site \'1 references the first numbered parameter,
+-- effectively using 1-based indexing, rather than the usual 0. For each
+-- binding site numbered i in \`query_string\`, there must be an i-th
+-- numbered parameter. The inverse must also be true.
+gqPositionalBindings :: Lens' GqlQuery [GqlQueryParameter]
+gqPositionalBindings
+  = lens _gqPositionalBindings
+      (\ s a -> s{_gqPositionalBindings = a})
+      . _Default
+      . _Coerce
+
+-- | For each non-reserved named binding site in the query string, there must
+-- be a named parameter with that name, but not necessarily the inverse.
+-- Key must match regex \`A-Za-z_$*\`, must not match regex \`__.*__\`, and
+-- must not be \`\"\"\`.
+gqNamedBindings :: Lens' GqlQuery (Maybe GqlQueryNamedBindings)
+gqNamedBindings
+  = lens _gqNamedBindings
+      (\ s a -> s{_gqNamedBindings = a})
+
+-- | A string of the format described
+-- [here](https:\/\/cloud.google.com\/datastore\/docs\/apis\/gql\/gql_reference).
+gqQueryString :: Lens' GqlQuery (Maybe Text)
+gqQueryString
+  = lens _gqQueryString
+      (\ s a -> s{_gqQueryString = a})
+
+-- | When false, the query string must not contain any literals and instead
+-- must bind all values. For example, \`SELECT * FROM Kind WHERE a =
+-- \'string literal\'\` is not allowed, while \`SELECT * FROM Kind WHERE a
+-- = \'value\` is.
+gqAllowLiterals :: Lens' GqlQuery (Maybe Bool)
+gqAllowLiterals
+  = lens _gqAllowLiterals
+      (\ s a -> s{_gqAllowLiterals = a})
+
+instance FromJSON GqlQuery where
+        parseJSON
+          = withObject "GqlQuery"
+              (\ o ->
+                 GqlQuery' <$>
+                   (o .:? "positionalBindings" .!= mempty) <*>
+                     (o .:? "namedBindings")
+                     <*> (o .:? "queryString")
+                     <*> (o .:? "allowLiterals"))
+
+instance ToJSON GqlQuery where
+        toJSON GqlQuery'{..}
+          = object
+              (catMaybes
+                 [("positionalBindings" .=) <$> _gqPositionalBindings,
+                  ("namedBindings" .=) <$> _gqNamedBindings,
+                  ("queryString" .=) <$> _gqQueryString,
+                  ("allowLiterals" .=) <$> _gqAllowLiterals])
+
+-- | The response for Datastore.RunQuery.
+--
+-- /See:/ 'runQueryResponse' smart constructor.
+data RunQueryResponse = RunQueryResponse'
+    { _rBatch :: !(Maybe QueryResultBatch)
+    , _rQuery :: !(Maybe Query)
+    } 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:
+--
+-- * 'rBatch'
+--
+-- * 'rQuery'
+runQueryResponse
+    :: RunQueryResponse
+runQueryResponse =
+    RunQueryResponse'
+    { _rBatch = Nothing
+    , _rQuery = Nothing
+    }
+
+-- | A batch of query results (always present).
+rBatch :: Lens' RunQueryResponse (Maybe QueryResultBatch)
+rBatch = lens _rBatch (\ s a -> s{_rBatch = a})
+
+-- | The parsed form of the \`GqlQuery\` from the request, if it was set.
+rQuery :: Lens' RunQueryResponse (Maybe Query)
+rQuery = lens _rQuery (\ s a -> s{_rQuery = a})
+
+instance FromJSON RunQueryResponse where
+        parseJSON
+          = withObject "RunQueryResponse"
+              (\ o ->
+                 RunQueryResponse' <$>
+                   (o .:? "batch") <*> (o .:? "query"))
+
+instance ToJSON RunQueryResponse where
+        toJSON RunQueryResponse'{..}
+          = object
+              (catMaybes
+                 [("batch" .=) <$> _rBatch, ("query" .=) <$> _rQuery])
+
+-- | Client-assigned labels.
+--
+-- /See:/ 'googleDatastoreAdminV1ExportEntitiesRequestLabels' smart constructor.
+newtype GoogleDatastoreAdminV1ExportEntitiesRequestLabels = GoogleDatastoreAdminV1ExportEntitiesRequestLabels'
+    { _gdaveerlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ExportEntitiesRequestLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaveerlAddtional'
+googleDatastoreAdminV1ExportEntitiesRequestLabels
+    :: HashMap Text Text -- ^ 'gdaveerlAddtional'
+    -> GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+googleDatastoreAdminV1ExportEntitiesRequestLabels pGdaveerlAddtional_ =
+    GoogleDatastoreAdminV1ExportEntitiesRequestLabels'
+    { _gdaveerlAddtional = _Coerce # pGdaveerlAddtional_
+    }
+
+gdaveerlAddtional :: Lens' GoogleDatastoreAdminV1ExportEntitiesRequestLabels (HashMap Text Text)
+gdaveerlAddtional
+  = lens _gdaveerlAddtional
+      (\ s a -> s{_gdaveerlAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+         where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ExportEntitiesRequestLabels"
+              (\ o ->
+                 GoogleDatastoreAdminV1ExportEntitiesRequestLabels'
+                   <$> (parseJSONObject o))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ExportEntitiesRequestLabels
+         where
+        toJSON = toJSON . _gdaveerlAddtional
+
+-- | A message that can hold any of the supported value types and associated
+-- metadata.
+--
+-- /See:/ 'value' smart constructor.
+data Value = Value'
+    { _vKeyValue           :: !(Maybe Key)
+    , _vGeoPointValue      :: !(Maybe LatLng)
+    , _vIntegerValue       :: !(Maybe (Textual Int64))
+    , _vTimestampValue     :: !(Maybe DateTime')
+    , _vEntityValue        :: !(Maybe Entity)
+    , _vExcludeFromIndexes :: !(Maybe Bool)
+    , _vDoubleValue        :: !(Maybe (Textual Double))
+    , _vStringValue        :: !(Maybe Text)
+    , _vBooleanValue       :: !(Maybe Bool)
+    , _vMeaning            :: !(Maybe (Textual Int32))
+    , _vArrayValue         :: !(Maybe ArrayValue)
+    , _vNullValue          :: !(Maybe ValueNullValue)
+    , _vBlobValue          :: !(Maybe Bytes)
+    } 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:
+--
+-- * 'vKeyValue'
+--
+-- * 'vGeoPointValue'
+--
+-- * 'vIntegerValue'
+--
+-- * 'vTimestampValue'
+--
+-- * 'vEntityValue'
+--
+-- * 'vExcludeFromIndexes'
+--
+-- * 'vDoubleValue'
+--
+-- * 'vStringValue'
+--
+-- * 'vBooleanValue'
+--
+-- * 'vMeaning'
+--
+-- * 'vArrayValue'
+--
+-- * 'vNullValue'
+--
+-- * 'vBlobValue'
+value
+    :: Value
+value =
+    Value'
+    { _vKeyValue = Nothing
+    , _vGeoPointValue = Nothing
+    , _vIntegerValue = Nothing
+    , _vTimestampValue = Nothing
+    , _vEntityValue = Nothing
+    , _vExcludeFromIndexes = Nothing
+    , _vDoubleValue = Nothing
+    , _vStringValue = Nothing
+    , _vBooleanValue = Nothing
+    , _vMeaning = Nothing
+    , _vArrayValue = Nothing
+    , _vNullValue = Nothing
+    , _vBlobValue = Nothing
+    }
+
+-- | A key value.
+vKeyValue :: Lens' Value (Maybe Key)
+vKeyValue
+  = lens _vKeyValue (\ s a -> s{_vKeyValue = a})
+
+-- | 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})
+
+-- | An integer value.
+vIntegerValue :: Lens' Value (Maybe Int64)
+vIntegerValue
+  = lens _vIntegerValue
+      (\ s a -> s{_vIntegerValue = a})
+      . mapping _Coerce
+
+-- | A timestamp value. When stored in the Datastore, precise only to
+-- microseconds; any additional precision is rounded down.
+vTimestampValue :: Lens' Value (Maybe UTCTime)
+vTimestampValue
+  = lens _vTimestampValue
+      (\ s a -> s{_vTimestampValue = a})
+      . mapping _DateTime
+
+-- | An entity value. - May have no key. - May have a key with an incomplete
+-- key path. - May have a reserved\/read-only key.
+vEntityValue :: Lens' Value (Maybe Entity)
+vEntityValue
+  = lens _vEntityValue (\ s a -> s{_vEntityValue = a})
+
+-- | If the value should be excluded from all indexes including those defined
+-- explicitly.
+vExcludeFromIndexes :: Lens' Value (Maybe Bool)
+vExcludeFromIndexes
+  = lens _vExcludeFromIndexes
+      (\ s a -> s{_vExcludeFromIndexes = a})
+
+-- | A double value.
+vDoubleValue :: Lens' Value (Maybe Double)
+vDoubleValue
+  = lens _vDoubleValue (\ s a -> s{_vDoubleValue = a})
+      . mapping _Coerce
+
+-- | A UTF-8 encoded string value. When \`exclude_from_indexes\` is false (it
+-- is indexed) , may have at most 1500 bytes. Otherwise, may be set to at
+-- least 1,000,000 bytes.
+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})
+
+-- | The \`meaning\` field should only be populated for backwards
+-- compatibility.
+vMeaning :: Lens' Value (Maybe Int32)
+vMeaning
+  = lens _vMeaning (\ s a -> s{_vMeaning = a}) .
+      mapping _Coerce
+
+-- | An array value. Cannot contain another array value. A \`Value\` instance
+-- that sets field \`array_value\` must not set fields \`meaning\` or
+-- \`exclude_from_indexes\`.
+vArrayValue :: Lens' Value (Maybe ArrayValue)
+vArrayValue
+  = lens _vArrayValue (\ s a -> s{_vArrayValue = a})
+
+-- | A null value.
+vNullValue :: Lens' Value (Maybe ValueNullValue)
+vNullValue
+  = lens _vNullValue (\ s a -> s{_vNullValue = a})
+
+-- | A blob value. May have at most 1,000,000 bytes. When
+-- \`exclude_from_indexes\` is false, may have at most 1500 bytes. In JSON
+-- requests, must be base64-encoded.
+vBlobValue :: Lens' Value (Maybe ByteString)
+vBlobValue
+  = lens _vBlobValue (\ s a -> s{_vBlobValue = a}) .
+      mapping _Bytes
+
+instance FromJSON Value where
+        parseJSON
+          = withObject "Value"
+              (\ o ->
+                 Value' <$>
+                   (o .:? "keyValue") <*> (o .:? "geoPointValue") <*>
+                     (o .:? "integerValue")
+                     <*> (o .:? "timestampValue")
+                     <*> (o .:? "entityValue")
+                     <*> (o .:? "excludeFromIndexes")
+                     <*> (o .:? "doubleValue")
+                     <*> (o .:? "stringValue")
+                     <*> (o .:? "booleanValue")
+                     <*> (o .:? "meaning")
+                     <*> (o .:? "arrayValue")
+                     <*> (o .:? "nullValue")
+                     <*> (o .:? "blobValue"))
+
+instance ToJSON Value where
+        toJSON Value'{..}
+          = object
+              (catMaybes
+                 [("keyValue" .=) <$> _vKeyValue,
+                  ("geoPointValue" .=) <$> _vGeoPointValue,
+                  ("integerValue" .=) <$> _vIntegerValue,
+                  ("timestampValue" .=) <$> _vTimestampValue,
+                  ("entityValue" .=) <$> _vEntityValue,
+                  ("excludeFromIndexes" .=) <$> _vExcludeFromIndexes,
+                  ("doubleValue" .=) <$> _vDoubleValue,
+                  ("stringValue" .=) <$> _vStringValue,
+                  ("booleanValue" .=) <$> _vBooleanValue,
+                  ("meaning" .=) <$> _vMeaning,
+                  ("arrayValue" .=) <$> _vArrayValue,
+                  ("nullValue" .=) <$> _vNullValue,
+                  ("blobValue" .=) <$> _vBlobValue])
+
+-- | The client-assigned labels which were provided when the operation was
+-- created. May also include additional labels.
+--
+-- /See:/ 'googleDatastoreAdminV1CommonMetadataLabels' smart constructor.
+newtype GoogleDatastoreAdminV1CommonMetadataLabels = GoogleDatastoreAdminV1CommonMetadataLabels'
+    { _gdavcmlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1CommonMetadataLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavcmlAddtional'
+googleDatastoreAdminV1CommonMetadataLabels
+    :: HashMap Text Text -- ^ 'gdavcmlAddtional'
+    -> GoogleDatastoreAdminV1CommonMetadataLabels
+googleDatastoreAdminV1CommonMetadataLabels pGdavcmlAddtional_ =
+    GoogleDatastoreAdminV1CommonMetadataLabels'
+    { _gdavcmlAddtional = _Coerce # pGdavcmlAddtional_
+    }
+
+gdavcmlAddtional :: Lens' GoogleDatastoreAdminV1CommonMetadataLabels (HashMap Text Text)
+gdavcmlAddtional
+  = lens _gdavcmlAddtional
+      (\ s a -> s{_gdavcmlAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         GoogleDatastoreAdminV1CommonMetadataLabels where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1CommonMetadataLabels"
+              (\ o ->
+                 GoogleDatastoreAdminV1CommonMetadataLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+         GoogleDatastoreAdminV1CommonMetadataLabels where
+        toJSON = toJSON . _gdavcmlAddtional
+
+--
+-- /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
+
+-- | The request for Datastore.Lookup.
+--
+-- /See:/ 'lookupRequest' smart constructor.
+data LookupRequest = LookupRequest'
+    { _lrKeys        :: !(Maybe [Key])
+    , _lrReadOptions :: !(Maybe ReadOptions)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LookupRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrKeys'
+--
+-- * 'lrReadOptions'
+lookupRequest
+    :: LookupRequest
+lookupRequest =
+    LookupRequest'
+    { _lrKeys = Nothing
+    , _lrReadOptions = Nothing
+    }
+
+-- | Keys of entities to look up.
+lrKeys :: Lens' LookupRequest [Key]
+lrKeys
+  = lens _lrKeys (\ s a -> s{_lrKeys = a}) . _Default .
+      _Coerce
+
+-- | The options for this lookup request.
+lrReadOptions :: Lens' LookupRequest (Maybe ReadOptions)
+lrReadOptions
+  = lens _lrReadOptions
+      (\ s a -> s{_lrReadOptions = a})
+
+instance FromJSON LookupRequest where
+        parseJSON
+          = withObject "LookupRequest"
+              (\ o ->
+                 LookupRequest' <$>
+                   (o .:? "keys" .!= mempty) <*> (o .:? "readOptions"))
+
+instance ToJSON LookupRequest where
+        toJSON LookupRequest'{..}
+          = object
+              (catMaybes
+                 [("keys" .=) <$> _lrKeys,
+                  ("readOptions" .=) <$> _lrReadOptions])
+
+-- | Metadata common to all Datastore Admin operations.
+--
+-- /See:/ 'googleDatastoreAdminV1CommonMetadata' smart constructor.
+data GoogleDatastoreAdminV1CommonMetadata = GoogleDatastoreAdminV1CommonMetadata'
+    { _gState         :: !(Maybe GoogleDatastoreAdminV1CommonMetadataState)
+    , _gStartTime     :: !(Maybe DateTime')
+    , _gEndTime       :: !(Maybe DateTime')
+    , _gLabels        :: !(Maybe GoogleDatastoreAdminV1CommonMetadataLabels)
+    , _gOperationType :: !(Maybe GoogleDatastoreAdminV1CommonMetadataOperationType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1CommonMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gState'
+--
+-- * 'gStartTime'
+--
+-- * 'gEndTime'
+--
+-- * 'gLabels'
+--
+-- * 'gOperationType'
+googleDatastoreAdminV1CommonMetadata
+    :: GoogleDatastoreAdminV1CommonMetadata
+googleDatastoreAdminV1CommonMetadata =
+    GoogleDatastoreAdminV1CommonMetadata'
+    { _gState = Nothing
+    , _gStartTime = Nothing
+    , _gEndTime = Nothing
+    , _gLabels = Nothing
+    , _gOperationType = Nothing
+    }
+
+-- | The current state of the Operation.
+gState :: Lens' GoogleDatastoreAdminV1CommonMetadata (Maybe GoogleDatastoreAdminV1CommonMetadataState)
+gState = lens _gState (\ s a -> s{_gState = a})
+
+-- | The time that work began on the operation.
+gStartTime :: Lens' GoogleDatastoreAdminV1CommonMetadata (Maybe UTCTime)
+gStartTime
+  = lens _gStartTime (\ s a -> s{_gStartTime = a}) .
+      mapping _DateTime
+
+-- | The time the operation ended, either successfully or otherwise.
+gEndTime :: Lens' GoogleDatastoreAdminV1CommonMetadata (Maybe UTCTime)
+gEndTime
+  = lens _gEndTime (\ s a -> s{_gEndTime = a}) .
+      mapping _DateTime
+
+-- | The client-assigned labels which were provided when the operation was
+-- created. May also include additional labels.
+gLabels :: Lens' GoogleDatastoreAdminV1CommonMetadata (Maybe GoogleDatastoreAdminV1CommonMetadataLabels)
+gLabels = lens _gLabels (\ s a -> s{_gLabels = a})
+
+-- | The type of the operation. Can be used as a filter in
+-- ListOperationsRequest.
+gOperationType :: Lens' GoogleDatastoreAdminV1CommonMetadata (Maybe GoogleDatastoreAdminV1CommonMetadataOperationType)
+gOperationType
+  = lens _gOperationType
+      (\ s a -> s{_gOperationType = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1CommonMetadata where
+        parseJSON
+          = withObject "GoogleDatastoreAdminV1CommonMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1CommonMetadata' <$>
+                   (o .:? "state") <*> (o .:? "startTime") <*>
+                     (o .:? "endTime")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "operationType"))
+
+instance ToJSON GoogleDatastoreAdminV1CommonMetadata
+         where
+        toJSON GoogleDatastoreAdminV1CommonMetadata'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _gState,
+                  ("startTime" .=) <$> _gStartTime,
+                  ("endTime" .=) <$> _gEndTime,
+                  ("labels" .=) <$> _gLabels,
+                  ("operationType" .=) <$> _gOperationType])
+
+-- | The request for google.datastore.admin.v1.DatastoreAdmin.ExportEntities.
+--
+-- /See:/ 'googleDatastoreAdminV1ExportEntitiesRequest' smart constructor.
+data GoogleDatastoreAdminV1ExportEntitiesRequest = GoogleDatastoreAdminV1ExportEntitiesRequest'
+    { _gdaveerOutputURLPrefix :: !(Maybe Text)
+    , _gdaveerEntityFilter    :: !(Maybe GoogleDatastoreAdminV1EntityFilter)
+    , _gdaveerLabels          :: !(Maybe GoogleDatastoreAdminV1ExportEntitiesRequestLabels)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ExportEntitiesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaveerOutputURLPrefix'
+--
+-- * 'gdaveerEntityFilter'
+--
+-- * 'gdaveerLabels'
+googleDatastoreAdminV1ExportEntitiesRequest
+    :: GoogleDatastoreAdminV1ExportEntitiesRequest
+googleDatastoreAdminV1ExportEntitiesRequest =
+    GoogleDatastoreAdminV1ExportEntitiesRequest'
+    { _gdaveerOutputURLPrefix = Nothing
+    , _gdaveerEntityFilter = Nothing
+    , _gdaveerLabels = Nothing
+    }
+
+-- | Location for the export metadata and data files. The full resource URL
+-- of the external storage location. Currently, only Google Cloud Storage
+-- is supported. So output_url_prefix should be of the form:
+-- \`gs:\/\/BUCKET_NAME[\/NAMESPACE_PATH]\`, where \`BUCKET_NAME\` is the
+-- name of the Cloud Storage bucket and \`NAMESPACE_PATH\` is an optional
+-- Cloud Storage namespace path (this is not a Cloud Datastore namespace).
+-- For more information about Cloud Storage namespace paths, see [Object
+-- name
+-- considerations](https:\/\/cloud.google.com\/storage\/docs\/naming#object-considerations).
+-- The resulting files will be nested deeper than the specified URL prefix.
+-- The final output URL will be provided in the
+-- google.datastore.admin.v1.ExportEntitiesResponse.output_url field. That
+-- value should be used for subsequent ImportEntities operations. By
+-- nesting the data files deeper, the same Cloud Storage bucket can be used
+-- in multiple ExportEntities operations without conflict.
+gdaveerOutputURLPrefix :: Lens' GoogleDatastoreAdminV1ExportEntitiesRequest (Maybe Text)
+gdaveerOutputURLPrefix
+  = lens _gdaveerOutputURLPrefix
+      (\ s a -> s{_gdaveerOutputURLPrefix = a})
+
+-- | Description of what data from the project is included in the export.
+gdaveerEntityFilter :: Lens' GoogleDatastoreAdminV1ExportEntitiesRequest (Maybe GoogleDatastoreAdminV1EntityFilter)
+gdaveerEntityFilter
+  = lens _gdaveerEntityFilter
+      (\ s a -> s{_gdaveerEntityFilter = a})
+
+-- | Client-assigned labels.
+gdaveerLabels :: Lens' GoogleDatastoreAdminV1ExportEntitiesRequest (Maybe GoogleDatastoreAdminV1ExportEntitiesRequestLabels)
+gdaveerLabels
+  = lens _gdaveerLabels
+      (\ s a -> s{_gdaveerLabels = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1ExportEntitiesRequest where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ExportEntitiesRequest"
+              (\ o ->
+                 GoogleDatastoreAdminV1ExportEntitiesRequest' <$>
+                   (o .:? "outputUrlPrefix") <*> (o .:? "entityFilter")
+                     <*> (o .:? "labels"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ExportEntitiesRequest where
+        toJSON
+          GoogleDatastoreAdminV1ExportEntitiesRequest'{..}
+          = object
+              (catMaybes
+                 [("outputUrlPrefix" .=) <$> _gdaveerOutputURLPrefix,
+                  ("entityFilter" .=) <$> _gdaveerEntityFilter,
+                  ("labels" .=) <$> _gdaveerLabels])
+
+-- | A mutation to apply to an entity.
+--
+-- /See:/ 'mutation' smart constructor.
+data Mutation = Mutation'
+    { _mBaseVersion :: !(Maybe (Textual Int64))
+    , _mInsert      :: !(Maybe Entity)
+    , _mUpsert      :: !(Maybe Entity)
+    , _mDelete      :: !(Maybe Key)
+    , _mUpdate      :: !(Maybe Entity)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Mutation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mBaseVersion'
+--
+-- * 'mInsert'
+--
+-- * 'mUpsert'
+--
+-- * 'mDelete'
+--
+-- * 'mUpdate'
+mutation
+    :: Mutation
+mutation =
+    Mutation'
+    { _mBaseVersion = Nothing
+    , _mInsert = Nothing
+    , _mUpsert = Nothing
+    , _mDelete = Nothing
+    , _mUpdate = Nothing
+    }
+
+-- | The version of the entity that this mutation is being applied to. If
+-- this does not match the current version on the server, the mutation
+-- conflicts.
+mBaseVersion :: Lens' Mutation (Maybe Int64)
+mBaseVersion
+  = lens _mBaseVersion (\ s a -> s{_mBaseVersion = a})
+      . mapping _Coerce
+
+-- | The entity to insert. The entity must not already exist. The entity
+-- key\'s final path element may be incomplete.
+mInsert :: Lens' Mutation (Maybe Entity)
+mInsert = lens _mInsert (\ s a -> s{_mInsert = a})
+
+-- | The entity to upsert. The entity may or may not already exist. The
+-- entity key\'s final path element may be incomplete.
+mUpsert :: Lens' Mutation (Maybe Entity)
+mUpsert = lens _mUpsert (\ s a -> s{_mUpsert = a})
+
+-- | The key of the entity to delete. The entity may or may not already
+-- exist. Must have a complete key path and must not be
+-- reserved\/read-only.
+mDelete :: Lens' Mutation (Maybe Key)
+mDelete = lens _mDelete (\ s a -> s{_mDelete = a})
+
+-- | The entity to update. The entity must already exist. Must have a
+-- complete key path.
+mUpdate :: Lens' Mutation (Maybe Entity)
+mUpdate = lens _mUpdate (\ s a -> s{_mUpdate = a})
+
+instance FromJSON Mutation where
+        parseJSON
+          = withObject "Mutation"
+              (\ o ->
+                 Mutation' <$>
+                   (o .:? "baseVersion") <*> (o .:? "insert") <*>
+                     (o .:? "upsert")
+                     <*> (o .:? "delete")
+                     <*> (o .:? "update"))
+
+instance ToJSON Mutation where
+        toJSON Mutation'{..}
+          = object
+              (catMaybes
+                 [("baseVersion" .=) <$> _mBaseVersion,
+                  ("insert" .=) <$> _mInsert,
+                  ("upsert" .=) <$> _mUpsert,
+                  ("delete" .=) <$> _mDelete,
+                  ("update" .=) <$> _mUpdate])
+
+-- | For each non-reserved named binding site in the query string, there must
+-- be a named parameter with that name, but not necessarily the inverse.
+-- Key must match regex \`A-Za-z_$*\`, must not match regex \`__.*__\`, and
+-- must not be \`\"\"\`.
+--
+-- /See:/ 'gqlQueryNamedBindings' smart constructor.
+newtype GqlQueryNamedBindings = GqlQueryNamedBindings'
+    { _gqnbAddtional :: HashMap Text GqlQueryParameter
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GqlQueryNamedBindings' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gqnbAddtional'
+gqlQueryNamedBindings
+    :: HashMap Text GqlQueryParameter -- ^ 'gqnbAddtional'
+    -> GqlQueryNamedBindings
+gqlQueryNamedBindings pGqnbAddtional_ =
+    GqlQueryNamedBindings'
+    { _gqnbAddtional = _Coerce # pGqnbAddtional_
+    }
+
+gqnbAddtional :: Lens' GqlQueryNamedBindings (HashMap Text GqlQueryParameter)
+gqnbAddtional
+  = lens _gqnbAddtional
+      (\ s a -> s{_gqnbAddtional = a})
+      . _Coerce
+
+instance FromJSON GqlQueryNamedBindings where
+        parseJSON
+          = withObject "GqlQueryNamedBindings"
+              (\ o ->
+                 GqlQueryNamedBindings' <$> (parseJSONObject o))
+
+instance ToJSON GqlQueryNamedBindings where
+        toJSON = toJSON . _gqnbAddtional
+
+-- | The response for
+-- google.datastore.admin.v1.DatastoreAdmin.ExportEntities.
+--
+-- /See:/ 'googleDatastoreAdminV1ExportEntitiesResponse' smart constructor.
+newtype GoogleDatastoreAdminV1ExportEntitiesResponse = GoogleDatastoreAdminV1ExportEntitiesResponse'
+    { _gOutputURL :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ExportEntitiesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gOutputURL'
+googleDatastoreAdminV1ExportEntitiesResponse
+    :: GoogleDatastoreAdminV1ExportEntitiesResponse
+googleDatastoreAdminV1ExportEntitiesResponse =
+    GoogleDatastoreAdminV1ExportEntitiesResponse'
+    { _gOutputURL = Nothing
+    }
+
+-- | Location of the output metadata file. This can be used to begin an
+-- import into Cloud Datastore (this project or another project). See
+-- google.datastore.admin.v1.ImportEntitiesRequest.input_url. Only present
+-- if the operation completed successfully.
+gOutputURL :: Lens' GoogleDatastoreAdminV1ExportEntitiesResponse (Maybe Text)
+gOutputURL
+  = lens _gOutputURL (\ s a -> s{_gOutputURL = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1ExportEntitiesResponse where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ExportEntitiesResponse"
+              (\ o ->
+                 GoogleDatastoreAdminV1ExportEntitiesResponse' <$>
+                   (o .:? "outputUrl"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ExportEntitiesResponse where
+        toJSON
+          GoogleDatastoreAdminV1ExportEntitiesResponse'{..}
+          = object
+              (catMaybes [("outputUrl" .=) <$> _gOutputURL])
+
+-- | A reference to a property relative to the kind expressions.
+--
+-- /See:/ 'propertyReference' smart constructor.
+newtype PropertyReference = PropertyReference'
+    { _prName :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PropertyReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prName'
+propertyReference
+    :: PropertyReference
+propertyReference =
+    PropertyReference'
+    { _prName = Nothing
+    }
+
+-- | The name of the property. If name includes \".\"s, it may be interpreted
+-- as a property name path.
+prName :: Lens' PropertyReference (Maybe Text)
+prName = lens _prName (\ s a -> s{_prName = a})
+
+instance FromJSON PropertyReference where
+        parseJSON
+          = withObject "PropertyReference"
+              (\ o -> PropertyReference' <$> (o .:? "name"))
+
+instance ToJSON PropertyReference where
+        toJSON PropertyReference'{..}
+          = object (catMaybes [("name" .=) <$> _prName])
+
+-- | A unique identifier for an entity. If a key\'s partition ID or any of
+-- its path kinds or names are reserved\/read-only, the key is
+-- reserved\/read-only. A reserved\/read-only key is forbidden in certain
+-- documented contexts.
+--
+-- /See:/ 'key' smart constructor.
+data Key = Key'
+    { _kPartitionId :: !(Maybe PartitionId)
+    , _kPath        :: !(Maybe [PathElement])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Key' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'kPartitionId'
+--
+-- * 'kPath'
+key
+    :: Key
+key =
+    Key'
+    { _kPartitionId = Nothing
+    , _kPath = Nothing
+    }
+
+-- | Entities are partitioned into subsets, currently identified by a project
+-- ID and namespace ID. Queries are scoped to a single partition.
+kPartitionId :: Lens' Key (Maybe PartitionId)
+kPartitionId
+  = lens _kPartitionId (\ s a -> s{_kPartitionId = a})
+
+-- | The entity path. An entity path consists of one or more elements
+-- composed of a kind and a string or numerical identifier, which identify
+-- entities. The first element identifies a _root entity_, the second
+-- element identifies a _child_ of the root entity, the third element
+-- identifies a child of the second entity, and so forth. The entities
+-- identified by all prefixes of the path are called the element\'s
+-- _ancestors_. An entity path is always fully complete: *all* of the
+-- entity\'s ancestors are required to be in the path along with the entity
+-- identifier itself. The only exception is that in some documented cases,
+-- the identifier in the last path element (for the entity) itself may be
+-- omitted. For example, the last path element of the key of
+-- \`Mutation.insert\` may have no identifier. A path can never be empty,
+-- and a path can have at most 100 elements.
+kPath :: Lens' Key [PathElement]
+kPath
+  = lens _kPath (\ s a -> s{_kPath = a}) . _Default .
+      _Coerce
+
+instance FromJSON Key where
+        parseJSON
+          = withObject "Key"
+              (\ o ->
+                 Key' <$>
+                   (o .:? "partitionId") <*> (o .:? "path" .!= mempty))
+
+instance ToJSON Key where
+        toJSON Key'{..}
+          = object
+              (catMaybes
+                 [("partitionId" .=) <$> _kPartitionId,
+                  ("path" .=) <$> _kPath])
+
+-- | The request for google.datastore.admin.v1.DatastoreAdmin.ImportEntities.
+--
+-- /See:/ 'googleDatastoreAdminV1ImportEntitiesRequest' smart constructor.
+data GoogleDatastoreAdminV1ImportEntitiesRequest = GoogleDatastoreAdminV1ImportEntitiesRequest'
+    { _gdavierEntityFilter :: !(Maybe GoogleDatastoreAdminV1EntityFilter)
+    , _gdavierInputURL     :: !(Maybe Text)
+    , _gdavierLabels       :: !(Maybe GoogleDatastoreAdminV1ImportEntitiesRequestLabels)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ImportEntitiesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavierEntityFilter'
+--
+-- * 'gdavierInputURL'
+--
+-- * 'gdavierLabels'
+googleDatastoreAdminV1ImportEntitiesRequest
+    :: GoogleDatastoreAdminV1ImportEntitiesRequest
+googleDatastoreAdminV1ImportEntitiesRequest =
+    GoogleDatastoreAdminV1ImportEntitiesRequest'
+    { _gdavierEntityFilter = Nothing
+    , _gdavierInputURL = Nothing
+    , _gdavierLabels = Nothing
+    }
+
+-- | Optionally specify which kinds\/namespaces are to be imported. If
+-- provided, the list must be a subset of the EntityFilter used in creating
+-- the export, otherwise a FAILED_PRECONDITION error will be returned. If
+-- no filter is specified then all entities from the export are imported.
+gdavierEntityFilter :: Lens' GoogleDatastoreAdminV1ImportEntitiesRequest (Maybe GoogleDatastoreAdminV1EntityFilter)
+gdavierEntityFilter
+  = lens _gdavierEntityFilter
+      (\ s a -> s{_gdavierEntityFilter = a})
+
+-- | The full resource URL of the external storage location. Currently, only
+-- Google Cloud Storage is supported. So input_url should be of the form:
+-- \`gs:\/\/BUCKET_NAME[\/NAMESPACE_PATH]\/OVERALL_EXPORT_METADATA_FILE\`,
+-- where \`BUCKET_NAME\` is the name of the Cloud Storage bucket,
+-- \`NAMESPACE_PATH\` is an optional Cloud Storage namespace path (this is
+-- not a Cloud Datastore namespace), and \`OVERALL_EXPORT_METADATA_FILE\`
+-- is the metadata file written by the ExportEntities operation. For more
+-- information about Cloud Storage namespace paths, see [Object name
+-- considerations](https:\/\/cloud.google.com\/storage\/docs\/naming#object-considerations).
+-- For more information, see
+-- google.datastore.admin.v1.ExportEntitiesResponse.output_url.
+gdavierInputURL :: Lens' GoogleDatastoreAdminV1ImportEntitiesRequest (Maybe Text)
+gdavierInputURL
+  = lens _gdavierInputURL
+      (\ s a -> s{_gdavierInputURL = a})
+
+-- | Client-assigned labels.
+gdavierLabels :: Lens' GoogleDatastoreAdminV1ImportEntitiesRequest (Maybe GoogleDatastoreAdminV1ImportEntitiesRequestLabels)
+gdavierLabels
+  = lens _gdavierLabels
+      (\ s a -> s{_gdavierLabels = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1ImportEntitiesRequest where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ImportEntitiesRequest"
+              (\ o ->
+                 GoogleDatastoreAdminV1ImportEntitiesRequest' <$>
+                   (o .:? "entityFilter") <*> (o .:? "inputUrl") <*>
+                     (o .:? "labels"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ImportEntitiesRequest where
+        toJSON
+          GoogleDatastoreAdminV1ImportEntitiesRequest'{..}
+          = object
+              (catMaybes
+                 [("entityFilter" .=) <$> _gdavierEntityFilter,
+                  ("inputUrl" .=) <$> _gdavierInputURL,
+                  ("labels" .=) <$> _gdavierLabels])
+
+-- | A filter on a specific property.
+--
+-- /See:/ 'propertyFilter' smart constructor.
+data PropertyFilter = PropertyFilter'
+    { _pfProperty :: !(Maybe PropertyReference)
+    , _pfOp       :: !(Maybe PropertyFilterOp)
+    , _pfValue    :: !(Maybe Value)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PropertyFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfProperty'
+--
+-- * 'pfOp'
+--
+-- * 'pfValue'
+propertyFilter
+    :: PropertyFilter
+propertyFilter =
+    PropertyFilter'
+    { _pfProperty = Nothing
+    , _pfOp = Nothing
+    , _pfValue = Nothing
+    }
+
+-- | The property to filter by.
+pfProperty :: Lens' PropertyFilter (Maybe PropertyReference)
+pfProperty
+  = lens _pfProperty (\ s a -> s{_pfProperty = a})
+
+-- | The operator to filter by.
+pfOp :: Lens' PropertyFilter (Maybe PropertyFilterOp)
+pfOp = lens _pfOp (\ s a -> s{_pfOp = a})
+
+-- | The value to compare the property to.
+pfValue :: Lens' PropertyFilter (Maybe Value)
+pfValue = lens _pfValue (\ s a -> s{_pfValue = a})
+
+instance FromJSON PropertyFilter where
+        parseJSON
+          = withObject "PropertyFilter"
+              (\ o ->
+                 PropertyFilter' <$>
+                   (o .:? "property") <*> (o .:? "op") <*>
+                     (o .:? "value"))
+
+instance ToJSON PropertyFilter where
+        toJSON PropertyFilter'{..}
+          = object
+              (catMaybes
+                 [("property" .=) <$> _pfProperty,
+                  ("op" .=) <$> _pfOp, ("value" .=) <$> _pfValue])
+
+-- | A query for entities.
+--
+-- /See:/ 'query' smart constructor.
+data Query = Query'
+    { _qStartCursor :: !(Maybe Bytes)
+    , _qOffSet      :: !(Maybe (Textual Int32))
+    , _qKind        :: !(Maybe [KindExpression])
+    , _qDistinctOn  :: !(Maybe [PropertyReference])
+    , _qEndCursor   :: !(Maybe Bytes)
+    , _qLimit       :: !(Maybe (Textual Int32))
+    , _qProjection  :: !(Maybe [Projection])
+    , _qFilter      :: !(Maybe Filter)
+    , _qOrder       :: !(Maybe [PropertyOrder])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Query' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qStartCursor'
+--
+-- * 'qOffSet'
+--
+-- * 'qKind'
+--
+-- * 'qDistinctOn'
+--
+-- * 'qEndCursor'
+--
+-- * 'qLimit'
+--
+-- * 'qProjection'
+--
+-- * 'qFilter'
+--
+-- * 'qOrder'
+query
+    :: Query
+query =
+    Query'
+    { _qStartCursor = Nothing
+    , _qOffSet = Nothing
+    , _qKind = Nothing
+    , _qDistinctOn = Nothing
+    , _qEndCursor = Nothing
+    , _qLimit = Nothing
+    , _qProjection = Nothing
+    , _qFilter = Nothing
+    , _qOrder = Nothing
+    }
+
+-- | A starting point for the query results. Query cursors are returned in
+-- query result batches and [can only be used to continue the same
+-- query](https:\/\/cloud.google.com\/datastore\/docs\/concepts\/queries#cursors_limits_and_offsets).
+qStartCursor :: Lens' Query (Maybe ByteString)
+qStartCursor
+  = lens _qStartCursor (\ s a -> s{_qStartCursor = a})
+      . mapping _Bytes
+
+-- | The number of results to skip. Applies before limit, but after all other
+-- constraints. Optional. Must be >= 0 if specified.
+qOffSet :: Lens' Query (Maybe Int32)
+qOffSet
+  = lens _qOffSet (\ s a -> s{_qOffSet = a}) .
+      mapping _Coerce
+
+-- | The kinds to query (if empty, returns entities of all kinds). Currently
+-- at most 1 kind may be specified.
+qKind :: Lens' Query [KindExpression]
+qKind
+  = lens _qKind (\ s a -> s{_qKind = a}) . _Default .
+      _Coerce
+
+-- | The properties to make distinct. The query results will contain the
+-- first result for each distinct combination of values for the given
+-- properties (if empty, all results are returned).
+qDistinctOn :: Lens' Query [PropertyReference]
+qDistinctOn
+  = lens _qDistinctOn (\ s a -> s{_qDistinctOn = a}) .
+      _Default
+      . _Coerce
+
+-- | An ending point for the query results. Query cursors are returned in
+-- query result batches and [can only be used to limit the same
+-- query](https:\/\/cloud.google.com\/datastore\/docs\/concepts\/queries#cursors_limits_and_offsets).
+qEndCursor :: Lens' Query (Maybe ByteString)
+qEndCursor
+  = lens _qEndCursor (\ s a -> s{_qEndCursor = a}) .
+      mapping _Bytes
+
+-- | The maximum number of results to return. Applies after all other
+-- constraints. Optional. Unspecified is interpreted as no limit. Must be
+-- >= 0 if specified.
+qLimit :: Lens' Query (Maybe Int32)
+qLimit
+  = lens _qLimit (\ s a -> s{_qLimit = a}) .
+      mapping _Coerce
+
+-- | The projection to return. Defaults to returning all properties.
+qProjection :: Lens' Query [Projection]
+qProjection
+  = lens _qProjection (\ s a -> s{_qProjection = a}) .
+      _Default
+      . _Coerce
+
+-- | The filter to apply.
+qFilter :: Lens' Query (Maybe Filter)
+qFilter = lens _qFilter (\ s a -> s{_qFilter = a})
+
+-- | The order to apply to the query results (if empty, order is
+-- unspecified).
+qOrder :: Lens' Query [PropertyOrder]
+qOrder
+  = lens _qOrder (\ s a -> s{_qOrder = a}) . _Default .
+      _Coerce
+
+instance FromJSON Query where
+        parseJSON
+          = withObject "Query"
+              (\ o ->
+                 Query' <$>
+                   (o .:? "startCursor") <*> (o .:? "offset") <*>
+                     (o .:? "kind" .!= mempty)
+                     <*> (o .:? "distinctOn" .!= mempty)
+                     <*> (o .:? "endCursor")
+                     <*> (o .:? "limit")
+                     <*> (o .:? "projection" .!= mempty)
+                     <*> (o .:? "filter")
+                     <*> (o .:? "order" .!= mempty))
+
+instance ToJSON Query where
+        toJSON Query'{..}
+          = object
+              (catMaybes
+                 [("startCursor" .=) <$> _qStartCursor,
+                  ("offset" .=) <$> _qOffSet, ("kind" .=) <$> _qKind,
+                  ("distinctOn" .=) <$> _qDistinctOn,
+                  ("endCursor" .=) <$> _qEndCursor,
+                  ("limit" .=) <$> _qLimit,
+                  ("projection" .=) <$> _qProjection,
+                  ("filter" .=) <$> _qFilter,
+                  ("order" .=) <$> _qOrder])
+
+-- | 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. The order of values in an array is preserved as
+-- long as all values have identical settings for \'exclude_from_indexes\'.
+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 result of fetching an entity from Datastore.
+--
+-- /See:/ 'entityResult' smart constructor.
+data EntityResult = EntityResult'
+    { _erCursor  :: !(Maybe Bytes)
+    , _erVersion :: !(Maybe (Textual Int64))
+    , _erEntity  :: !(Maybe Entity)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EntityResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'erCursor'
+--
+-- * 'erVersion'
+--
+-- * 'erEntity'
+entityResult
+    :: EntityResult
+entityResult =
+    EntityResult'
+    { _erCursor = Nothing
+    , _erVersion = Nothing
+    , _erEntity = Nothing
+    }
+
+-- | A cursor that points to the position after the result entity. Set only
+-- when the \`EntityResult\` is part of a \`QueryResultBatch\` message.
+erCursor :: Lens' EntityResult (Maybe ByteString)
+erCursor
+  = lens _erCursor (\ s a -> s{_erCursor = a}) .
+      mapping _Bytes
+
+-- | The version of the entity, a strictly positive number that monotonically
+-- increases with changes to the entity. This field is set for \`FULL\`
+-- entity results. For missing entities in \`LookupResponse\`, this is the
+-- version of the snapshot that was used to look up the entity, and it is
+-- always set except for eventually consistent reads.
+erVersion :: Lens' EntityResult (Maybe Int64)
+erVersion
+  = lens _erVersion (\ s a -> s{_erVersion = a}) .
+      mapping _Coerce
+
+-- | The resulting entity.
+erEntity :: Lens' EntityResult (Maybe Entity)
+erEntity = lens _erEntity (\ s a -> s{_erEntity = a})
+
+instance FromJSON EntityResult where
+        parseJSON
+          = withObject "EntityResult"
+              (\ o ->
+                 EntityResult' <$>
+                   (o .:? "cursor") <*> (o .:? "version") <*>
+                     (o .:? "entity"))
+
+instance ToJSON EntityResult where
+        toJSON EntityResult'{..}
+          = object
+              (catMaybes
+                 [("cursor" .=) <$> _erCursor,
+                  ("version" .=) <$> _erVersion,
+                  ("entity" .=) <$> _erEntity])
+
+-- | The response for Datastore.Commit.
+--
+-- /See:/ 'commitResponse' smart constructor.
+data CommitResponse = CommitResponse'
+    { _crIndexUpdates    :: !(Maybe (Textual Int32))
+    , _crMutationResults :: !(Maybe [MutationResult])
+    } 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:
+--
+-- * 'crIndexUpdates'
+--
+-- * 'crMutationResults'
+commitResponse
+    :: CommitResponse
+commitResponse =
+    CommitResponse'
+    { _crIndexUpdates = Nothing
+    , _crMutationResults = Nothing
+    }
+
+-- | The number of index entries updated during the commit, or zero if none
+-- were updated.
+crIndexUpdates :: Lens' CommitResponse (Maybe Int32)
+crIndexUpdates
+  = lens _crIndexUpdates
+      (\ s a -> s{_crIndexUpdates = a})
+      . mapping _Coerce
+
+-- | The result of performing the mutations. The i-th mutation result
+-- corresponds to the i-th mutation in the request.
+crMutationResults :: Lens' CommitResponse [MutationResult]
+crMutationResults
+  = lens _crMutationResults
+      (\ s a -> s{_crMutationResults = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON CommitResponse where
+        parseJSON
+          = withObject "CommitResponse"
+              (\ o ->
+                 CommitResponse' <$>
+                   (o .:? "indexUpdates") <*>
+                     (o .:? "mutationResults" .!= mempty))
+
+instance ToJSON CommitResponse where
+        toJSON CommitResponse'{..}
+          = object
+              (catMaybes
+                 [("indexUpdates" .=) <$> _crIndexUpdates,
+                  ("mutationResults" .=) <$> _crMutationResults])
+
+-- | A representation of a kind.
+--
+-- /See:/ 'kindExpression' smart constructor.
+newtype KindExpression = KindExpression'
+    { _keName :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'KindExpression' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'keName'
+kindExpression
+    :: KindExpression
+kindExpression =
+    KindExpression'
+    { _keName = Nothing
+    }
+
+-- | The name of the kind.
+keName :: Lens' KindExpression (Maybe Text)
+keName = lens _keName (\ s a -> s{_keName = a})
+
+instance FromJSON KindExpression where
+        parseJSON
+          = withObject "KindExpression"
+              (\ o -> KindExpression' <$> (o .:? "name"))
+
+instance ToJSON KindExpression where
+        toJSON KindExpression'{..}
+          = object (catMaybes [("name" .=) <$> _keName])
+
+-- | 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 options shared by read requests.
+--
+-- /See:/ 'readOptions' smart constructor.
+data ReadOptions = ReadOptions'
+    { _roReadConsistency :: !(Maybe ReadOptionsReadConsistency)
+    , _roTransaction     :: !(Maybe Bytes)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReadOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'roReadConsistency'
+--
+-- * 'roTransaction'
+readOptions
+    :: ReadOptions
+readOptions =
+    ReadOptions'
+    { _roReadConsistency = Nothing
+    , _roTransaction = Nothing
+    }
+
+-- | The non-transactional read consistency to use. Cannot be set to
+-- \`STRONG\` for global queries.
+roReadConsistency :: Lens' ReadOptions (Maybe ReadOptionsReadConsistency)
+roReadConsistency
+  = lens _roReadConsistency
+      (\ s a -> s{_roReadConsistency = a})
+
+-- | The identifier of the transaction in which to read. A transaction
+-- identifier is returned by a call to Datastore.BeginTransaction.
+roTransaction :: Lens' ReadOptions (Maybe ByteString)
+roTransaction
+  = lens _roTransaction
+      (\ s a -> s{_roTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON ReadOptions where
+        parseJSON
+          = withObject "ReadOptions"
+              (\ o ->
+                 ReadOptions' <$>
+                   (o .:? "readConsistency") <*> (o .:? "transaction"))
+
+instance ToJSON ReadOptions where
+        toJSON ReadOptions'{..}
+          = object
+              (catMaybes
+                 [("readConsistency" .=) <$> _roReadConsistency,
+                  ("transaction" .=) <$> _roTransaction])
+
+-- | Identifies a subset of entities in a project. This is specified as
+-- combinations of kinds and namespaces (either or both of which may be
+-- all, as described in the following examples). Example usage: Entire
+-- project: kinds=[], namespace_ids=[] Kinds Foo and Bar in all namespaces:
+-- kinds=[\'Foo\', \'Bar\'], namespace_ids=[] Kinds Foo and Bar only in the
+-- default namespace: kinds=[\'Foo\', \'Bar\'], namespace_ids=[\'\'] Kinds
+-- Foo and Bar in both the default and Baz namespaces: kinds=[\'Foo\',
+-- \'Bar\'], namespace_ids=[\'\', \'Baz\'] The entire Baz namespace:
+-- kinds=[], namespace_ids=[\'Baz\']
+--
+-- /See:/ 'googleDatastoreAdminV1EntityFilter' smart constructor.
+data GoogleDatastoreAdminV1EntityFilter = GoogleDatastoreAdminV1EntityFilter'
+    { _gdavefNamespaceIds :: !(Maybe [Text])
+    , _gdavefKinds        :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1EntityFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavefNamespaceIds'
+--
+-- * 'gdavefKinds'
+googleDatastoreAdminV1EntityFilter
+    :: GoogleDatastoreAdminV1EntityFilter
+googleDatastoreAdminV1EntityFilter =
+    GoogleDatastoreAdminV1EntityFilter'
+    { _gdavefNamespaceIds = Nothing
+    , _gdavefKinds = Nothing
+    }
+
+-- | An empty list represents all namespaces. This is the preferred usage for
+-- projects that don\'t use namespaces. An empty string element represents
+-- the default namespace. This should be used if the project has data in
+-- non-default namespaces, but doesn\'t want to include them. Each
+-- namespace in this list must be unique.
+gdavefNamespaceIds :: Lens' GoogleDatastoreAdminV1EntityFilter [Text]
+gdavefNamespaceIds
+  = lens _gdavefNamespaceIds
+      (\ s a -> s{_gdavefNamespaceIds = a})
+      . _Default
+      . _Coerce
+
+-- | If empty, then this represents all kinds.
+gdavefKinds :: Lens' GoogleDatastoreAdminV1EntityFilter [Text]
+gdavefKinds
+  = lens _gdavefKinds (\ s a -> s{_gdavefKinds = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON GoogleDatastoreAdminV1EntityFilter
+         where
+        parseJSON
+          = withObject "GoogleDatastoreAdminV1EntityFilter"
+              (\ o ->
+                 GoogleDatastoreAdminV1EntityFilter' <$>
+                   (o .:? "namespaceIds" .!= mempty) <*>
+                     (o .:? "kinds" .!= mempty))
+
+instance ToJSON GoogleDatastoreAdminV1EntityFilter
+         where
+        toJSON GoogleDatastoreAdminV1EntityFilter'{..}
+          = object
+              (catMaybes
+                 [("namespaceIds" .=) <$> _gdavefNamespaceIds,
+                  ("kinds" .=) <$> _gdavefKinds])
+
+-- | The response for Datastore.Rollback. (an empty message).
+--
+-- /See:/ 'rollbackResponse' smart constructor.
+data RollbackResponse =
+    RollbackResponse'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RollbackResponse' with the minimum fields required to make a request.
+--
+rollbackResponse
+    :: RollbackResponse
+rollbackResponse = RollbackResponse'
+
+instance FromJSON RollbackResponse where
+        parseJSON
+          = withObject "RollbackResponse"
+              (\ o -> pure RollbackResponse')
+
+instance ToJSON RollbackResponse where
+        toJSON = const emptyObject
+
+-- | A representation of a property in a projection.
+--
+-- /See:/ 'projection' smart constructor.
+newtype Projection = Projection'
+    { _pProperty :: Maybe PropertyReference
+    } 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:
+--
+-- * 'pProperty'
+projection
+    :: Projection
+projection =
+    Projection'
+    { _pProperty = Nothing
+    }
+
+-- | The property to project.
+pProperty :: Lens' Projection (Maybe PropertyReference)
+pProperty
+  = lens _pProperty (\ s a -> s{_pProperty = a})
+
+instance FromJSON Projection where
+        parseJSON
+          = withObject "Projection"
+              (\ o -> Projection' <$> (o .:? "property"))
+
+instance ToJSON Projection where
+        toJSON Projection'{..}
+          = object (catMaybes [("property" .=) <$> _pProperty])
+
+-- | The response for Datastore.ReserveIds.
+--
+-- /See:/ 'reserveIdsResponse' smart constructor.
+data ReserveIdsResponse =
+    ReserveIdsResponse'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReserveIdsResponse' with the minimum fields required to make a request.
+--
+reserveIdsResponse
+    :: ReserveIdsResponse
+reserveIdsResponse = ReserveIdsResponse'
+
+instance FromJSON ReserveIdsResponse where
+        parseJSON
+          = withObject "ReserveIdsResponse"
+              (\ o -> pure ReserveIdsResponse')
+
+instance ToJSON ReserveIdsResponse where
+        toJSON = const emptyObject
+
+-- | A holder for any type of filter.
+--
+-- /See:/ 'filter'' smart constructor.
+data Filter = Filter'
+    { _fCompositeFilter :: !(Maybe CompositeFilter)
+    , _fPropertyFilter  :: !(Maybe PropertyFilter)
+    } 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'
+--
+-- * 'fPropertyFilter'
+filter'
+    :: Filter
+filter' =
+    Filter'
+    { _fCompositeFilter = Nothing
+    , _fPropertyFilter = Nothing
+    }
+
+-- | A composite filter.
+fCompositeFilter :: Lens' Filter (Maybe CompositeFilter)
+fCompositeFilter
+  = lens _fCompositeFilter
+      (\ s a -> s{_fCompositeFilter = a})
+
+-- | A filter on a property.
+fPropertyFilter :: Lens' Filter (Maybe PropertyFilter)
+fPropertyFilter
+  = lens _fPropertyFilter
+      (\ s a -> s{_fPropertyFilter = a})
+
+instance FromJSON Filter where
+        parseJSON
+          = withObject "Filter"
+              (\ o ->
+                 Filter' <$>
+                   (o .:? "compositeFilter") <*>
+                     (o .:? "propertyFilter"))
+
+instance ToJSON Filter where
+        toJSON Filter'{..}
+          = object
+              (catMaybes
+                 [("compositeFilter" .=) <$> _fCompositeFilter,
+                  ("propertyFilter" .=) <$> _fPropertyFilter])
+
+-- | A minimal index definition.
+--
+-- /See:/ 'googleDatastoreAdminV1Index' smart constructor.
+data GoogleDatastoreAdminV1Index = GoogleDatastoreAdminV1Index'
+    { _gdaviState      :: !(Maybe GoogleDatastoreAdminV1IndexState)
+    , _gdaviKind       :: !(Maybe Text)
+    , _gdaviProjectId  :: !(Maybe Text)
+    , _gdaviIndexId    :: !(Maybe Text)
+    , _gdaviAncestor   :: !(Maybe GoogleDatastoreAdminV1IndexAncestor)
+    , _gdaviProperties :: !(Maybe [GoogleDatastoreAdminV1IndexedProperty])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1Index' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdaviState'
+--
+-- * 'gdaviKind'
+--
+-- * 'gdaviProjectId'
+--
+-- * 'gdaviIndexId'
+--
+-- * 'gdaviAncestor'
+--
+-- * 'gdaviProperties'
+googleDatastoreAdminV1Index
+    :: GoogleDatastoreAdminV1Index
+googleDatastoreAdminV1Index =
+    GoogleDatastoreAdminV1Index'
+    { _gdaviState = Nothing
+    , _gdaviKind = Nothing
+    , _gdaviProjectId = Nothing
+    , _gdaviIndexId = Nothing
+    , _gdaviAncestor = Nothing
+    , _gdaviProperties = Nothing
+    }
+
+-- | The state of the index. Output only.
+gdaviState :: Lens' GoogleDatastoreAdminV1Index (Maybe GoogleDatastoreAdminV1IndexState)
+gdaviState
+  = lens _gdaviState (\ s a -> s{_gdaviState = a})
+
+-- | The entity kind to which this index applies. Required.
+gdaviKind :: Lens' GoogleDatastoreAdminV1Index (Maybe Text)
+gdaviKind
+  = lens _gdaviKind (\ s a -> s{_gdaviKind = a})
+
+-- | Project ID. Output only.
+gdaviProjectId :: Lens' GoogleDatastoreAdminV1Index (Maybe Text)
+gdaviProjectId
+  = lens _gdaviProjectId
+      (\ s a -> s{_gdaviProjectId = a})
+
+-- | The resource ID of the index. Output only.
+gdaviIndexId :: Lens' GoogleDatastoreAdminV1Index (Maybe Text)
+gdaviIndexId
+  = lens _gdaviIndexId (\ s a -> s{_gdaviIndexId = a})
+
+-- | The index\'s ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED.
+-- Required.
+gdaviAncestor :: Lens' GoogleDatastoreAdminV1Index (Maybe GoogleDatastoreAdminV1IndexAncestor)
+gdaviAncestor
+  = lens _gdaviAncestor
+      (\ s a -> s{_gdaviAncestor = a})
+
+-- | An ordered sequence of property names and their index attributes.
+-- Required.
+gdaviProperties :: Lens' GoogleDatastoreAdminV1Index [GoogleDatastoreAdminV1IndexedProperty]
+gdaviProperties
+  = lens _gdaviProperties
+      (\ s a -> s{_gdaviProperties = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON GoogleDatastoreAdminV1Index where
+        parseJSON
+          = withObject "GoogleDatastoreAdminV1Index"
+              (\ o ->
+                 GoogleDatastoreAdminV1Index' <$>
+                   (o .:? "state") <*> (o .:? "kind") <*>
+                     (o .:? "projectId")
+                     <*> (o .:? "indexId")
+                     <*> (o .:? "ancestor")
+                     <*> (o .:? "properties" .!= mempty))
+
+instance ToJSON GoogleDatastoreAdminV1Index where
+        toJSON GoogleDatastoreAdminV1Index'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _gdaviState,
+                  ("kind" .=) <$> _gdaviKind,
+                  ("projectId" .=) <$> _gdaviProjectId,
+                  ("indexId" .=) <$> _gdaviIndexId,
+                  ("ancestor" .=) <$> _gdaviAncestor,
+                  ("properties" .=) <$> _gdaviProperties])
+
+-- | The client-assigned labels which were provided when the operation was
+-- created. May also include additional labels.
+--
+-- /See:/ 'googleDatastoreAdminV1beta1CommonMetadataLabels' smart constructor.
+newtype GoogleDatastoreAdminV1beta1CommonMetadataLabels = GoogleDatastoreAdminV1beta1CommonMetadataLabels'
+    { _gAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1CommonMetadataLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gAddtional'
+googleDatastoreAdminV1beta1CommonMetadataLabels
+    :: HashMap Text Text -- ^ 'gAddtional'
+    -> GoogleDatastoreAdminV1beta1CommonMetadataLabels
+googleDatastoreAdminV1beta1CommonMetadataLabels pGAddtional_ =
+    GoogleDatastoreAdminV1beta1CommonMetadataLabels'
+    { _gAddtional = _Coerce # pGAddtional_
+    }
+
+gAddtional :: Lens' GoogleDatastoreAdminV1beta1CommonMetadataLabels (HashMap Text Text)
+gAddtional
+  = lens _gAddtional (\ s a -> s{_gAddtional = a}) .
+      _Coerce
+
+instance FromJSON
+         GoogleDatastoreAdminV1beta1CommonMetadataLabels where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1beta1CommonMetadataLabels"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1CommonMetadataLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+         GoogleDatastoreAdminV1beta1CommonMetadataLabels where
+        toJSON = toJSON . _gAddtional
+
+-- | The request for Datastore.Commit.
+--
+-- /See:/ 'commitRequest' smart constructor.
+data CommitRequest = CommitRequest'
+    { _crMutations   :: !(Maybe [Mutation])
+    , _crMode        :: !(Maybe CommitRequestMode)
+    , _crTransaction :: !(Maybe Bytes)
+    } 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:
+--
+-- * 'crMutations'
+--
+-- * 'crMode'
+--
+-- * 'crTransaction'
+commitRequest
+    :: CommitRequest
+commitRequest =
+    CommitRequest'
+    { _crMutations = Nothing
+    , _crMode = Nothing
+    , _crTransaction = Nothing
+    }
+
+-- | The mutations to perform. When mode is \`TRANSACTIONAL\`, mutations
+-- affecting a single entity are applied in order. The following sequences
+-- of mutations affecting a single entity are not permitted in a single
+-- \`Commit\` request: - \`insert\` followed by \`insert\` - \`update\`
+-- followed by \`insert\` - \`upsert\` followed by \`insert\` - \`delete\`
+-- followed by \`update\` When mode is \`NON_TRANSACTIONAL\`, no two
+-- mutations may affect a single entity.
+crMutations :: Lens' CommitRequest [Mutation]
+crMutations
+  = lens _crMutations (\ s a -> s{_crMutations = a}) .
+      _Default
+      . _Coerce
+
+-- | The type of commit to perform. Defaults to \`TRANSACTIONAL\`.
+crMode :: Lens' CommitRequest (Maybe CommitRequestMode)
+crMode = lens _crMode (\ s a -> s{_crMode = a})
+
+-- | The identifier of the transaction associated with the commit. A
+-- transaction identifier is returned by a call to
+-- Datastore.BeginTransaction.
+crTransaction :: Lens' CommitRequest (Maybe ByteString)
+crTransaction
+  = lens _crTransaction
+      (\ s a -> s{_crTransaction = a})
+      . mapping _Bytes
+
+instance FromJSON CommitRequest where
+        parseJSON
+          = withObject "CommitRequest"
+              (\ o ->
+                 CommitRequest' <$>
+                   (o .:? "mutations" .!= mempty) <*> (o .:? "mode") <*>
+                     (o .:? "transaction"))
+
+instance ToJSON CommitRequest where
+        toJSON CommitRequest'{..}
+          = object
+              (catMaybes
+                 [("mutations" .=) <$> _crMutations,
+                  ("mode" .=) <$> _crMode,
+                  ("transaction" .=) <$> _crTransaction])
+
+-- | 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])
+
+-- | Metadata for ImportEntities operations.
+--
+-- /See:/ 'googleDatastoreAdminV1ImportEntitiesMetadata' smart constructor.
+data GoogleDatastoreAdminV1ImportEntitiesMetadata = GoogleDatastoreAdminV1ImportEntitiesMetadata'
+    { _gProgressBytes    :: !(Maybe GoogleDatastoreAdminV1Progress)
+    , _gProgressEntities :: !(Maybe GoogleDatastoreAdminV1Progress)
+    , _gEntityFilter     :: !(Maybe GoogleDatastoreAdminV1EntityFilter)
+    , _gInputURL         :: !(Maybe Text)
+    , _gCommon           :: !(Maybe GoogleDatastoreAdminV1CommonMetadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1ImportEntitiesMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gProgressBytes'
+--
+-- * 'gProgressEntities'
+--
+-- * 'gEntityFilter'
+--
+-- * 'gInputURL'
+--
+-- * 'gCommon'
+googleDatastoreAdminV1ImportEntitiesMetadata
+    :: GoogleDatastoreAdminV1ImportEntitiesMetadata
+googleDatastoreAdminV1ImportEntitiesMetadata =
+    GoogleDatastoreAdminV1ImportEntitiesMetadata'
+    { _gProgressBytes = Nothing
+    , _gProgressEntities = Nothing
+    , _gEntityFilter = Nothing
+    , _gInputURL = Nothing
+    , _gCommon = Nothing
+    }
+
+-- | An estimate of the number of bytes processed.
+gProgressBytes :: Lens' GoogleDatastoreAdminV1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1Progress)
+gProgressBytes
+  = lens _gProgressBytes
+      (\ s a -> s{_gProgressBytes = a})
+
+-- | An estimate of the number of entities processed.
+gProgressEntities :: Lens' GoogleDatastoreAdminV1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1Progress)
+gProgressEntities
+  = lens _gProgressEntities
+      (\ s a -> s{_gProgressEntities = a})
+
+-- | Description of which entities are being imported.
+gEntityFilter :: Lens' GoogleDatastoreAdminV1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1EntityFilter)
+gEntityFilter
+  = lens _gEntityFilter
+      (\ s a -> s{_gEntityFilter = a})
+
+-- | The location of the import metadata file. This will be the same value as
+-- the google.datastore.admin.v1.ExportEntitiesResponse.output_url field.
+gInputURL :: Lens' GoogleDatastoreAdminV1ImportEntitiesMetadata (Maybe Text)
+gInputURL
+  = lens _gInputURL (\ s a -> s{_gInputURL = a})
+
+-- | Metadata common to all Datastore Admin operations.
+gCommon :: Lens' GoogleDatastoreAdminV1ImportEntitiesMetadata (Maybe GoogleDatastoreAdminV1CommonMetadata)
+gCommon = lens _gCommon (\ s a -> s{_gCommon = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1ImportEntitiesMetadata where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1ImportEntitiesMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1ImportEntitiesMetadata' <$>
+                   (o .:? "progressBytes") <*>
+                     (o .:? "progressEntities")
+                     <*> (o .:? "entityFilter")
+                     <*> (o .:? "inputUrl")
+                     <*> (o .:? "common"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1ImportEntitiesMetadata where
+        toJSON
+          GoogleDatastoreAdminV1ImportEntitiesMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gProgressBytes,
+                  ("progressEntities" .=) <$> _gProgressEntities,
+                  ("entityFilter" .=) <$> _gEntityFilter,
+                  ("inputUrl" .=) <$> _gInputURL,
+                  ("common" .=) <$> _gCommon])
+
+-- | Measures the progress of a particular metric.
+--
+-- /See:/ 'googleDatastoreAdminV1Progress' smart constructor.
+data GoogleDatastoreAdminV1Progress = GoogleDatastoreAdminV1Progress'
+    { _gWorkCompleted :: !(Maybe (Textual Int64))
+    , _gWorkEstimated :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1Progress' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gWorkCompleted'
+--
+-- * 'gWorkEstimated'
+googleDatastoreAdminV1Progress
+    :: GoogleDatastoreAdminV1Progress
+googleDatastoreAdminV1Progress =
+    GoogleDatastoreAdminV1Progress'
+    { _gWorkCompleted = Nothing
+    , _gWorkEstimated = Nothing
+    }
+
+-- | The amount of work that has been completed. Note that this may be
+-- greater than work_estimated.
+gWorkCompleted :: Lens' GoogleDatastoreAdminV1Progress (Maybe Int64)
+gWorkCompleted
+  = lens _gWorkCompleted
+      (\ s a -> s{_gWorkCompleted = a})
+      . mapping _Coerce
+
+-- | An estimate of how much work needs to be performed. May be zero if the
+-- work estimate is unavailable.
+gWorkEstimated :: Lens' GoogleDatastoreAdminV1Progress (Maybe Int64)
+gWorkEstimated
+  = lens _gWorkEstimated
+      (\ s a -> s{_gWorkEstimated = a})
+      . mapping _Coerce
+
+instance FromJSON GoogleDatastoreAdminV1Progress
+         where
+        parseJSON
+          = withObject "GoogleDatastoreAdminV1Progress"
+              (\ o ->
+                 GoogleDatastoreAdminV1Progress' <$>
+                   (o .:? "workCompleted") <*> (o .:? "workEstimated"))
+
+instance ToJSON GoogleDatastoreAdminV1Progress where
+        toJSON GoogleDatastoreAdminV1Progress'{..}
+          = object
+              (catMaybes
+                 [("workCompleted" .=) <$> _gWorkCompleted,
+                  ("workEstimated" .=) <$> _gWorkEstimated])
+
+-- | A (kind, ID\/name) pair used to construct a key path. If either name or
+-- ID is set, the element is complete. If neither is set, the element is
+-- incomplete.
+--
+-- /See:/ 'pathElement' smart constructor.
+data PathElement = PathElement'
+    { _peKind :: !(Maybe Text)
+    , _peName :: !(Maybe Text)
+    , _peId   :: !(Maybe (Textual Int64))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PathElement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'peKind'
+--
+-- * 'peName'
+--
+-- * 'peId'
+pathElement
+    :: PathElement
+pathElement =
+    PathElement'
+    { _peKind = Nothing
+    , _peName = Nothing
+    , _peId = Nothing
+    }
+
+-- | The kind of the entity. A kind matching regex \`__.*__\` is
+-- reserved\/read-only. A kind must not contain more than 1500 bytes when
+-- UTF-8 encoded. Cannot be \`\"\"\`.
+peKind :: Lens' PathElement (Maybe Text)
+peKind = lens _peKind (\ s a -> s{_peKind = a})
+
+-- | The name of the entity. A name matching regex \`__.*__\` is
+-- reserved\/read-only. A name must not be more than 1500 bytes when UTF-8
+-- encoded. Cannot be \`\"\"\`.
+peName :: Lens' PathElement (Maybe Text)
+peName = lens _peName (\ s a -> s{_peName = a})
+
+-- | The auto-allocated ID of the entity. Never equal to zero. Values less
+-- than zero are discouraged and may not be supported in the future.
+peId :: Lens' PathElement (Maybe Int64)
+peId
+  = lens _peId (\ s a -> s{_peId = a}) .
+      mapping _Coerce
+
+instance FromJSON PathElement where
+        parseJSON
+          = withObject "PathElement"
+              (\ o ->
+                 PathElement' <$>
+                   (o .:? "kind") <*> (o .:? "name") <*> (o .:? "id"))
+
+instance ToJSON PathElement where
+        toJSON PathElement'{..}
+          = object
+              (catMaybes
+                 [("kind" .=) <$> _peKind, ("name" .=) <$> _peName,
+                  ("id" .=) <$> _peId])
+
+-- | A Datastore data object. An entity is limited to 1 megabyte when stored.
+-- That _roughly_ corresponds to a limit of 1 megabyte for the serialized
+-- form of this message.
+--
+-- /See:/ 'entity' smart constructor.
+data Entity = Entity'
+    { _eKey        :: !(Maybe Key)
+    , _eProperties :: !(Maybe EntityProperties)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Entity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eKey'
+--
+-- * 'eProperties'
+entity
+    :: Entity
+entity =
+    Entity'
+    { _eKey = Nothing
+    , _eProperties = Nothing
+    }
+
+-- | The entity\'s key. An entity must have a key, unless otherwise
+-- documented (for example, an entity in \`Value.entity_value\` may have no
+-- key). An entity\'s kind is its key path\'s last element\'s kind, or null
+-- if it has no key.
+eKey :: Lens' Entity (Maybe Key)
+eKey = lens _eKey (\ s a -> s{_eKey = a})
+
+-- | The entity\'s properties. The map\'s keys are property names. A property
+-- name matching regex \`__.*__\` is reserved. A reserved property name is
+-- forbidden in certain documented contexts. The name must not contain more
+-- than 500 characters. The name cannot be \`\"\"\`.
+eProperties :: Lens' Entity (Maybe EntityProperties)
+eProperties
+  = lens _eProperties (\ s a -> s{_eProperties = a})
+
+instance FromJSON Entity where
+        parseJSON
+          = withObject "Entity"
+              (\ o ->
+                 Entity' <$> (o .:? "key") <*> (o .:? "properties"))
+
+instance ToJSON Entity where
+        toJSON Entity'{..}
+          = object
+              (catMaybes
+                 [("key" .=) <$> _eKey,
+                  ("properties" .=) <$> _eProperties])
+
+-- | Identifies a subset of entities in a project. This is specified as
+-- combinations of kinds and namespaces (either or both of which may be
+-- all, as described in the following examples). Example usage: Entire
+-- project: kinds=[], namespace_ids=[] Kinds Foo and Bar in all namespaces:
+-- kinds=[\'Foo\', \'Bar\'], namespace_ids=[] Kinds Foo and Bar only in the
+-- default namespace: kinds=[\'Foo\', \'Bar\'], namespace_ids=[\'\'] Kinds
+-- Foo and Bar in both the default and Baz namespaces: kinds=[\'Foo\',
+-- \'Bar\'], namespace_ids=[\'\', \'Baz\'] The entire Baz namespace:
+-- kinds=[], namespace_ids=[\'Baz\']
+--
+-- /See:/ 'googleDatastoreAdminV1beta1EntityFilter' smart constructor.
+data GoogleDatastoreAdminV1beta1EntityFilter = GoogleDatastoreAdminV1beta1EntityFilter'
+    { _gNamespaceIds :: !(Maybe [Text])
+    , _gKinds        :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1EntityFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gNamespaceIds'
+--
+-- * 'gKinds'
+googleDatastoreAdminV1beta1EntityFilter
+    :: GoogleDatastoreAdminV1beta1EntityFilter
+googleDatastoreAdminV1beta1EntityFilter =
+    GoogleDatastoreAdminV1beta1EntityFilter'
+    { _gNamespaceIds = Nothing
+    , _gKinds = Nothing
+    }
+
+-- | An empty list represents all namespaces. This is the preferred usage for
+-- projects that don\'t use namespaces. An empty string element represents
+-- the default namespace. This should be used if the project has data in
+-- non-default namespaces, but doesn\'t want to include them. Each
+-- namespace in this list must be unique.
+gNamespaceIds :: Lens' GoogleDatastoreAdminV1beta1EntityFilter [Text]
+gNamespaceIds
+  = lens _gNamespaceIds
+      (\ s a -> s{_gNamespaceIds = a})
+      . _Default
+      . _Coerce
+
+-- | If empty, then this represents all kinds.
+gKinds :: Lens' GoogleDatastoreAdminV1beta1EntityFilter [Text]
+gKinds
+  = lens _gKinds (\ s a -> s{_gKinds = a}) . _Default .
+      _Coerce
+
+instance FromJSON
+         GoogleDatastoreAdminV1beta1EntityFilter where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1beta1EntityFilter"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1EntityFilter' <$>
+                   (o .:? "namespaceIds" .!= mempty) <*>
+                     (o .:? "kinds" .!= mempty))
+
+instance ToJSON
+         GoogleDatastoreAdminV1beta1EntityFilter where
+        toJSON GoogleDatastoreAdminV1beta1EntityFilter'{..}
+          = object
+              (catMaybes
+                 [("namespaceIds" .=) <$> _gNamespaceIds,
+                  ("kinds" .=) <$> _gKinds])
+
+-- | Options specific to read-only transactions.
+--
+-- /See:/ 'readOnly' smart constructor.
+data ReadOnly =
+    ReadOnly'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReadOnly' with the minimum fields required to make a request.
+--
+readOnly
+    :: ReadOnly
+readOnly = ReadOnly'
+
+instance FromJSON ReadOnly where
+        parseJSON
+          = withObject "ReadOnly" (\ o -> pure ReadOnly')
+
+instance ToJSON ReadOnly where
+        toJSON = const emptyObject
+
+-- | A property of an index.
+--
+-- /See:/ 'googleDatastoreAdminV1IndexedProperty' smart constructor.
+data GoogleDatastoreAdminV1IndexedProperty = GoogleDatastoreAdminV1IndexedProperty'
+    { _gdavipDirection :: !(Maybe GoogleDatastoreAdminV1IndexedPropertyDirection)
+    , _gdavipName      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1IndexedProperty' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdavipDirection'
+--
+-- * 'gdavipName'
+googleDatastoreAdminV1IndexedProperty
+    :: GoogleDatastoreAdminV1IndexedProperty
+googleDatastoreAdminV1IndexedProperty =
+    GoogleDatastoreAdminV1IndexedProperty'
+    { _gdavipDirection = Nothing
+    , _gdavipName = Nothing
+    }
+
+-- | The indexed property\'s direction. Must not be DIRECTION_UNSPECIFIED.
+-- Required.
+gdavipDirection :: Lens' GoogleDatastoreAdminV1IndexedProperty (Maybe GoogleDatastoreAdminV1IndexedPropertyDirection)
+gdavipDirection
+  = lens _gdavipDirection
+      (\ s a -> s{_gdavipDirection = a})
+
+-- | The property name to index. Required.
+gdavipName :: Lens' GoogleDatastoreAdminV1IndexedProperty (Maybe Text)
+gdavipName
+  = lens _gdavipName (\ s a -> s{_gdavipName = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1IndexedProperty where
+        parseJSON
+          = withObject "GoogleDatastoreAdminV1IndexedProperty"
+              (\ o ->
+                 GoogleDatastoreAdminV1IndexedProperty' <$>
+                   (o .:? "direction") <*> (o .:? "name"))
+
+instance ToJSON GoogleDatastoreAdminV1IndexedProperty
+         where
+        toJSON GoogleDatastoreAdminV1IndexedProperty'{..}
+          = object
+              (catMaybes
+                 [("direction" .=) <$> _gdavipDirection,
+                  ("name" .=) <$> _gdavipName])
+
+-- | The response for Datastore.Lookup.
+--
+-- /See:/ 'lookupResponse' smart constructor.
+data LookupResponse = LookupResponse'
+    { _lrDeferred :: !(Maybe [Key])
+    , _lrFound    :: !(Maybe [EntityResult])
+    , _lrMissing  :: !(Maybe [EntityResult])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LookupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrDeferred'
+--
+-- * 'lrFound'
+--
+-- * 'lrMissing'
+lookupResponse
+    :: LookupResponse
+lookupResponse =
+    LookupResponse'
+    { _lrDeferred = Nothing
+    , _lrFound = Nothing
+    , _lrMissing = Nothing
+    }
+
+-- | A list of keys that were not looked up due to resource constraints. The
+-- order of results in this field is undefined and has no relation to the
+-- order of the keys in the input.
+lrDeferred :: Lens' LookupResponse [Key]
+lrDeferred
+  = lens _lrDeferred (\ s a -> s{_lrDeferred = a}) .
+      _Default
+      . _Coerce
+
+-- | Entities found as \`ResultType.FULL\` entities. The order of results in
+-- this field is undefined and has no relation to the order of the keys in
+-- the input.
+lrFound :: Lens' LookupResponse [EntityResult]
+lrFound
+  = lens _lrFound (\ s a -> s{_lrFound = a}) . _Default
+      . _Coerce
+
+-- | Entities not found as \`ResultType.KEY_ONLY\` entities. The order of
+-- results in this field is undefined and has no relation to the order of
+-- the keys in the input.
+lrMissing :: Lens' LookupResponse [EntityResult]
+lrMissing
+  = lens _lrMissing (\ s a -> s{_lrMissing = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON LookupResponse where
+        parseJSON
+          = withObject "LookupResponse"
+              (\ o ->
+                 LookupResponse' <$>
+                   (o .:? "deferred" .!= mempty) <*>
+                     (o .:? "found" .!= mempty)
+                     <*> (o .:? "missing" .!= mempty))
+
+instance ToJSON LookupResponse where
+        toJSON LookupResponse'{..}
+          = object
+              (catMaybes
+                 [("deferred" .=) <$> _lrDeferred,
+                  ("found" .=) <$> _lrFound,
+                  ("missing" .=) <$> _lrMissing])
+
+-- | 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])
+
+-- | The desired order for a specific property.
+--
+-- /See:/ 'propertyOrder' smart constructor.
+data PropertyOrder = PropertyOrder'
+    { _poProperty  :: !(Maybe PropertyReference)
+    , _poDirection :: !(Maybe PropertyOrderDirection)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PropertyOrder' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'poProperty'
+--
+-- * 'poDirection'
+propertyOrder
+    :: PropertyOrder
+propertyOrder =
+    PropertyOrder'
+    { _poProperty = Nothing
+    , _poDirection = Nothing
+    }
+
+-- | The property to order by.
+poProperty :: Lens' PropertyOrder (Maybe PropertyReference)
+poProperty
+  = lens _poProperty (\ s a -> s{_poProperty = a})
+
+-- | The direction to order by. Defaults to \`ASCENDING\`.
+poDirection :: Lens' PropertyOrder (Maybe PropertyOrderDirection)
+poDirection
+  = lens _poDirection (\ s a -> s{_poDirection = a})
+
+instance FromJSON PropertyOrder where
+        parseJSON
+          = withObject "PropertyOrder"
+              (\ o ->
+                 PropertyOrder' <$>
+                   (o .:? "property") <*> (o .:? "direction"))
+
+instance ToJSON PropertyOrder where
+        toJSON PropertyOrder'{..}
+          = object
+              (catMaybes
+                 [("property" .=) <$> _poProperty,
+                  ("direction" .=) <$> _poDirection])
+
+-- | Metadata for ExportEntities operations.
+--
+-- /See:/ 'googleDatastoreAdminV1beta1ExportEntitiesMetadata' smart constructor.
+data GoogleDatastoreAdminV1beta1ExportEntitiesMetadata = GoogleDatastoreAdminV1beta1ExportEntitiesMetadata'
+    { _gooProgressBytes    :: !(Maybe GoogleDatastoreAdminV1beta1Progress)
+    , _gooOutputURLPrefix  :: !(Maybe Text)
+    , _gooProgressEntities :: !(Maybe GoogleDatastoreAdminV1beta1Progress)
+    , _gooEntityFilter     :: !(Maybe GoogleDatastoreAdminV1beta1EntityFilter)
+    , _gooCommon           :: !(Maybe GoogleDatastoreAdminV1beta1CommonMetadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GoogleDatastoreAdminV1beta1ExportEntitiesMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gooProgressBytes'
+--
+-- * 'gooOutputURLPrefix'
+--
+-- * 'gooProgressEntities'
+--
+-- * 'gooEntityFilter'
+--
+-- * 'gooCommon'
+googleDatastoreAdminV1beta1ExportEntitiesMetadata
+    :: GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+googleDatastoreAdminV1beta1ExportEntitiesMetadata =
+    GoogleDatastoreAdminV1beta1ExportEntitiesMetadata'
+    { _gooProgressBytes = Nothing
+    , _gooOutputURLPrefix = Nothing
+    , _gooProgressEntities = Nothing
+    , _gooEntityFilter = Nothing
+    , _gooCommon = Nothing
+    }
+
+-- | An estimate of the number of bytes processed.
+gooProgressBytes :: Lens' GoogleDatastoreAdminV1beta1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1Progress)
+gooProgressBytes
+  = lens _gooProgressBytes
+      (\ s a -> s{_gooProgressBytes = a})
+
+-- | Location for the export metadata and data files. This will be the same
+-- value as the
+-- google.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_prefix
+-- field. The final output location is provided in
+-- google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url.
+gooOutputURLPrefix :: Lens' GoogleDatastoreAdminV1beta1ExportEntitiesMetadata (Maybe Text)
+gooOutputURLPrefix
+  = lens _gooOutputURLPrefix
+      (\ s a -> s{_gooOutputURLPrefix = a})
+
+-- | An estimate of the number of entities processed.
+gooProgressEntities :: Lens' GoogleDatastoreAdminV1beta1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1Progress)
+gooProgressEntities
+  = lens _gooProgressEntities
+      (\ s a -> s{_gooProgressEntities = a})
+
+-- | Description of which entities are being exported.
+gooEntityFilter :: Lens' GoogleDatastoreAdminV1beta1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1EntityFilter)
+gooEntityFilter
+  = lens _gooEntityFilter
+      (\ s a -> s{_gooEntityFilter = a})
+
+-- | Metadata common to all Datastore Admin operations.
+gooCommon :: Lens' GoogleDatastoreAdminV1beta1ExportEntitiesMetadata (Maybe GoogleDatastoreAdminV1beta1CommonMetadata)
+gooCommon
+  = lens _gooCommon (\ s a -> s{_gooCommon = a})
+
+instance FromJSON
+         GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+         where
+        parseJSON
+          = withObject
+              "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata"
+              (\ o ->
+                 GoogleDatastoreAdminV1beta1ExportEntitiesMetadata'
+                   <$>
+                   (o .:? "progressBytes") <*> (o .:? "outputUrlPrefix")
+                     <*> (o .:? "progressEntities")
+                     <*> (o .:? "entityFilter")
+                     <*> (o .:? "common"))
+
+instance ToJSON
+         GoogleDatastoreAdminV1beta1ExportEntitiesMetadata
+         where
+        toJSON
+          GoogleDatastoreAdminV1beta1ExportEntitiesMetadata'{..}
+          = object
+              (catMaybes
+                 [("progressBytes" .=) <$> _gooProgressBytes,
+                  ("outputUrlPrefix" .=) <$> _gooOutputURLPrefix,
+                  ("progressEntities" .=) <$> _gooProgressEntities,
+                  ("entityFilter" .=) <$> _gooEntityFilter,
+                  ("common" .=) <$> _gooCommon])
 
 -- | A binding parameter for a GQL query.
 --
diff --git a/gen/Network/Google/Datastore/Types/Sum.hs b/gen/Network/Google/Datastore/Types/Sum.hs
--- a/gen/Network/Google/Datastore/Types/Sum.hs
+++ b/gen/Network/Google/Datastore/Types/Sum.hs
@@ -16,7 +16,7 @@
 --
 module Network.Google.Datastore.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
 
 -- | The direction to order by. Defaults to \`ASCENDING\`.
 data PropertyOrderDirection
@@ -120,6 +120,41 @@
 instance ToJSON QueryResultBatchEntityResultType where
     toJSON = toJSONText
 
+-- | The type of the operation. Can be used as a filter in
+-- ListOperationsRequest.
+data GoogleDatastoreAdminV1beta1CommonMetadataOperationType
+    = OperationTypeUnspecified
+      -- ^ @OPERATION_TYPE_UNSPECIFIED@
+      -- Unspecified.
+    | ExportEntities
+      -- ^ @EXPORT_ENTITIES@
+      -- ExportEntities.
+    | ImportEntities
+      -- ^ @IMPORT_ENTITIES@
+      -- ImportEntities.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1beta1CommonMetadataOperationType
+
+instance FromHttpApiData GoogleDatastoreAdminV1beta1CommonMetadataOperationType where
+    parseQueryParam = \case
+        "OPERATION_TYPE_UNSPECIFIED" -> Right OperationTypeUnspecified
+        "EXPORT_ENTITIES" -> Right ExportEntities
+        "IMPORT_ENTITIES" -> Right ImportEntities
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1beta1CommonMetadataOperationType from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1beta1CommonMetadataOperationType where
+    toQueryParam = \case
+        OperationTypeUnspecified -> "OPERATION_TYPE_UNSPECIFIED"
+        ExportEntities -> "EXPORT_ENTITIES"
+        ImportEntities -> "IMPORT_ENTITIES"
+
+instance FromJSON GoogleDatastoreAdminV1beta1CommonMetadataOperationType where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1beta1CommonMetadataOperationType"
+
+instance ToJSON GoogleDatastoreAdminV1beta1CommonMetadataOperationType where
+    toJSON = toJSONText
+
 -- | The state of the query after the current batch.
 data QueryResultBatchMoreResults
     = MoreResultsTypeUnspecified
@@ -137,7 +172,7 @@
       -- cursor.
     | NoMoreResults
       -- ^ @NO_MORE_RESULTS@
-      -- The query has been exhausted.
+      -- The query is finished, and there are no more results.
       deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable QueryResultBatchMoreResults
@@ -165,6 +200,51 @@
 instance ToJSON QueryResultBatchMoreResults where
     toJSON = toJSONText
 
+-- | The type of the operation. Can be used as a filter in
+-- ListOperationsRequest.
+data GoogleDatastoreAdminV1CommonMetadataOperationType
+    = GDAVCMOTOperationTypeUnspecified
+      -- ^ @OPERATION_TYPE_UNSPECIFIED@
+      -- Unspecified.
+    | GDAVCMOTExportEntities
+      -- ^ @EXPORT_ENTITIES@
+      -- ExportEntities.
+    | GDAVCMOTImportEntities
+      -- ^ @IMPORT_ENTITIES@
+      -- ImportEntities.
+    | GDAVCMOTCreateIndex
+      -- ^ @CREATE_INDEX@
+      -- CreateIndex.
+    | GDAVCMOTDeleteIndex
+      -- ^ @DELETE_INDEX@
+      -- DeleteIndex.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1CommonMetadataOperationType
+
+instance FromHttpApiData GoogleDatastoreAdminV1CommonMetadataOperationType where
+    parseQueryParam = \case
+        "OPERATION_TYPE_UNSPECIFIED" -> Right GDAVCMOTOperationTypeUnspecified
+        "EXPORT_ENTITIES" -> Right GDAVCMOTExportEntities
+        "IMPORT_ENTITIES" -> Right GDAVCMOTImportEntities
+        "CREATE_INDEX" -> Right GDAVCMOTCreateIndex
+        "DELETE_INDEX" -> Right GDAVCMOTDeleteIndex
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1CommonMetadataOperationType from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1CommonMetadataOperationType where
+    toQueryParam = \case
+        GDAVCMOTOperationTypeUnspecified -> "OPERATION_TYPE_UNSPECIFIED"
+        GDAVCMOTExportEntities -> "EXPORT_ENTITIES"
+        GDAVCMOTImportEntities -> "IMPORT_ENTITIES"
+        GDAVCMOTCreateIndex -> "CREATE_INDEX"
+        GDAVCMOTDeleteIndex -> "DELETE_INDEX"
+
+instance FromJSON GoogleDatastoreAdminV1CommonMetadataOperationType where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1CommonMetadataOperationType"
+
+instance ToJSON GoogleDatastoreAdminV1CommonMetadataOperationType where
+    toJSON = toJSONText
+
 -- | A null value.
 data ValueNullValue
     = NullValue
@@ -189,6 +269,78 @@
 instance ToJSON ValueNullValue where
     toJSON = toJSONText
 
+-- | The indexed property\'s direction. Must not be DIRECTION_UNSPECIFIED.
+-- Required.
+data GoogleDatastoreAdminV1IndexedPropertyDirection
+    = GDAVIPDDirectionUnspecified
+      -- ^ @DIRECTION_UNSPECIFIED@
+      -- The direction is unspecified.
+    | GDAVIPDAscending
+      -- ^ @ASCENDING@
+      -- The property\'s values are indexed so as to support sequencing in
+      -- ascending order and also query by \<, >, \<=, >=, and =.
+    | GDAVIPDDescending
+      -- ^ @DESCENDING@
+      -- The property\'s values are indexed so as to support sequencing in
+      -- descending order and also query by \<, >, \<=, >=, and =.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1IndexedPropertyDirection
+
+instance FromHttpApiData GoogleDatastoreAdminV1IndexedPropertyDirection where
+    parseQueryParam = \case
+        "DIRECTION_UNSPECIFIED" -> Right GDAVIPDDirectionUnspecified
+        "ASCENDING" -> Right GDAVIPDAscending
+        "DESCENDING" -> Right GDAVIPDDescending
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1IndexedPropertyDirection from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1IndexedPropertyDirection where
+    toQueryParam = \case
+        GDAVIPDDirectionUnspecified -> "DIRECTION_UNSPECIFIED"
+        GDAVIPDAscending -> "ASCENDING"
+        GDAVIPDDescending -> "DESCENDING"
+
+instance FromJSON GoogleDatastoreAdminV1IndexedPropertyDirection where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1IndexedPropertyDirection"
+
+instance ToJSON GoogleDatastoreAdminV1IndexedPropertyDirection where
+    toJSON = toJSONText
+
+-- | The index\'s ancestor mode. Must not be ANCESTOR_MODE_UNSPECIFIED.
+-- Required.
+data GoogleDatastoreAdminV1IndexAncestor
+    = AncestorModeUnspecified
+      -- ^ @ANCESTOR_MODE_UNSPECIFIED@
+      -- The ancestor mode is unspecified.
+    | None
+      -- ^ @NONE@
+      -- Do not include the entity\'s ancestors in the index.
+    | AllAncestors
+      -- ^ @ALL_ANCESTORS@
+      -- Include all the entity\'s ancestors in the index.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1IndexAncestor
+
+instance FromHttpApiData GoogleDatastoreAdminV1IndexAncestor where
+    parseQueryParam = \case
+        "ANCESTOR_MODE_UNSPECIFIED" -> Right AncestorModeUnspecified
+        "NONE" -> Right None
+        "ALL_ANCESTORS" -> Right AllAncestors
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1IndexAncestor from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1IndexAncestor where
+    toQueryParam = \case
+        AncestorModeUnspecified -> "ANCESTOR_MODE_UNSPECIFIED"
+        None -> "NONE"
+        AllAncestors -> "ALL_ANCESTORS"
+
+instance FromJSON GoogleDatastoreAdminV1IndexAncestor where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1IndexAncestor"
+
+instance ToJSON GoogleDatastoreAdminV1IndexAncestor where
+    toJSON = toJSONText
+
 -- | The non-transactional read consistency to use. Cannot be set to
 -- \`STRONG\` for global queries.
 data ReadOptionsReadConsistency
@@ -224,6 +376,60 @@
 instance ToJSON ReadOptionsReadConsistency where
     toJSON = toJSONText
 
+-- | The state of the index. Output only.
+data GoogleDatastoreAdminV1IndexState
+    = StateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- The state is unspecified.
+    | Creating
+      -- ^ @CREATING@
+      -- The index is being created, and cannot be used by queries. There is an
+      -- active long-running operation for the index. The index is updated when
+      -- writing an entity. Some index data may exist.
+    | Ready
+      -- ^ @READY@
+      -- The index is ready to be used. The index is updated when writing an
+      -- entity. The index is fully populated from all stored entities it applies
+      -- to.
+    | Deleting
+      -- ^ @DELETING@
+      -- The index is being deleted, and cannot be used by queries. There is an
+      -- active long-running operation for the index. The index is not updated
+      -- when writing an entity. Some index data may exist.
+    | Error'
+      -- ^ @ERROR@
+      -- The index was being created or deleted, but something went wrong. The
+      -- index cannot by used by queries. There is no active long-running
+      -- operation for the index, and the most recently finished long-running
+      -- operation failed. The index is not updated when writing an entity. Some
+      -- index data may exist.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1IndexState
+
+instance FromHttpApiData GoogleDatastoreAdminV1IndexState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right StateUnspecified
+        "CREATING" -> Right Creating
+        "READY" -> Right Ready
+        "DELETING" -> Right Deleting
+        "ERROR" -> Right Error'
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1IndexState from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1IndexState where
+    toQueryParam = \case
+        StateUnspecified -> "STATE_UNSPECIFIED"
+        Creating -> "CREATING"
+        Ready -> "READY"
+        Deleting -> "DELETING"
+        Error' -> "ERROR"
+
+instance FromJSON GoogleDatastoreAdminV1IndexState where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1IndexState"
+
+instance ToJSON GoogleDatastoreAdminV1IndexState where
+    toJSON = toJSONText
+
 -- | V1 error format.
 data Xgafv
     = X1
@@ -253,6 +459,67 @@
 instance ToJSON Xgafv where
     toJSON = toJSONText
 
+-- | The current state of the Operation.
+data GoogleDatastoreAdminV1beta1CommonMetadataState
+    = GDAVCMSStateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- Unspecified.
+    | GDAVCMSInitializing
+      -- ^ @INITIALIZING@
+      -- Request is being prepared for processing.
+    | GDAVCMSProcessing
+      -- ^ @PROCESSING@
+      -- Request is actively being processed.
+    | GDAVCMSCancelling
+      -- ^ @CANCELLING@
+      -- Request is in the process of being cancelled after user called
+      -- google.longrunning.Operations.CancelOperation on the operation.
+    | GDAVCMSFinalizing
+      -- ^ @FINALIZING@
+      -- Request has been processed and is in its finalization stage.
+    | GDAVCMSSuccessful
+      -- ^ @SUCCESSFUL@
+      -- Request has completed successfully.
+    | GDAVCMSFailed
+      -- ^ @FAILED@
+      -- Request has finished being processed, but encountered an error.
+    | GDAVCMSCancelled
+      -- ^ @CANCELLED@
+      -- Request has finished being cancelled after user called
+      -- google.longrunning.Operations.CancelOperation.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1beta1CommonMetadataState
+
+instance FromHttpApiData GoogleDatastoreAdminV1beta1CommonMetadataState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right GDAVCMSStateUnspecified
+        "INITIALIZING" -> Right GDAVCMSInitializing
+        "PROCESSING" -> Right GDAVCMSProcessing
+        "CANCELLING" -> Right GDAVCMSCancelling
+        "FINALIZING" -> Right GDAVCMSFinalizing
+        "SUCCESSFUL" -> Right GDAVCMSSuccessful
+        "FAILED" -> Right GDAVCMSFailed
+        "CANCELLED" -> Right GDAVCMSCancelled
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1beta1CommonMetadataState from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1beta1CommonMetadataState where
+    toQueryParam = \case
+        GDAVCMSStateUnspecified -> "STATE_UNSPECIFIED"
+        GDAVCMSInitializing -> "INITIALIZING"
+        GDAVCMSProcessing -> "PROCESSING"
+        GDAVCMSCancelling -> "CANCELLING"
+        GDAVCMSFinalizing -> "FINALIZING"
+        GDAVCMSSuccessful -> "SUCCESSFUL"
+        GDAVCMSFailed -> "FAILED"
+        GDAVCMSCancelled -> "CANCELLED"
+
+instance FromJSON GoogleDatastoreAdminV1beta1CommonMetadataState where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1beta1CommonMetadataState"
+
+instance ToJSON GoogleDatastoreAdminV1beta1CommonMetadataState where
+    toJSON = toJSONText
+
 -- | The operator to filter by.
 data PropertyFilterOp
     = PFOOperatorUnspecified
@@ -341,4 +608,65 @@
     parseJSON = parseJSONText "CommitRequestMode"
 
 instance ToJSON CommitRequestMode where
+    toJSON = toJSONText
+
+-- | The current state of the Operation.
+data GoogleDatastoreAdminV1CommonMetadataState
+    = GStateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- Unspecified.
+    | GInitializing
+      -- ^ @INITIALIZING@
+      -- Request is being prepared for processing.
+    | GProcessing
+      -- ^ @PROCESSING@
+      -- Request is actively being processed.
+    | GCancelling
+      -- ^ @CANCELLING@
+      -- Request is in the process of being cancelled after user called
+      -- google.longrunning.Operations.CancelOperation on the operation.
+    | GFinalizing
+      -- ^ @FINALIZING@
+      -- Request has been processed and is in its finalization stage.
+    | GSuccessful
+      -- ^ @SUCCESSFUL@
+      -- Request has completed successfully.
+    | GFailed
+      -- ^ @FAILED@
+      -- Request has finished being processed, but encountered an error.
+    | GCancelled
+      -- ^ @CANCELLED@
+      -- Request has finished being cancelled after user called
+      -- google.longrunning.Operations.CancelOperation.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable GoogleDatastoreAdminV1CommonMetadataState
+
+instance FromHttpApiData GoogleDatastoreAdminV1CommonMetadataState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right GStateUnspecified
+        "INITIALIZING" -> Right GInitializing
+        "PROCESSING" -> Right GProcessing
+        "CANCELLING" -> Right GCancelling
+        "FINALIZING" -> Right GFinalizing
+        "SUCCESSFUL" -> Right GSuccessful
+        "FAILED" -> Right GFailed
+        "CANCELLED" -> Right GCancelled
+        x -> Left ("Unable to parse GoogleDatastoreAdminV1CommonMetadataState from: " <> x)
+
+instance ToHttpApiData GoogleDatastoreAdminV1CommonMetadataState where
+    toQueryParam = \case
+        GStateUnspecified -> "STATE_UNSPECIFIED"
+        GInitializing -> "INITIALIZING"
+        GProcessing -> "PROCESSING"
+        GCancelling -> "CANCELLING"
+        GFinalizing -> "FINALIZING"
+        GSuccessful -> "SUCCESSFUL"
+        GFailed -> "FAILED"
+        GCancelled -> "CANCELLED"
+
+instance FromJSON GoogleDatastoreAdminV1CommonMetadataState where
+    parseJSON = parseJSONText "GoogleDatastoreAdminV1CommonMetadataState"
+
+instance ToJSON GoogleDatastoreAdminV1CommonMetadataState where
     toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Datastore/Projects/AllocateIds.hs b/gen/Network/Google/Resource/Datastore/Projects/AllocateIds.hs
--- a/gen/Network/Google/Resource/Datastore/Projects/AllocateIds.hs
+++ b/gen/Network/Google/Resource/Datastore/Projects/AllocateIds.hs
@@ -23,7 +23,7 @@
 -- Allocates IDs for the given keys, which is useful for referencing an
 -- entity before it is inserted.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference> for @datastore.projects.allocateIds@.
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.allocateIds@.
 module Network.Google.Resource.Datastore.Projects.AllocateIds
     (
     -- * REST Resource
@@ -36,11 +36,9 @@
     -- * Request Lenses
     , paiXgafv
     , paiUploadProtocol
-    , paiPp
     , paiAccessToken
     , paiUploadType
     , paiPayload
-    , paiBearerToken
     , paiProjectId
     , paiCallback
     ) where
@@ -56,14 +54,12 @@
          CaptureMode "projectId" "allocateIds" Text :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] AllocateIdsRequest :>
-                             Post '[JSON] AllocateIdsResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] AllocateIdsRequest :>
+                         Post '[JSON] AllocateIdsResponse
 
 -- | Allocates IDs for the given keys, which is useful for referencing an
 -- entity before it is inserted.
@@ -72,11 +68,9 @@
 data ProjectsAllocateIds = ProjectsAllocateIds'
     { _paiXgafv          :: !(Maybe Xgafv)
     , _paiUploadProtocol :: !(Maybe Text)
-    , _paiPp             :: !Bool
     , _paiAccessToken    :: !(Maybe Text)
     , _paiUploadType     :: !(Maybe Text)
     , _paiPayload        :: !AllocateIdsRequest
-    , _paiBearerToken    :: !(Maybe Text)
     , _paiProjectId      :: !Text
     , _paiCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -89,16 +83,12 @@
 --
 -- * 'paiUploadProtocol'
 --
--- * 'paiPp'
---
 -- * 'paiAccessToken'
 --
 -- * 'paiUploadType'
 --
 -- * 'paiPayload'
 --
--- * 'paiBearerToken'
---
 -- * 'paiProjectId'
 --
 -- * 'paiCallback'
@@ -110,11 +100,9 @@
     ProjectsAllocateIds'
     { _paiXgafv = Nothing
     , _paiUploadProtocol = Nothing
-    , _paiPp = True
     , _paiAccessToken = Nothing
     , _paiUploadType = Nothing
     , _paiPayload = pPaiPayload_
-    , _paiBearerToken = Nothing
     , _paiProjectId = pPaiProjectId_
     , _paiCallback = Nothing
     }
@@ -129,10 +117,6 @@
   = lens _paiUploadProtocol
       (\ s a -> s{_paiUploadProtocol = a})
 
--- | Pretty-print response.
-paiPp :: Lens' ProjectsAllocateIds Bool
-paiPp = lens _paiPp (\ s a -> s{_paiPp = a})
-
 -- | OAuth access token.
 paiAccessToken :: Lens' ProjectsAllocateIds (Maybe Text)
 paiAccessToken
@@ -150,12 +134,6 @@
 paiPayload
   = lens _paiPayload (\ s a -> s{_paiPayload = a})
 
--- | OAuth bearer token.
-paiBearerToken :: Lens' ProjectsAllocateIds (Maybe Text)
-paiBearerToken
-  = lens _paiBearerToken
-      (\ s a -> s{_paiBearerToken = a})
-
 -- | The ID of the project against which to make the request.
 paiProjectId :: Lens' ProjectsAllocateIds Text
 paiProjectId
@@ -173,10 +151,8 @@
                "https://www.googleapis.com/auth/datastore"]
         requestClient ProjectsAllocateIds'{..}
           = go _paiProjectId _paiXgafv _paiUploadProtocol
-              (Just _paiPp)
               _paiAccessToken
               _paiUploadType
-              _paiBearerToken
               _paiCallback
               (Just AltJSON)
               _paiPayload
diff --git a/gen/Network/Google/Resource/Datastore/Projects/BeginTransaction.hs b/gen/Network/Google/Resource/Datastore/Projects/BeginTransaction.hs
--- a/gen/Network/Google/Resource/Datastore/Projects/BeginTransaction.hs
+++ b/gen/Network/Google/Resource/Datastore/Projects/BeginTransaction.hs
@@ -22,7 +22,7 @@
 --
 -- Begins a new transaction.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference> for @datastore.projects.beginTransaction@.
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.beginTransaction@.
 module Network.Google.Resource.Datastore.Projects.BeginTransaction
     (
     -- * REST Resource
@@ -35,11 +35,9 @@
     -- * Request Lenses
     , pbtXgafv
     , pbtUploadProtocol
-    , pbtPp
     , pbtAccessToken
     , pbtUploadType
     , pbtPayload
-    , pbtBearerToken
     , pbtProjectId
     , pbtCallback
     ) where
@@ -55,14 +53,12 @@
          CaptureMode "projectId" "beginTransaction" Text :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] BeginTransactionRequest :>
-                             Post '[JSON] BeginTransactionResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] BeginTransactionRequest :>
+                         Post '[JSON] BeginTransactionResponse
 
 -- | Begins a new transaction.
 --
@@ -70,11 +66,9 @@
 data ProjectsBeginTransaction = ProjectsBeginTransaction'
     { _pbtXgafv          :: !(Maybe Xgafv)
     , _pbtUploadProtocol :: !(Maybe Text)
-    , _pbtPp             :: !Bool
     , _pbtAccessToken    :: !(Maybe Text)
     , _pbtUploadType     :: !(Maybe Text)
     , _pbtPayload        :: !BeginTransactionRequest
-    , _pbtBearerToken    :: !(Maybe Text)
     , _pbtProjectId      :: !Text
     , _pbtCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -87,16 +81,12 @@
 --
 -- * 'pbtUploadProtocol'
 --
--- * 'pbtPp'
---
 -- * 'pbtAccessToken'
 --
 -- * 'pbtUploadType'
 --
 -- * 'pbtPayload'
 --
--- * 'pbtBearerToken'
---
 -- * 'pbtProjectId'
 --
 -- * 'pbtCallback'
@@ -108,11 +98,9 @@
     ProjectsBeginTransaction'
     { _pbtXgafv = Nothing
     , _pbtUploadProtocol = Nothing
-    , _pbtPp = True
     , _pbtAccessToken = Nothing
     , _pbtUploadType = Nothing
     , _pbtPayload = pPbtPayload_
-    , _pbtBearerToken = Nothing
     , _pbtProjectId = pPbtProjectId_
     , _pbtCallback = Nothing
     }
@@ -127,10 +115,6 @@
   = lens _pbtUploadProtocol
       (\ s a -> s{_pbtUploadProtocol = a})
 
--- | Pretty-print response.
-pbtPp :: Lens' ProjectsBeginTransaction Bool
-pbtPp = lens _pbtPp (\ s a -> s{_pbtPp = a})
-
 -- | OAuth access token.
 pbtAccessToken :: Lens' ProjectsBeginTransaction (Maybe Text)
 pbtAccessToken
@@ -148,12 +132,6 @@
 pbtPayload
   = lens _pbtPayload (\ s a -> s{_pbtPayload = a})
 
--- | OAuth bearer token.
-pbtBearerToken :: Lens' ProjectsBeginTransaction (Maybe Text)
-pbtBearerToken
-  = lens _pbtBearerToken
-      (\ s a -> s{_pbtBearerToken = a})
-
 -- | The ID of the project against which to make the request.
 pbtProjectId :: Lens' ProjectsBeginTransaction Text
 pbtProjectId
@@ -172,10 +150,8 @@
                "https://www.googleapis.com/auth/datastore"]
         requestClient ProjectsBeginTransaction'{..}
           = go _pbtProjectId _pbtXgafv _pbtUploadProtocol
-              (Just _pbtPp)
               _pbtAccessToken
               _pbtUploadType
-              _pbtBearerToken
               _pbtCallback
               (Just AltJSON)
               _pbtPayload
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Commit.hs b/gen/Network/Google/Resource/Datastore/Projects/Commit.hs
--- a/gen/Network/Google/Resource/Datastore/Projects/Commit.hs
+++ b/gen/Network/Google/Resource/Datastore/Projects/Commit.hs
@@ -23,7 +23,7 @@
 -- Commits a transaction, optionally creating, deleting or modifying some
 -- entities.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference> for @datastore.projects.commit@.
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.commit@.
 module Network.Google.Resource.Datastore.Projects.Commit
     (
     -- * REST Resource
@@ -36,11 +36,9 @@
     -- * Request Lenses
     , pcXgafv
     , pcUploadProtocol
-    , pcPp
     , pcAccessToken
     , pcUploadType
     , pcPayload
-    , pcBearerToken
     , pcProjectId
     , pcCallback
     ) where
@@ -56,14 +54,12 @@
          CaptureMode "projectId" "commit" Text :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] CommitRequest :>
-                             Post '[JSON] CommitResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CommitRequest :>
+                         Post '[JSON] CommitResponse
 
 -- | Commits a transaction, optionally creating, deleting or modifying some
 -- entities.
@@ -72,11 +68,9 @@
 data ProjectsCommit = ProjectsCommit'
     { _pcXgafv          :: !(Maybe Xgafv)
     , _pcUploadProtocol :: !(Maybe Text)
-    , _pcPp             :: !Bool
     , _pcAccessToken    :: !(Maybe Text)
     , _pcUploadType     :: !(Maybe Text)
     , _pcPayload        :: !CommitRequest
-    , _pcBearerToken    :: !(Maybe Text)
     , _pcProjectId      :: !Text
     , _pcCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -89,16 +83,12 @@
 --
 -- * 'pcUploadProtocol'
 --
--- * 'pcPp'
---
 -- * 'pcAccessToken'
 --
 -- * 'pcUploadType'
 --
 -- * 'pcPayload'
 --
--- * 'pcBearerToken'
---
 -- * 'pcProjectId'
 --
 -- * 'pcCallback'
@@ -110,11 +100,9 @@
     ProjectsCommit'
     { _pcXgafv = Nothing
     , _pcUploadProtocol = Nothing
-    , _pcPp = True
     , _pcAccessToken = Nothing
     , _pcUploadType = Nothing
     , _pcPayload = pPcPayload_
-    , _pcBearerToken = Nothing
     , _pcProjectId = pPcProjectId_
     , _pcCallback = Nothing
     }
@@ -129,10 +117,6 @@
   = lens _pcUploadProtocol
       (\ s a -> s{_pcUploadProtocol = a})
 
--- | Pretty-print response.
-pcPp :: Lens' ProjectsCommit Bool
-pcPp = lens _pcPp (\ s a -> s{_pcPp = a})
-
 -- | OAuth access token.
 pcAccessToken :: Lens' ProjectsCommit (Maybe Text)
 pcAccessToken
@@ -149,12 +133,6 @@
 pcPayload
   = lens _pcPayload (\ s a -> s{_pcPayload = a})
 
--- | OAuth bearer token.
-pcBearerToken :: Lens' ProjectsCommit (Maybe Text)
-pcBearerToken
-  = lens _pcBearerToken
-      (\ s a -> s{_pcBearerToken = a})
-
 -- | The ID of the project against which to make the request.
 pcProjectId :: Lens' ProjectsCommit Text
 pcProjectId
@@ -172,10 +150,8 @@
                "https://www.googleapis.com/auth/datastore"]
         requestClient ProjectsCommit'{..}
           = go _pcProjectId _pcXgafv _pcUploadProtocol
-              (Just _pcPp)
               _pcAccessToken
               _pcUploadType
-              _pcBearerToken
               _pcCallback
               (Just AltJSON)
               _pcPayload
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Export.hs b/gen/Network/Google/Resource/Datastore/Projects/Export.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Export.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Export
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Exports a copy of all or a subset of entities from Google Cloud
+-- Datastore to another storage system, such as Google Cloud Storage.
+-- Recent updates to entities may not be reflected in the export. The
+-- export occurs in the background and its progress can be monitored and
+-- managed via the Operation resource that is created. The output of an
+-- export may only be used once the associated operation is done. If an
+-- export operation is cancelled before completion it may leave partial
+-- data behind in Google Cloud Storage.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.export@.
+module Network.Google.Resource.Datastore.Projects.Export
+    (
+    -- * REST Resource
+      ProjectsExportResource
+
+    -- * Creating a Request
+    , projectsExport
+    , ProjectsExport
+
+    -- * Request Lenses
+    , peXgafv
+    , peUploadProtocol
+    , peAccessToken
+    , peUploadType
+    , pePayload
+    , peProjectId
+    , peCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.export@ method which the
+-- 'ProjectsExport' request conforms to.
+type ProjectsExportResource =
+     "v1" :>
+       "projects" :>
+         CaptureMode "projectId" "export" Text :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON]
+                         GoogleDatastoreAdminV1ExportEntitiesRequest
+                         :> Post '[JSON] GoogleLongrunningOperation
+
+-- | Exports a copy of all or a subset of entities from Google Cloud
+-- Datastore to another storage system, such as Google Cloud Storage.
+-- Recent updates to entities may not be reflected in the export. The
+-- export occurs in the background and its progress can be monitored and
+-- managed via the Operation resource that is created. The output of an
+-- export may only be used once the associated operation is done. If an
+-- export operation is cancelled before completion it may leave partial
+-- data behind in Google Cloud Storage.
+--
+-- /See:/ 'projectsExport' smart constructor.
+data ProjectsExport = ProjectsExport'
+    { _peXgafv          :: !(Maybe Xgafv)
+    , _peUploadProtocol :: !(Maybe Text)
+    , _peAccessToken    :: !(Maybe Text)
+    , _peUploadType     :: !(Maybe Text)
+    , _pePayload        :: !GoogleDatastoreAdminV1ExportEntitiesRequest
+    , _peProjectId      :: !Text
+    , _peCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsExport' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'peXgafv'
+--
+-- * 'peUploadProtocol'
+--
+-- * 'peAccessToken'
+--
+-- * 'peUploadType'
+--
+-- * 'pePayload'
+--
+-- * 'peProjectId'
+--
+-- * 'peCallback'
+projectsExport
+    :: GoogleDatastoreAdminV1ExportEntitiesRequest -- ^ 'pePayload'
+    -> Text -- ^ 'peProjectId'
+    -> ProjectsExport
+projectsExport pPePayload_ pPeProjectId_ =
+    ProjectsExport'
+    { _peXgafv = Nothing
+    , _peUploadProtocol = Nothing
+    , _peAccessToken = Nothing
+    , _peUploadType = Nothing
+    , _pePayload = pPePayload_
+    , _peProjectId = pPeProjectId_
+    , _peCallback = Nothing
+    }
+
+-- | V1 error format.
+peXgafv :: Lens' ProjectsExport (Maybe Xgafv)
+peXgafv = lens _peXgafv (\ s a -> s{_peXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+peUploadProtocol :: Lens' ProjectsExport (Maybe Text)
+peUploadProtocol
+  = lens _peUploadProtocol
+      (\ s a -> s{_peUploadProtocol = a})
+
+-- | OAuth access token.
+peAccessToken :: Lens' ProjectsExport (Maybe Text)
+peAccessToken
+  = lens _peAccessToken
+      (\ s a -> s{_peAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+peUploadType :: Lens' ProjectsExport (Maybe Text)
+peUploadType
+  = lens _peUploadType (\ s a -> s{_peUploadType = a})
+
+-- | Multipart request metadata.
+pePayload :: Lens' ProjectsExport GoogleDatastoreAdminV1ExportEntitiesRequest
+pePayload
+  = lens _pePayload (\ s a -> s{_pePayload = a})
+
+-- | Project ID against which to make the request.
+peProjectId :: Lens' ProjectsExport Text
+peProjectId
+  = lens _peProjectId (\ s a -> s{_peProjectId = a})
+
+-- | JSONP
+peCallback :: Lens' ProjectsExport (Maybe Text)
+peCallback
+  = lens _peCallback (\ s a -> s{_peCallback = a})
+
+instance GoogleRequest ProjectsExport where
+        type Rs ProjectsExport = GoogleLongrunningOperation
+        type Scopes ProjectsExport =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsExport'{..}
+          = go _peProjectId _peXgafv _peUploadProtocol
+              _peAccessToken
+              _peUploadType
+              _peCallback
+              (Just AltJSON)
+              _pePayload
+              datastoreService
+          where go
+                  = buildClient (Proxy :: Proxy ProjectsExportResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Import.hs b/gen/Network/Google/Resource/Datastore/Projects/Import.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Import.hs
@@ -0,0 +1,166 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Import
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Imports entities into Google Cloud Datastore. Existing entities with the
+-- same key are overwritten. The import occurs in the background and its
+-- progress can be monitored and managed via the Operation resource that is
+-- created. If an ImportEntities operation is cancelled, it is possible
+-- that a subset of the data has already been imported to Cloud Datastore.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.import@.
+module Network.Google.Resource.Datastore.Projects.Import
+    (
+    -- * REST Resource
+      ProjectsImportResource
+
+    -- * Creating a Request
+    , projectsImport
+    , ProjectsImport
+
+    -- * Request Lenses
+    , pXgafv
+    , pUploadProtocol
+    , pAccessToken
+    , pUploadType
+    , pPayload
+    , pProjectId
+    , pCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.import@ method which the
+-- 'ProjectsImport' request conforms to.
+type ProjectsImportResource =
+     "v1" :>
+       "projects" :>
+         CaptureMode "projectId" "import" Text :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON]
+                         GoogleDatastoreAdminV1ImportEntitiesRequest
+                         :> Post '[JSON] GoogleLongrunningOperation
+
+-- | Imports entities into Google Cloud Datastore. Existing entities with the
+-- same key are overwritten. The import occurs in the background and its
+-- progress can be monitored and managed via the Operation resource that is
+-- created. If an ImportEntities operation is cancelled, it is possible
+-- that a subset of the data has already been imported to Cloud Datastore.
+--
+-- /See:/ 'projectsImport' smart constructor.
+data ProjectsImport = ProjectsImport'
+    { _pXgafv          :: !(Maybe Xgafv)
+    , _pUploadProtocol :: !(Maybe Text)
+    , _pAccessToken    :: !(Maybe Text)
+    , _pUploadType     :: !(Maybe Text)
+    , _pPayload        :: !GoogleDatastoreAdminV1ImportEntitiesRequest
+    , _pProjectId      :: !Text
+    , _pCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsImport' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pXgafv'
+--
+-- * 'pUploadProtocol'
+--
+-- * 'pAccessToken'
+--
+-- * 'pUploadType'
+--
+-- * 'pPayload'
+--
+-- * 'pProjectId'
+--
+-- * 'pCallback'
+projectsImport
+    :: GoogleDatastoreAdminV1ImportEntitiesRequest -- ^ 'pPayload'
+    -> Text -- ^ 'pProjectId'
+    -> ProjectsImport
+projectsImport pPPayload_ pPProjectId_ =
+    ProjectsImport'
+    { _pXgafv = Nothing
+    , _pUploadProtocol = Nothing
+    , _pAccessToken = Nothing
+    , _pUploadType = Nothing
+    , _pPayload = pPPayload_
+    , _pProjectId = pPProjectId_
+    , _pCallback = Nothing
+    }
+
+-- | V1 error format.
+pXgafv :: Lens' ProjectsImport (Maybe Xgafv)
+pXgafv = lens _pXgafv (\ s a -> s{_pXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pUploadProtocol :: Lens' ProjectsImport (Maybe Text)
+pUploadProtocol
+  = lens _pUploadProtocol
+      (\ s a -> s{_pUploadProtocol = a})
+
+-- | OAuth access token.
+pAccessToken :: Lens' ProjectsImport (Maybe Text)
+pAccessToken
+  = lens _pAccessToken (\ s a -> s{_pAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pUploadType :: Lens' ProjectsImport (Maybe Text)
+pUploadType
+  = lens _pUploadType (\ s a -> s{_pUploadType = a})
+
+-- | Multipart request metadata.
+pPayload :: Lens' ProjectsImport GoogleDatastoreAdminV1ImportEntitiesRequest
+pPayload = lens _pPayload (\ s a -> s{_pPayload = a})
+
+-- | Project ID against which to make the request.
+pProjectId :: Lens' ProjectsImport Text
+pProjectId
+  = lens _pProjectId (\ s a -> s{_pProjectId = a})
+
+-- | JSONP
+pCallback :: Lens' ProjectsImport (Maybe Text)
+pCallback
+  = lens _pCallback (\ s a -> s{_pCallback = a})
+
+instance GoogleRequest ProjectsImport where
+        type Rs ProjectsImport = GoogleLongrunningOperation
+        type Scopes ProjectsImport =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsImport'{..}
+          = go _pProjectId _pXgafv _pUploadProtocol
+              _pAccessToken
+              _pUploadType
+              _pCallback
+              (Just AltJSON)
+              _pPayload
+              datastoreService
+          where go
+                  = buildClient (Proxy :: Proxy ProjectsImportResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Indexes/Get.hs b/gen/Network/Google/Resource/Datastore/Projects/Indexes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Indexes/Get.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Indexes.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets an index.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.indexes.get@.
+module Network.Google.Resource.Datastore.Projects.Indexes.Get
+    (
+    -- * REST Resource
+      ProjectsIndexesGetResource
+
+    -- * Creating a Request
+    , projectsIndexesGet
+    , ProjectsIndexesGet
+
+    -- * Request Lenses
+    , pigXgafv
+    , pigUploadProtocol
+    , pigAccessToken
+    , pigUploadType
+    , pigProjectId
+    , pigIndexId
+    , pigCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.indexes.get@ method which the
+-- 'ProjectsIndexesGet' request conforms to.
+type ProjectsIndexesGetResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "indexes" :>
+             Capture "indexId" Text :>
+               QueryParam "$.xgafv" Xgafv :>
+                 QueryParam "upload_protocol" Text :>
+                   QueryParam "access_token" Text :>
+                     QueryParam "uploadType" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] GoogleDatastoreAdminV1Index
+
+-- | Gets an index.
+--
+-- /See:/ 'projectsIndexesGet' smart constructor.
+data ProjectsIndexesGet = ProjectsIndexesGet'
+    { _pigXgafv          :: !(Maybe Xgafv)
+    , _pigUploadProtocol :: !(Maybe Text)
+    , _pigAccessToken    :: !(Maybe Text)
+    , _pigUploadType     :: !(Maybe Text)
+    , _pigProjectId      :: !Text
+    , _pigIndexId        :: !Text
+    , _pigCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsIndexesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pigXgafv'
+--
+-- * 'pigUploadProtocol'
+--
+-- * 'pigAccessToken'
+--
+-- * 'pigUploadType'
+--
+-- * 'pigProjectId'
+--
+-- * 'pigIndexId'
+--
+-- * 'pigCallback'
+projectsIndexesGet
+    :: Text -- ^ 'pigProjectId'
+    -> Text -- ^ 'pigIndexId'
+    -> ProjectsIndexesGet
+projectsIndexesGet pPigProjectId_ pPigIndexId_ =
+    ProjectsIndexesGet'
+    { _pigXgafv = Nothing
+    , _pigUploadProtocol = Nothing
+    , _pigAccessToken = Nothing
+    , _pigUploadType = Nothing
+    , _pigProjectId = pPigProjectId_
+    , _pigIndexId = pPigIndexId_
+    , _pigCallback = Nothing
+    }
+
+-- | V1 error format.
+pigXgafv :: Lens' ProjectsIndexesGet (Maybe Xgafv)
+pigXgafv = lens _pigXgafv (\ s a -> s{_pigXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pigUploadProtocol :: Lens' ProjectsIndexesGet (Maybe Text)
+pigUploadProtocol
+  = lens _pigUploadProtocol
+      (\ s a -> s{_pigUploadProtocol = a})
+
+-- | OAuth access token.
+pigAccessToken :: Lens' ProjectsIndexesGet (Maybe Text)
+pigAccessToken
+  = lens _pigAccessToken
+      (\ s a -> s{_pigAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pigUploadType :: Lens' ProjectsIndexesGet (Maybe Text)
+pigUploadType
+  = lens _pigUploadType
+      (\ s a -> s{_pigUploadType = a})
+
+-- | Project ID against which to make the request.
+pigProjectId :: Lens' ProjectsIndexesGet Text
+pigProjectId
+  = lens _pigProjectId (\ s a -> s{_pigProjectId = a})
+
+-- | The resource ID of the index to get.
+pigIndexId :: Lens' ProjectsIndexesGet Text
+pigIndexId
+  = lens _pigIndexId (\ s a -> s{_pigIndexId = a})
+
+-- | JSONP
+pigCallback :: Lens' ProjectsIndexesGet (Maybe Text)
+pigCallback
+  = lens _pigCallback (\ s a -> s{_pigCallback = a})
+
+instance GoogleRequest ProjectsIndexesGet where
+        type Rs ProjectsIndexesGet =
+             GoogleDatastoreAdminV1Index
+        type Scopes ProjectsIndexesGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsIndexesGet'{..}
+          = go _pigProjectId _pigIndexId _pigXgafv
+              _pigUploadProtocol
+              _pigAccessToken
+              _pigUploadType
+              _pigCallback
+              (Just AltJSON)
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIndexesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Indexes/List.hs b/gen/Network/Google/Resource/Datastore/Projects/Indexes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Indexes/List.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Indexes.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the indexes that match the specified filters. Datastore uses an
+-- eventually consistent query to fetch the list of indexes and may
+-- occasionally return stale results.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.indexes.list@.
+module Network.Google.Resource.Datastore.Projects.Indexes.List
+    (
+    -- * REST Resource
+      ProjectsIndexesListResource
+
+    -- * Creating a Request
+    , projectsIndexesList
+    , ProjectsIndexesList
+
+    -- * Request Lenses
+    , pilXgafv
+    , pilUploadProtocol
+    , pilAccessToken
+    , pilUploadType
+    , pilFilter
+    , pilPageToken
+    , pilProjectId
+    , pilPageSize
+    , pilCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.indexes.list@ method which the
+-- 'ProjectsIndexesList' request conforms to.
+type ProjectsIndexesListResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "indexes" :>
+             QueryParam "$.xgafv" Xgafv :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "filter" Text :>
+                       QueryParam "pageToken" Text :>
+                         QueryParam "pageSize" (Textual Int32) :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON]
+                                 GoogleDatastoreAdminV1ListIndexesResponse
+
+-- | Lists the indexes that match the specified filters. Datastore uses an
+-- eventually consistent query to fetch the list of indexes and may
+-- occasionally return stale results.
+--
+-- /See:/ 'projectsIndexesList' smart constructor.
+data ProjectsIndexesList = ProjectsIndexesList'
+    { _pilXgafv          :: !(Maybe Xgafv)
+    , _pilUploadProtocol :: !(Maybe Text)
+    , _pilAccessToken    :: !(Maybe Text)
+    , _pilUploadType     :: !(Maybe Text)
+    , _pilFilter         :: !(Maybe Text)
+    , _pilPageToken      :: !(Maybe Text)
+    , _pilProjectId      :: !Text
+    , _pilPageSize       :: !(Maybe (Textual Int32))
+    , _pilCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsIndexesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pilXgafv'
+--
+-- * 'pilUploadProtocol'
+--
+-- * 'pilAccessToken'
+--
+-- * 'pilUploadType'
+--
+-- * 'pilFilter'
+--
+-- * 'pilPageToken'
+--
+-- * 'pilProjectId'
+--
+-- * 'pilPageSize'
+--
+-- * 'pilCallback'
+projectsIndexesList
+    :: Text -- ^ 'pilProjectId'
+    -> ProjectsIndexesList
+projectsIndexesList pPilProjectId_ =
+    ProjectsIndexesList'
+    { _pilXgafv = Nothing
+    , _pilUploadProtocol = Nothing
+    , _pilAccessToken = Nothing
+    , _pilUploadType = Nothing
+    , _pilFilter = Nothing
+    , _pilPageToken = Nothing
+    , _pilProjectId = pPilProjectId_
+    , _pilPageSize = Nothing
+    , _pilCallback = Nothing
+    }
+
+-- | V1 error format.
+pilXgafv :: Lens' ProjectsIndexesList (Maybe Xgafv)
+pilXgafv = lens _pilXgafv (\ s a -> s{_pilXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pilUploadProtocol :: Lens' ProjectsIndexesList (Maybe Text)
+pilUploadProtocol
+  = lens _pilUploadProtocol
+      (\ s a -> s{_pilUploadProtocol = a})
+
+-- | OAuth access token.
+pilAccessToken :: Lens' ProjectsIndexesList (Maybe Text)
+pilAccessToken
+  = lens _pilAccessToken
+      (\ s a -> s{_pilAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pilUploadType :: Lens' ProjectsIndexesList (Maybe Text)
+pilUploadType
+  = lens _pilUploadType
+      (\ s a -> s{_pilUploadType = a})
+
+pilFilter :: Lens' ProjectsIndexesList (Maybe Text)
+pilFilter
+  = lens _pilFilter (\ s a -> s{_pilFilter = a})
+
+-- | The next_page_token value returned from a previous List request, if any.
+pilPageToken :: Lens' ProjectsIndexesList (Maybe Text)
+pilPageToken
+  = lens _pilPageToken (\ s a -> s{_pilPageToken = a})
+
+-- | Project ID against which to make the request.
+pilProjectId :: Lens' ProjectsIndexesList Text
+pilProjectId
+  = lens _pilProjectId (\ s a -> s{_pilProjectId = a})
+
+-- | The maximum number of items to return. If zero, then all results will be
+-- returned.
+pilPageSize :: Lens' ProjectsIndexesList (Maybe Int32)
+pilPageSize
+  = lens _pilPageSize (\ s a -> s{_pilPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+pilCallback :: Lens' ProjectsIndexesList (Maybe Text)
+pilCallback
+  = lens _pilCallback (\ s a -> s{_pilCallback = a})
+
+instance GoogleRequest ProjectsIndexesList where
+        type Rs ProjectsIndexesList =
+             GoogleDatastoreAdminV1ListIndexesResponse
+        type Scopes ProjectsIndexesList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsIndexesList'{..}
+          = go _pilProjectId _pilXgafv _pilUploadProtocol
+              _pilAccessToken
+              _pilUploadType
+              _pilFilter
+              _pilPageToken
+              _pilPageSize
+              _pilCallback
+              (Just AltJSON)
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsIndexesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Lookup.hs b/gen/Network/Google/Resource/Datastore/Projects/Lookup.hs
--- a/gen/Network/Google/Resource/Datastore/Projects/Lookup.hs
+++ b/gen/Network/Google/Resource/Datastore/Projects/Lookup.hs
@@ -22,7 +22,7 @@
 --
 -- Looks up entities by key.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference> for @datastore.projects.lookup@.
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.lookup@.
 module Network.Google.Resource.Datastore.Projects.Lookup
     (
     -- * REST Resource
@@ -35,11 +35,9 @@
     -- * Request Lenses
     , plXgafv
     , plUploadProtocol
-    , plPp
     , plAccessToken
     , plUploadType
     , plPayload
-    , plBearerToken
     , plProjectId
     , plCallback
     ) where
@@ -55,14 +53,12 @@
          CaptureMode "projectId" "lookup" Text :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] LookupRequest :>
-                             Post '[JSON] LookupResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] LookupRequest :>
+                         Post '[JSON] LookupResponse
 
 -- | Looks up entities by key.
 --
@@ -70,11 +66,9 @@
 data ProjectsLookup = ProjectsLookup'
     { _plXgafv          :: !(Maybe Xgafv)
     , _plUploadProtocol :: !(Maybe Text)
-    , _plPp             :: !Bool
     , _plAccessToken    :: !(Maybe Text)
     , _plUploadType     :: !(Maybe Text)
     , _plPayload        :: !LookupRequest
-    , _plBearerToken    :: !(Maybe Text)
     , _plProjectId      :: !Text
     , _plCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -87,16 +81,12 @@
 --
 -- * 'plUploadProtocol'
 --
--- * 'plPp'
---
 -- * 'plAccessToken'
 --
 -- * 'plUploadType'
 --
 -- * 'plPayload'
 --
--- * 'plBearerToken'
---
 -- * 'plProjectId'
 --
 -- * 'plCallback'
@@ -108,11 +98,9 @@
     ProjectsLookup'
     { _plXgafv = Nothing
     , _plUploadProtocol = Nothing
-    , _plPp = True
     , _plAccessToken = Nothing
     , _plUploadType = Nothing
     , _plPayload = pPlPayload_
-    , _plBearerToken = Nothing
     , _plProjectId = pPlProjectId_
     , _plCallback = Nothing
     }
@@ -127,10 +115,6 @@
   = lens _plUploadProtocol
       (\ s a -> s{_plUploadProtocol = a})
 
--- | Pretty-print response.
-plPp :: Lens' ProjectsLookup Bool
-plPp = lens _plPp (\ s a -> s{_plPp = a})
-
 -- | OAuth access token.
 plAccessToken :: Lens' ProjectsLookup (Maybe Text)
 plAccessToken
@@ -147,12 +131,6 @@
 plPayload
   = lens _plPayload (\ s a -> s{_plPayload = a})
 
--- | OAuth bearer token.
-plBearerToken :: Lens' ProjectsLookup (Maybe Text)
-plBearerToken
-  = lens _plBearerToken
-      (\ s a -> s{_plBearerToken = a})
-
 -- | The ID of the project against which to make the request.
 plProjectId :: Lens' ProjectsLookup Text
 plProjectId
@@ -170,10 +148,8 @@
                "https://www.googleapis.com/auth/datastore"]
         requestClient ProjectsLookup'{..}
           = go _plProjectId _plXgafv _plUploadProtocol
-              (Just _plPp)
               _plAccessToken
               _plUploadType
-              _plBearerToken
               _plCallback
               (Just AltJSON)
               _plPayload
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Operations/Cancel.hs b/gen/Network/Google/Resource/Datastore/Projects/Operations/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Operations/Cancel.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Operations.Cancel
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Starts asynchronous cancellation on a long-running operation. The server
+-- makes a best effort to cancel the operation, but success is not
+-- guaranteed. If the server doesn\'t support this method, it returns
+-- \`google.rpc.Code.UNIMPLEMENTED\`. Clients can use
+-- Operations.GetOperation or other methods to check whether the
+-- cancellation succeeded or whether the operation completed despite
+-- cancellation. On successful cancellation, the operation is not deleted;
+-- instead, it becomes an operation with an Operation.error value with a
+-- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.operations.cancel@.
+module Network.Google.Resource.Datastore.Projects.Operations.Cancel
+    (
+    -- * REST Resource
+      ProjectsOperationsCancelResource
+
+    -- * Creating a Request
+    , projectsOperationsCancel
+    , ProjectsOperationsCancel
+
+    -- * Request Lenses
+    , pocXgafv
+    , pocUploadProtocol
+    , pocAccessToken
+    , pocUploadType
+    , pocName
+    , pocCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.operations.cancel@ method which the
+-- 'ProjectsOperationsCancel' request conforms to.
+type ProjectsOperationsCancelResource =
+     "v1" :>
+       CaptureMode "name" "cancel" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Post '[JSON] Empty
+
+-- | Starts asynchronous cancellation on a long-running operation. The server
+-- makes a best effort to cancel the operation, but success is not
+-- guaranteed. If the server doesn\'t support this method, it returns
+-- \`google.rpc.Code.UNIMPLEMENTED\`. Clients can use
+-- Operations.GetOperation or other methods to check whether the
+-- cancellation succeeded or whether the operation completed despite
+-- cancellation. On successful cancellation, the operation is not deleted;
+-- instead, it becomes an operation with an Operation.error value with a
+-- google.rpc.Status.code of 1, corresponding to \`Code.CANCELLED\`.
+--
+-- /See:/ 'projectsOperationsCancel' smart constructor.
+data ProjectsOperationsCancel = ProjectsOperationsCancel'
+    { _pocXgafv          :: !(Maybe Xgafv)
+    , _pocUploadProtocol :: !(Maybe Text)
+    , _pocAccessToken    :: !(Maybe Text)
+    , _pocUploadType     :: !(Maybe Text)
+    , _pocName           :: !Text
+    , _pocCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOperationsCancel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pocXgafv'
+--
+-- * 'pocUploadProtocol'
+--
+-- * 'pocAccessToken'
+--
+-- * 'pocUploadType'
+--
+-- * 'pocName'
+--
+-- * 'pocCallback'
+projectsOperationsCancel
+    :: Text -- ^ 'pocName'
+    -> ProjectsOperationsCancel
+projectsOperationsCancel pPocName_ =
+    ProjectsOperationsCancel'
+    { _pocXgafv = Nothing
+    , _pocUploadProtocol = Nothing
+    , _pocAccessToken = Nothing
+    , _pocUploadType = Nothing
+    , _pocName = pPocName_
+    , _pocCallback = Nothing
+    }
+
+-- | V1 error format.
+pocXgafv :: Lens' ProjectsOperationsCancel (Maybe Xgafv)
+pocXgafv = lens _pocXgafv (\ s a -> s{_pocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pocUploadProtocol :: Lens' ProjectsOperationsCancel (Maybe Text)
+pocUploadProtocol
+  = lens _pocUploadProtocol
+      (\ s a -> s{_pocUploadProtocol = a})
+
+-- | OAuth access token.
+pocAccessToken :: Lens' ProjectsOperationsCancel (Maybe Text)
+pocAccessToken
+  = lens _pocAccessToken
+      (\ s a -> s{_pocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pocUploadType :: Lens' ProjectsOperationsCancel (Maybe Text)
+pocUploadType
+  = lens _pocUploadType
+      (\ s a -> s{_pocUploadType = a})
+
+-- | The name of the operation resource to be cancelled.
+pocName :: Lens' ProjectsOperationsCancel Text
+pocName = lens _pocName (\ s a -> s{_pocName = a})
+
+-- | JSONP
+pocCallback :: Lens' ProjectsOperationsCancel (Maybe Text)
+pocCallback
+  = lens _pocCallback (\ s a -> s{_pocCallback = a})
+
+instance GoogleRequest ProjectsOperationsCancel where
+        type Rs ProjectsOperationsCancel = Empty
+        type Scopes ProjectsOperationsCancel =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsOperationsCancel'{..}
+          = go _pocName _pocXgafv _pocUploadProtocol
+              _pocAccessToken
+              _pocUploadType
+              _pocCallback
+              (Just AltJSON)
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOperationsCancelResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Operations/Delete.hs b/gen/Network/Google/Resource/Datastore/Projects/Operations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Operations/Delete.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Operations.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a long-running operation. This method indicates that the client
+-- is no longer interested in the operation result. It does not cancel the
+-- operation. If the server doesn\'t support this method, it returns
+-- \`google.rpc.Code.UNIMPLEMENTED\`.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.operations.delete@.
+module Network.Google.Resource.Datastore.Projects.Operations.Delete
+    (
+    -- * REST Resource
+      ProjectsOperationsDeleteResource
+
+    -- * Creating a Request
+    , projectsOperationsDelete
+    , ProjectsOperationsDelete
+
+    -- * Request Lenses
+    , podXgafv
+    , podUploadProtocol
+    , podAccessToken
+    , podUploadType
+    , podName
+    , podCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.operations.delete@ method which the
+-- 'ProjectsOperationsDelete' request conforms to.
+type ProjectsOperationsDeleteResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes a long-running operation. This method indicates that the client
+-- is no longer interested in the operation result. It does not cancel the
+-- operation. If the server doesn\'t support this method, it returns
+-- \`google.rpc.Code.UNIMPLEMENTED\`.
+--
+-- /See:/ 'projectsOperationsDelete' smart constructor.
+data ProjectsOperationsDelete = ProjectsOperationsDelete'
+    { _podXgafv          :: !(Maybe Xgafv)
+    , _podUploadProtocol :: !(Maybe Text)
+    , _podAccessToken    :: !(Maybe Text)
+    , _podUploadType     :: !(Maybe Text)
+    , _podName           :: !Text
+    , _podCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'podXgafv'
+--
+-- * 'podUploadProtocol'
+--
+-- * 'podAccessToken'
+--
+-- * 'podUploadType'
+--
+-- * 'podName'
+--
+-- * 'podCallback'
+projectsOperationsDelete
+    :: Text -- ^ 'podName'
+    -> ProjectsOperationsDelete
+projectsOperationsDelete pPodName_ =
+    ProjectsOperationsDelete'
+    { _podXgafv = Nothing
+    , _podUploadProtocol = Nothing
+    , _podAccessToken = Nothing
+    , _podUploadType = Nothing
+    , _podName = pPodName_
+    , _podCallback = Nothing
+    }
+
+-- | V1 error format.
+podXgafv :: Lens' ProjectsOperationsDelete (Maybe Xgafv)
+podXgafv = lens _podXgafv (\ s a -> s{_podXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+podUploadProtocol :: Lens' ProjectsOperationsDelete (Maybe Text)
+podUploadProtocol
+  = lens _podUploadProtocol
+      (\ s a -> s{_podUploadProtocol = a})
+
+-- | OAuth access token.
+podAccessToken :: Lens' ProjectsOperationsDelete (Maybe Text)
+podAccessToken
+  = lens _podAccessToken
+      (\ s a -> s{_podAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+podUploadType :: Lens' ProjectsOperationsDelete (Maybe Text)
+podUploadType
+  = lens _podUploadType
+      (\ s a -> s{_podUploadType = a})
+
+-- | The name of the operation resource to be deleted.
+podName :: Lens' ProjectsOperationsDelete Text
+podName = lens _podName (\ s a -> s{_podName = a})
+
+-- | JSONP
+podCallback :: Lens' ProjectsOperationsDelete (Maybe Text)
+podCallback
+  = lens _podCallback (\ s a -> s{_podCallback = a})
+
+instance GoogleRequest ProjectsOperationsDelete where
+        type Rs ProjectsOperationsDelete = Empty
+        type Scopes ProjectsOperationsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsOperationsDelete'{..}
+          = go _podName _podXgafv _podUploadProtocol
+              _podAccessToken
+              _podUploadType
+              _podCallback
+              (Just AltJSON)
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Operations/Get.hs b/gen/Network/Google/Resource/Datastore/Projects/Operations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Operations/Get.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Operations.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the latest state of a long-running operation. Clients can use this
+-- method to poll the operation result at intervals as recommended by the
+-- API service.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.operations.get@.
+module Network.Google.Resource.Datastore.Projects.Operations.Get
+    (
+    -- * REST Resource
+      ProjectsOperationsGetResource
+
+    -- * Creating a Request
+    , projectsOperationsGet
+    , ProjectsOperationsGet
+
+    -- * Request Lenses
+    , pogXgafv
+    , pogUploadProtocol
+    , pogAccessToken
+    , pogUploadType
+    , pogName
+    , pogCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.operations.get@ method which the
+-- 'ProjectsOperationsGet' request conforms to.
+type ProjectsOperationsGetResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] GoogleLongrunningOperation
+
+-- | Gets the latest state of a long-running operation. Clients can use this
+-- method to poll the operation result at intervals as recommended by the
+-- API service.
+--
+-- /See:/ 'projectsOperationsGet' smart constructor.
+data ProjectsOperationsGet = ProjectsOperationsGet'
+    { _pogXgafv          :: !(Maybe Xgafv)
+    , _pogUploadProtocol :: !(Maybe Text)
+    , _pogAccessToken    :: !(Maybe Text)
+    , _pogUploadType     :: !(Maybe Text)
+    , _pogName           :: !Text
+    , _pogCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pogXgafv'
+--
+-- * 'pogUploadProtocol'
+--
+-- * 'pogAccessToken'
+--
+-- * 'pogUploadType'
+--
+-- * 'pogName'
+--
+-- * 'pogCallback'
+projectsOperationsGet
+    :: Text -- ^ 'pogName'
+    -> ProjectsOperationsGet
+projectsOperationsGet pPogName_ =
+    ProjectsOperationsGet'
+    { _pogXgafv = Nothing
+    , _pogUploadProtocol = Nothing
+    , _pogAccessToken = Nothing
+    , _pogUploadType = Nothing
+    , _pogName = pPogName_
+    , _pogCallback = Nothing
+    }
+
+-- | V1 error format.
+pogXgafv :: Lens' ProjectsOperationsGet (Maybe Xgafv)
+pogXgafv = lens _pogXgafv (\ s a -> s{_pogXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pogUploadProtocol :: Lens' ProjectsOperationsGet (Maybe Text)
+pogUploadProtocol
+  = lens _pogUploadProtocol
+      (\ s a -> s{_pogUploadProtocol = a})
+
+-- | OAuth access token.
+pogAccessToken :: Lens' ProjectsOperationsGet (Maybe Text)
+pogAccessToken
+  = lens _pogAccessToken
+      (\ s a -> s{_pogAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pogUploadType :: Lens' ProjectsOperationsGet (Maybe Text)
+pogUploadType
+  = lens _pogUploadType
+      (\ s a -> s{_pogUploadType = a})
+
+-- | The name of the operation resource.
+pogName :: Lens' ProjectsOperationsGet Text
+pogName = lens _pogName (\ s a -> s{_pogName = a})
+
+-- | JSONP
+pogCallback :: Lens' ProjectsOperationsGet (Maybe Text)
+pogCallback
+  = lens _pogCallback (\ s a -> s{_pogCallback = a})
+
+instance GoogleRequest ProjectsOperationsGet where
+        type Rs ProjectsOperationsGet =
+             GoogleLongrunningOperation
+        type Scopes ProjectsOperationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsOperationsGet'{..}
+          = go _pogName _pogXgafv _pogUploadProtocol
+              _pogAccessToken
+              _pogUploadType
+              _pogCallback
+              (Just AltJSON)
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Operations/List.hs b/gen/Network/Google/Resource/Datastore/Projects/Operations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/Operations/List.hs
@@ -0,0 +1,203 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.Operations.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists operations that match the specified filter in the request. If the
+-- server doesn\'t support this method, it returns \`UNIMPLEMENTED\`. NOTE:
+-- the \`name\` binding allows API services to override the binding to use
+-- different resource name schemes, such as \`users\/*\/operations\`. To
+-- override the binding, API services can add a binding such as
+-- \`\"\/v1\/{name=users\/*}\/operations\"\` to their service
+-- configuration. For backwards compatibility, the default name includes
+-- the operations collection id, however overriding users must ensure the
+-- name binding is the parent resource, without the operations collection
+-- id.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.operations.list@.
+module Network.Google.Resource.Datastore.Projects.Operations.List
+    (
+    -- * REST Resource
+      ProjectsOperationsListResource
+
+    -- * Creating a Request
+    , projectsOperationsList
+    , ProjectsOperationsList
+
+    -- * Request Lenses
+    , polXgafv
+    , polUploadProtocol
+    , polAccessToken
+    , polUploadType
+    , polName
+    , polFilter
+    , polPageToken
+    , polPageSize
+    , polCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.operations.list@ method which the
+-- 'ProjectsOperationsList' request conforms to.
+type ProjectsOperationsListResource =
+     "v1" :>
+       Capture "name" Text :>
+         "operations" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] GoogleLongrunningListOperationsResponse
+
+-- | Lists operations that match the specified filter in the request. If the
+-- server doesn\'t support this method, it returns \`UNIMPLEMENTED\`. NOTE:
+-- the \`name\` binding allows API services to override the binding to use
+-- different resource name schemes, such as \`users\/*\/operations\`. To
+-- override the binding, API services can add a binding such as
+-- \`\"\/v1\/{name=users\/*}\/operations\"\` to their service
+-- configuration. For backwards compatibility, the default name includes
+-- the operations collection id, however overriding users must ensure the
+-- name binding is the parent resource, without the operations collection
+-- id.
+--
+-- /See:/ 'projectsOperationsList' smart constructor.
+data ProjectsOperationsList = ProjectsOperationsList'
+    { _polXgafv          :: !(Maybe Xgafv)
+    , _polUploadProtocol :: !(Maybe Text)
+    , _polAccessToken    :: !(Maybe Text)
+    , _polUploadType     :: !(Maybe Text)
+    , _polName           :: !Text
+    , _polFilter         :: !(Maybe Text)
+    , _polPageToken      :: !(Maybe Text)
+    , _polPageSize       :: !(Maybe (Textual Int32))
+    , _polCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'polXgafv'
+--
+-- * 'polUploadProtocol'
+--
+-- * 'polAccessToken'
+--
+-- * 'polUploadType'
+--
+-- * 'polName'
+--
+-- * 'polFilter'
+--
+-- * 'polPageToken'
+--
+-- * 'polPageSize'
+--
+-- * 'polCallback'
+projectsOperationsList
+    :: Text -- ^ 'polName'
+    -> ProjectsOperationsList
+projectsOperationsList pPolName_ =
+    ProjectsOperationsList'
+    { _polXgafv = Nothing
+    , _polUploadProtocol = Nothing
+    , _polAccessToken = Nothing
+    , _polUploadType = Nothing
+    , _polName = pPolName_
+    , _polFilter = Nothing
+    , _polPageToken = Nothing
+    , _polPageSize = Nothing
+    , _polCallback = Nothing
+    }
+
+-- | V1 error format.
+polXgafv :: Lens' ProjectsOperationsList (Maybe Xgafv)
+polXgafv = lens _polXgafv (\ s a -> s{_polXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+polUploadProtocol :: Lens' ProjectsOperationsList (Maybe Text)
+polUploadProtocol
+  = lens _polUploadProtocol
+      (\ s a -> s{_polUploadProtocol = a})
+
+-- | OAuth access token.
+polAccessToken :: Lens' ProjectsOperationsList (Maybe Text)
+polAccessToken
+  = lens _polAccessToken
+      (\ s a -> s{_polAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+polUploadType :: Lens' ProjectsOperationsList (Maybe Text)
+polUploadType
+  = lens _polUploadType
+      (\ s a -> s{_polUploadType = a})
+
+-- | The name of the operation\'s parent resource.
+polName :: Lens' ProjectsOperationsList Text
+polName = lens _polName (\ s a -> s{_polName = a})
+
+-- | The standard list filter.
+polFilter :: Lens' ProjectsOperationsList (Maybe Text)
+polFilter
+  = lens _polFilter (\ s a -> s{_polFilter = a})
+
+-- | The standard list page token.
+polPageToken :: Lens' ProjectsOperationsList (Maybe Text)
+polPageToken
+  = lens _polPageToken (\ s a -> s{_polPageToken = a})
+
+-- | The standard list page size.
+polPageSize :: Lens' ProjectsOperationsList (Maybe Int32)
+polPageSize
+  = lens _polPageSize (\ s a -> s{_polPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+polCallback :: Lens' ProjectsOperationsList (Maybe Text)
+polCallback
+  = lens _polCallback (\ s a -> s{_polCallback = a})
+
+instance GoogleRequest ProjectsOperationsList where
+        type Rs ProjectsOperationsList =
+             GoogleLongrunningListOperationsResponse
+        type Scopes ProjectsOperationsList =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsOperationsList'{..}
+          = go _polName _polXgafv _polUploadProtocol
+              _polAccessToken
+              _polUploadType
+              _polFilter
+              _polPageToken
+              _polPageSize
+              _polCallback
+              (Just AltJSON)
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/ReserveIds.hs b/gen/Network/Google/Resource/Datastore/Projects/ReserveIds.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Datastore/Projects/ReserveIds.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Datastore.Projects.ReserveIds
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Prevents the supplied keys\' IDs from being auto-allocated by Cloud
+-- Datastore.
+--
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.reserveIds@.
+module Network.Google.Resource.Datastore.Projects.ReserveIds
+    (
+    -- * REST Resource
+      ProjectsReserveIdsResource
+
+    -- * Creating a Request
+    , projectsReserveIds
+    , ProjectsReserveIds
+
+    -- * Request Lenses
+    , priXgafv
+    , priUploadProtocol
+    , priAccessToken
+    , priUploadType
+    , priPayload
+    , priProjectId
+    , priCallback
+    ) where
+
+import           Network.Google.Datastore.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datastore.projects.reserveIds@ method which the
+-- 'ProjectsReserveIds' request conforms to.
+type ProjectsReserveIdsResource =
+     "v1" :>
+       "projects" :>
+         CaptureMode "projectId" "reserveIds" Text :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] ReserveIdsRequest :>
+                         Post '[JSON] ReserveIdsResponse
+
+-- | Prevents the supplied keys\' IDs from being auto-allocated by Cloud
+-- Datastore.
+--
+-- /See:/ 'projectsReserveIds' smart constructor.
+data ProjectsReserveIds = ProjectsReserveIds'
+    { _priXgafv          :: !(Maybe Xgafv)
+    , _priUploadProtocol :: !(Maybe Text)
+    , _priAccessToken    :: !(Maybe Text)
+    , _priUploadType     :: !(Maybe Text)
+    , _priPayload        :: !ReserveIdsRequest
+    , _priProjectId      :: !Text
+    , _priCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsReserveIds' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'priXgafv'
+--
+-- * 'priUploadProtocol'
+--
+-- * 'priAccessToken'
+--
+-- * 'priUploadType'
+--
+-- * 'priPayload'
+--
+-- * 'priProjectId'
+--
+-- * 'priCallback'
+projectsReserveIds
+    :: ReserveIdsRequest -- ^ 'priPayload'
+    -> Text -- ^ 'priProjectId'
+    -> ProjectsReserveIds
+projectsReserveIds pPriPayload_ pPriProjectId_ =
+    ProjectsReserveIds'
+    { _priXgafv = Nothing
+    , _priUploadProtocol = Nothing
+    , _priAccessToken = Nothing
+    , _priUploadType = Nothing
+    , _priPayload = pPriPayload_
+    , _priProjectId = pPriProjectId_
+    , _priCallback = Nothing
+    }
+
+-- | V1 error format.
+priXgafv :: Lens' ProjectsReserveIds (Maybe Xgafv)
+priXgafv = lens _priXgafv (\ s a -> s{_priXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+priUploadProtocol :: Lens' ProjectsReserveIds (Maybe Text)
+priUploadProtocol
+  = lens _priUploadProtocol
+      (\ s a -> s{_priUploadProtocol = a})
+
+-- | OAuth access token.
+priAccessToken :: Lens' ProjectsReserveIds (Maybe Text)
+priAccessToken
+  = lens _priAccessToken
+      (\ s a -> s{_priAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+priUploadType :: Lens' ProjectsReserveIds (Maybe Text)
+priUploadType
+  = lens _priUploadType
+      (\ s a -> s{_priUploadType = a})
+
+-- | Multipart request metadata.
+priPayload :: Lens' ProjectsReserveIds ReserveIdsRequest
+priPayload
+  = lens _priPayload (\ s a -> s{_priPayload = a})
+
+-- | The ID of the project against which to make the request.
+priProjectId :: Lens' ProjectsReserveIds Text
+priProjectId
+  = lens _priProjectId (\ s a -> s{_priProjectId = a})
+
+-- | JSONP
+priCallback :: Lens' ProjectsReserveIds (Maybe Text)
+priCallback
+  = lens _priCallback (\ s a -> s{_priCallback = a})
+
+instance GoogleRequest ProjectsReserveIds where
+        type Rs ProjectsReserveIds = ReserveIdsResponse
+        type Scopes ProjectsReserveIds =
+             '["https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/datastore"]
+        requestClient ProjectsReserveIds'{..}
+          = go _priProjectId _priXgafv _priUploadProtocol
+              _priAccessToken
+              _priUploadType
+              _priCallback
+              (Just AltJSON)
+              _priPayload
+              datastoreService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsReserveIdsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Datastore/Projects/Rollback.hs b/gen/Network/Google/Resource/Datastore/Projects/Rollback.hs
--- a/gen/Network/Google/Resource/Datastore/Projects/Rollback.hs
+++ b/gen/Network/Google/Resource/Datastore/Projects/Rollback.hs
@@ -22,7 +22,7 @@
 --
 -- Rolls back a transaction.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference> for @datastore.projects.rollback@.
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.rollback@.
 module Network.Google.Resource.Datastore.Projects.Rollback
     (
     -- * REST Resource
@@ -35,11 +35,9 @@
     -- * Request Lenses
     , prXgafv
     , prUploadProtocol
-    , prPp
     , prAccessToken
     , prUploadType
     , prPayload
-    , prBearerToken
     , prProjectId
     , prCallback
     ) where
@@ -55,14 +53,12 @@
          CaptureMode "projectId" "rollback" Text :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] RollbackRequest :>
-                             Post '[JSON] RollbackResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] RollbackRequest :>
+                         Post '[JSON] RollbackResponse
 
 -- | Rolls back a transaction.
 --
@@ -70,11 +66,9 @@
 data ProjectsRollback = ProjectsRollback'
     { _prXgafv          :: !(Maybe Xgafv)
     , _prUploadProtocol :: !(Maybe Text)
-    , _prPp             :: !Bool
     , _prAccessToken    :: !(Maybe Text)
     , _prUploadType     :: !(Maybe Text)
     , _prPayload        :: !RollbackRequest
-    , _prBearerToken    :: !(Maybe Text)
     , _prProjectId      :: !Text
     , _prCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -87,16 +81,12 @@
 --
 -- * 'prUploadProtocol'
 --
--- * 'prPp'
---
 -- * 'prAccessToken'
 --
 -- * 'prUploadType'
 --
 -- * 'prPayload'
 --
--- * 'prBearerToken'
---
 -- * 'prProjectId'
 --
 -- * 'prCallback'
@@ -108,11 +98,9 @@
     ProjectsRollback'
     { _prXgafv = Nothing
     , _prUploadProtocol = Nothing
-    , _prPp = True
     , _prAccessToken = Nothing
     , _prUploadType = Nothing
     , _prPayload = pPrPayload_
-    , _prBearerToken = Nothing
     , _prProjectId = pPrProjectId_
     , _prCallback = Nothing
     }
@@ -127,10 +115,6 @@
   = lens _prUploadProtocol
       (\ s a -> s{_prUploadProtocol = a})
 
--- | Pretty-print response.
-prPp :: Lens' ProjectsRollback Bool
-prPp = lens _prPp (\ s a -> s{_prPp = a})
-
 -- | OAuth access token.
 prAccessToken :: Lens' ProjectsRollback (Maybe Text)
 prAccessToken
@@ -147,12 +131,6 @@
 prPayload
   = lens _prPayload (\ s a -> s{_prPayload = a})
 
--- | OAuth bearer token.
-prBearerToken :: Lens' ProjectsRollback (Maybe Text)
-prBearerToken
-  = lens _prBearerToken
-      (\ s a -> s{_prBearerToken = a})
-
 -- | The ID of the project against which to make the request.
 prProjectId :: Lens' ProjectsRollback Text
 prProjectId
@@ -170,10 +148,8 @@
                "https://www.googleapis.com/auth/datastore"]
         requestClient ProjectsRollback'{..}
           = go _prProjectId _prXgafv _prUploadProtocol
-              (Just _prPp)
               _prAccessToken
               _prUploadType
-              _prBearerToken
               _prCallback
               (Just AltJSON)
               _prPayload
diff --git a/gen/Network/Google/Resource/Datastore/Projects/RunQuery.hs b/gen/Network/Google/Resource/Datastore/Projects/RunQuery.hs
--- a/gen/Network/Google/Resource/Datastore/Projects/RunQuery.hs
+++ b/gen/Network/Google/Resource/Datastore/Projects/RunQuery.hs
@@ -22,7 +22,7 @@
 --
 -- Queries for entities.
 --
--- /See:/ <https://cloud.google.com/datastore/ Google Cloud Datastore API Reference> for @datastore.projects.runQuery@.
+-- /See:/ <https://cloud.google.com/datastore/ Cloud Datastore API Reference> for @datastore.projects.runQuery@.
 module Network.Google.Resource.Datastore.Projects.RunQuery
     (
     -- * REST Resource
@@ -35,11 +35,9 @@
     -- * Request Lenses
     , prqXgafv
     , prqUploadProtocol
-    , prqPp
     , prqAccessToken
     , prqUploadType
     , prqPayload
-    , prqBearerToken
     , prqProjectId
     , prqCallback
     ) where
@@ -55,14 +53,12 @@
          CaptureMode "projectId" "runQuery" Text :>
            QueryParam "$.xgafv" Xgafv :>
              QueryParam "upload_protocol" Text :>
-               QueryParam "pp" Bool :>
-                 QueryParam "access_token" Text :>
-                   QueryParam "uploadType" Text :>
-                     QueryParam "bearer_token" Text :>
-                       QueryParam "callback" Text :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] RunQueryRequest :>
-                             Post '[JSON] RunQueryResponse
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] RunQueryRequest :>
+                         Post '[JSON] RunQueryResponse
 
 -- | Queries for entities.
 --
@@ -70,11 +66,9 @@
 data ProjectsRunQuery = ProjectsRunQuery'
     { _prqXgafv          :: !(Maybe Xgafv)
     , _prqUploadProtocol :: !(Maybe Text)
-    , _prqPp             :: !Bool
     , _prqAccessToken    :: !(Maybe Text)
     , _prqUploadType     :: !(Maybe Text)
     , _prqPayload        :: !RunQueryRequest
-    , _prqBearerToken    :: !(Maybe Text)
     , _prqProjectId      :: !Text
     , _prqCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -87,16 +81,12 @@
 --
 -- * 'prqUploadProtocol'
 --
--- * 'prqPp'
---
 -- * 'prqAccessToken'
 --
 -- * 'prqUploadType'
 --
 -- * 'prqPayload'
 --
--- * 'prqBearerToken'
---
 -- * 'prqProjectId'
 --
 -- * 'prqCallback'
@@ -108,11 +98,9 @@
     ProjectsRunQuery'
     { _prqXgafv = Nothing
     , _prqUploadProtocol = Nothing
-    , _prqPp = True
     , _prqAccessToken = Nothing
     , _prqUploadType = Nothing
     , _prqPayload = pPrqPayload_
-    , _prqBearerToken = Nothing
     , _prqProjectId = pPrqProjectId_
     , _prqCallback = Nothing
     }
@@ -127,10 +115,6 @@
   = lens _prqUploadProtocol
       (\ s a -> s{_prqUploadProtocol = a})
 
--- | Pretty-print response.
-prqPp :: Lens' ProjectsRunQuery Bool
-prqPp = lens _prqPp (\ s a -> s{_prqPp = a})
-
 -- | OAuth access token.
 prqAccessToken :: Lens' ProjectsRunQuery (Maybe Text)
 prqAccessToken
@@ -148,12 +132,6 @@
 prqPayload
   = lens _prqPayload (\ s a -> s{_prqPayload = a})
 
--- | OAuth bearer token.
-prqBearerToken :: Lens' ProjectsRunQuery (Maybe Text)
-prqBearerToken
-  = lens _prqBearerToken
-      (\ s a -> s{_prqBearerToken = a})
-
 -- | The ID of the project against which to make the request.
 prqProjectId :: Lens' ProjectsRunQuery Text
 prqProjectId
@@ -171,10 +149,8 @@
                "https://www.googleapis.com/auth/datastore"]
         requestClient ProjectsRunQuery'{..}
           = go _prqProjectId _prqXgafv _prqUploadProtocol
-              (Just _prqPp)
               _prqAccessToken
               _prqUploadType
-              _prqBearerToken
               _prqCallback
               (Just AltJSON)
               _prqPayload
diff --git a/gogol-datastore.cabal b/gogol-datastore.cabal
--- a/gogol-datastore.cabal
+++ b/gogol-datastore.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-datastore
-version:               0.3.0
+version:               0.4.0
 synopsis:              Google Cloud Datastore SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -39,7 +39,16 @@
         , Network.Google.Resource.Datastore.Projects.AllocateIds
         , Network.Google.Resource.Datastore.Projects.BeginTransaction
         , Network.Google.Resource.Datastore.Projects.Commit
+        , Network.Google.Resource.Datastore.Projects.Export
+        , Network.Google.Resource.Datastore.Projects.Import
+        , Network.Google.Resource.Datastore.Projects.Indexes.Get
+        , Network.Google.Resource.Datastore.Projects.Indexes.List
         , Network.Google.Resource.Datastore.Projects.Lookup
+        , Network.Google.Resource.Datastore.Projects.Operations.Cancel
+        , Network.Google.Resource.Datastore.Projects.Operations.Delete
+        , Network.Google.Resource.Datastore.Projects.Operations.Get
+        , Network.Google.Resource.Datastore.Projects.Operations.List
+        , Network.Google.Resource.Datastore.Projects.ReserveIds
         , Network.Google.Resource.Datastore.Projects.Rollback
         , Network.Google.Resource.Datastore.Projects.RunQuery
 
@@ -48,5 +57,5 @@
         , Network.Google.Datastore.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
