diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,367 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,28 @@
+# gogol-bigtableadmin
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.3.0`
+
+
+## Description
+
+A client library for the Google Cloud Bigtable Admin.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
+
+
+## Licence
+
+`gogol-bigtableadmin` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import           Distribution.Simple
+main = defaultMain
diff --git a/gen/Network/Google/BigtableAdmin.hs b/gen/Network/Google/BigtableAdmin.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/BigtableAdmin.hs
@@ -0,0 +1,551 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.BigtableAdmin
+-- 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)
+--
+-- -- |
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference>
+module Network.Google.BigtableAdmin
+    (
+    -- * Service Configuration
+      bigtableAdminService
+
+    -- * OAuth Scopes
+    , bigtableAdminClusterScope
+    , cloudBigtableAdminTableScope
+    , cloudPlatformReadOnlyScope
+    , bigtableAdminScope
+    , cloudPlatformScope
+    , cloudBigtableAdminScope
+    , cloudBigtableAdminClusterScope
+    , bigtableAdminTableScope
+    , bigtableAdminInstanceScope
+
+    -- * API Declaration
+    , BigtableAdminAPI
+
+    -- * Resources
+
+    -- ** bigtableadmin.operations.cancel
+    , module Network.Google.Resource.BigtableAdmin.Operations.Cancel
+
+    -- ** bigtableadmin.operations.delete
+    , module Network.Google.Resource.BigtableAdmin.Operations.Delete
+
+    -- ** bigtableadmin.operations.get
+    , module Network.Google.Resource.BigtableAdmin.Operations.Get
+
+    -- ** bigtableadmin.operations.projects.operations.list
+    , module Network.Google.Resource.BigtableAdmin.Operations.Projects.Operations.List
+
+    -- ** bigtableadmin.projects.instances.appProfiles.create
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Create
+
+    -- ** bigtableadmin.projects.instances.appProfiles.delete
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Delete
+
+    -- ** bigtableadmin.projects.instances.appProfiles.get
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Get
+
+    -- ** bigtableadmin.projects.instances.appProfiles.list
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.List
+
+    -- ** bigtableadmin.projects.instances.appProfiles.patch
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Patch
+
+    -- ** bigtableadmin.projects.instances.clusters.create
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Create
+
+    -- ** bigtableadmin.projects.instances.clusters.delete
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Delete
+
+    -- ** bigtableadmin.projects.instances.clusters.get
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Get
+
+    -- ** bigtableadmin.projects.instances.clusters.list
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.List
+
+    -- ** bigtableadmin.projects.instances.clusters.update
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Update
+
+    -- ** bigtableadmin.projects.instances.create
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Create
+
+    -- ** bigtableadmin.projects.instances.delete
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Delete
+
+    -- ** bigtableadmin.projects.instances.get
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Get
+
+    -- ** bigtableadmin.projects.instances.getIamPolicy
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.GetIAMPolicy
+
+    -- ** bigtableadmin.projects.instances.list
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.List
+
+    -- ** bigtableadmin.projects.instances.partialUpdateInstance
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.PartialUpdateInstance
+
+    -- ** bigtableadmin.projects.instances.setIamPolicy
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.SetIAMPolicy
+
+    -- ** bigtableadmin.projects.instances.tables.checkConsistency
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.CheckConsistency
+
+    -- ** bigtableadmin.projects.instances.tables.create
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Create
+
+    -- ** bigtableadmin.projects.instances.tables.delete
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Delete
+
+    -- ** bigtableadmin.projects.instances.tables.dropRowRange
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.DropRowRange
+
+    -- ** bigtableadmin.projects.instances.tables.generateConsistencyToken
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.GenerateConsistencyToken
+
+    -- ** bigtableadmin.projects.instances.tables.get
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Get
+
+    -- ** bigtableadmin.projects.instances.tables.list
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.List
+
+    -- ** bigtableadmin.projects.instances.tables.modifyColumnFamilies
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.ModifyColumnFamilies
+
+    -- ** bigtableadmin.projects.instances.testIamPermissions
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.TestIAMPermissions
+
+    -- ** bigtableadmin.projects.instances.update
+    , module Network.Google.Resource.BigtableAdmin.Projects.Instances.Update
+
+    -- * Types
+
+    -- ** SingleClusterRouting
+    , SingleClusterRouting
+    , singleClusterRouting
+    , scrAllowTransactionalWrites
+    , scrClusterId
+
+    -- ** InstanceLabels
+    , InstanceLabels
+    , instanceLabels
+    , ilAddtional
+
+    -- ** Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- ** CreateInstanceRequest
+    , CreateInstanceRequest
+    , createInstanceRequest
+    , cirParent
+    , cirInstanceId
+    , cirClusters
+    , cirInstance
+
+    -- ** AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+
+    -- ** GenerateConsistencyTokenRequest
+    , GenerateConsistencyTokenRequest
+    , generateConsistencyTokenRequest
+
+    -- ** ModifyColumnFamiliesRequest
+    , ModifyColumnFamiliesRequest
+    , modifyColumnFamiliesRequest
+    , mcfrModifications
+
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- ** ListOperationsResponse
+    , ListOperationsResponse
+    , listOperationsResponse
+    , lorNextPageToken
+    , lorOperations
+
+    -- ** CreateClusterRequest
+    , CreateClusterRequest
+    , createClusterRequest
+    , ccrParent
+    , ccrCluster
+    , ccrClusterId
+
+    -- ** GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- ** Cluster
+    , Cluster
+    , cluster
+    , cState
+    , cDefaultStorageType
+    , cLocation
+    , cServeNodes
+    , cName
+
+    -- ** Split
+    , Split
+    , split
+    , sKey
+
+    -- ** MultiClusterRoutingUseAny
+    , MultiClusterRoutingUseAny
+    , multiClusterRoutingUseAny
+
+    -- ** ClusterState
+    , ClusterState
+    , clusterState
+    , csReplicationState
+
+    -- ** Operation
+    , Operation
+    , operation
+    , oDone
+    , oError
+    , oResponse
+    , oName
+    , oMetadata
+
+    -- ** Empty
+    , Empty
+    , empty
+
+    -- ** ClusterDefaultStorageType
+    , ClusterDefaultStorageType (..)
+
+    -- ** ListAppProFilesResponse
+    , ListAppProFilesResponse
+    , listAppProFilesResponse
+    , lapfrNextPageToken
+    , lapfrFailedLocations
+    , lapfrAppProFiles
+
+    -- ** TableClusterStates
+    , TableClusterStates
+    , tableClusterStates
+    , tcsAddtional
+
+    -- ** TableColumnFamilies
+    , TableColumnFamilies
+    , tableColumnFamilies
+    , tcfAddtional
+
+    -- ** CreateTableRequest
+    , CreateTableRequest
+    , createTableRequest
+    , ctrInitialSplits
+    , ctrTableId
+    , ctrTable
+
+    -- ** CreateClusterMetadata
+    , CreateClusterMetadata
+    , createClusterMetadata
+    , ccmRequestTime
+    , ccmOriginalRequest
+    , ccmFinishTime
+
+    -- ** Union
+    , Union
+    , union
+    , uRules
+
+    -- ** StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- ** UpdateAppProFileMetadata
+    , UpdateAppProFileMetadata
+    , updateAppProFileMetadata
+
+    -- ** UpdateClusterMetadata
+    , UpdateClusterMetadata
+    , updateClusterMetadata
+    , ucmRequestTime
+    , ucmOriginalRequest
+    , ucmFinishTime
+
+    -- ** ClusterStateReplicationState
+    , ClusterStateReplicationState (..)
+
+    -- ** SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
+    -- ** InstanceType
+    , InstanceType (..)
+
+    -- ** CheckConsistencyRequest
+    , CheckConsistencyRequest
+    , checkConsistencyRequest
+    , ccrConsistencyToken
+
+    -- ** ListTablesResponse
+    , ListTablesResponse
+    , listTablesResponse
+    , ltrNextPageToken
+    , ltrTables
+
+    -- ** AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- ** PartialUpdateInstanceRequest
+    , PartialUpdateInstanceRequest
+    , partialUpdateInstanceRequest
+    , puirUpdateMask
+    , puirInstance
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** TableGranularity
+    , TableGranularity (..)
+
+    -- ** GcRule
+    , GcRule
+    , gcRule
+    , grMaxAge
+    , grUnion
+    , grIntersection
+    , grMaxNumVersions
+
+    -- ** TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- ** ClusterType
+    , ClusterType (..)
+
+    -- ** AppProFile
+    , AppProFile
+    , appProFile
+    , apfSingleClusterRouting
+    , apfEtag
+    , apfMultiClusterRoutingUseAny
+    , apfName
+    , apfDescription
+
+    -- ** CreateInstanceRequestClusters
+    , CreateInstanceRequestClusters
+    , createInstanceRequestClusters
+    , circAddtional
+
+    -- ** GenerateConsistencyTokenResponse
+    , GenerateConsistencyTokenResponse
+    , generateConsistencyTokenResponse
+    , gctrConsistencyToken
+
+    -- ** DropRowRangeRequest
+    , DropRowRangeRequest
+    , dropRowRangeRequest
+    , drrrRowKeyPrefix
+    , drrrDeleteAllDataFromTable
+
+    -- ** UpdateInstanceMetadata
+    , UpdateInstanceMetadata
+    , updateInstanceMetadata
+    , uimRequestTime
+    , uimOriginalRequest
+    , uimFinishTime
+
+    -- ** Intersection
+    , Intersection
+    , intersection
+    , iRules
+
+    -- ** ColumnFamily
+    , ColumnFamily
+    , columnFamily
+    , cfGcRule
+
+    -- ** TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- ** ListClustersResponse
+    , ListClustersResponse
+    , listClustersResponse
+    , lcrNextPageToken
+    , lcrFailedLocations
+    , lcrClusters
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- ** CreateInstanceMetadata
+    , CreateInstanceMetadata
+    , createInstanceMetadata
+    , cimRequestTime
+    , cimOriginalRequest
+    , cimFinishTime
+
+    -- ** OperationMetadata
+    , OperationMetadata
+    , operationMetadata
+    , omAddtional
+
+    -- ** AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- ** ListInstancesResponse
+    , ListInstancesResponse
+    , listInstancesResponse
+    , lirNextPageToken
+    , lirFailedLocations
+    , lirInstances
+
+    -- ** CheckConsistencyResponse
+    , CheckConsistencyResponse
+    , checkConsistencyResponse
+    , ccrConsistent
+
+    -- ** InstanceState
+    , InstanceState (..)
+
+    -- ** Modification
+    , Modification
+    , modification
+    , mDrop
+    , mCreate
+    , mId
+    , mUpdate
+
+    -- ** Table
+    , Table
+    , table
+    , tGranularity
+    , tName
+    , tClusterStates
+    , tColumnFamilies
+
+    -- ** OperationResponse
+    , OperationResponse
+    , operationResponse
+    , orAddtional
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , iState
+    , iName
+    , iDisplayName
+    , iLabels
+    , iType
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.BigtableAdmin.Operations.Cancel
+import           Network.Google.Resource.BigtableAdmin.Operations.Delete
+import           Network.Google.Resource.BigtableAdmin.Operations.Get
+import           Network.Google.Resource.BigtableAdmin.Operations.Projects.Operations.List
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Create
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Delete
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Get
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.List
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Patch
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Create
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Delete
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Get
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.List
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Update
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Create
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Delete
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Get
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.GetIAMPolicy
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.List
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.PartialUpdateInstance
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.SetIAMPolicy
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.CheckConsistency
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Create
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Delete
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.DropRowRange
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.GenerateConsistencyToken
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Get
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.List
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.ModifyColumnFamilies
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.TestIAMPermissions
+import           Network.Google.Resource.BigtableAdmin.Projects.Instances.Update
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Cloud Bigtable Admin API service.
+type BigtableAdminAPI =
+     OperationsProjectsOperationsListResource :<|>
+       OperationsGetResource
+       :<|> OperationsCancelResource
+       :<|> OperationsDeleteResource
+       :<|> ProjectsInstancesAppProFilesListResource
+       :<|> ProjectsInstancesAppProFilesPatchResource
+       :<|> ProjectsInstancesAppProFilesGetResource
+       :<|> ProjectsInstancesAppProFilesCreateResource
+       :<|> ProjectsInstancesAppProFilesDeleteResource
+       :<|> ProjectsInstancesTablesDropRowRangeResource
+       :<|> ProjectsInstancesTablesListResource
+       :<|>
+       ProjectsInstancesTablesGenerateConsistencyTokenResource
+       :<|> ProjectsInstancesTablesGetResource
+       :<|>
+       ProjectsInstancesTablesModifyColumnFamiliesResource
+       :<|> ProjectsInstancesTablesCreateResource
+       :<|> ProjectsInstancesTablesCheckConsistencyResource
+       :<|> ProjectsInstancesTablesDeleteResource
+       :<|> ProjectsInstancesClustersListResource
+       :<|> ProjectsInstancesClustersGetResource
+       :<|> ProjectsInstancesClustersCreateResource
+       :<|> ProjectsInstancesClustersDeleteResource
+       :<|> ProjectsInstancesClustersUpdateResource
+       :<|> ProjectsInstancesListResource
+       :<|> ProjectsInstancesGetIAMPolicyResource
+       :<|> ProjectsInstancesGetResource
+       :<|> ProjectsInstancesCreateResource
+       :<|> ProjectsInstancesSetIAMPolicyResource
+       :<|> ProjectsInstancesPartialUpdateInstanceResource
+       :<|> ProjectsInstancesTestIAMPermissionsResource
+       :<|> ProjectsInstancesDeleteResource
+       :<|> ProjectsInstancesUpdateResource
diff --git a/gen/Network/Google/BigtableAdmin/Types.hs b/gen/Network/Google/BigtableAdmin/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/BigtableAdmin/Types.hs
@@ -0,0 +1,421 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.BigtableAdmin.Types
+-- 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)
+--
+module Network.Google.BigtableAdmin.Types
+    (
+    -- * Service Configuration
+      bigtableAdminService
+
+    -- * OAuth Scopes
+    , bigtableAdminClusterScope
+    , cloudBigtableAdminTableScope
+    , cloudPlatformReadOnlyScope
+    , bigtableAdminScope
+    , cloudPlatformScope
+    , cloudBigtableAdminScope
+    , cloudBigtableAdminClusterScope
+    , bigtableAdminTableScope
+    , bigtableAdminInstanceScope
+
+    -- * SingleClusterRouting
+    , SingleClusterRouting
+    , singleClusterRouting
+    , scrAllowTransactionalWrites
+    , scrClusterId
+
+    -- * InstanceLabels
+    , InstanceLabels
+    , instanceLabels
+    , ilAddtional
+
+    -- * Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- * CreateInstanceRequest
+    , CreateInstanceRequest
+    , createInstanceRequest
+    , cirParent
+    , cirInstanceId
+    , cirClusters
+    , cirInstance
+
+    -- * AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+
+    -- * GenerateConsistencyTokenRequest
+    , GenerateConsistencyTokenRequest
+    , generateConsistencyTokenRequest
+
+    -- * ModifyColumnFamiliesRequest
+    , ModifyColumnFamiliesRequest
+    , modifyColumnFamiliesRequest
+    , mcfrModifications
+
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- * ListOperationsResponse
+    , ListOperationsResponse
+    , listOperationsResponse
+    , lorNextPageToken
+    , lorOperations
+
+    -- * CreateClusterRequest
+    , CreateClusterRequest
+    , createClusterRequest
+    , ccrParent
+    , ccrCluster
+    , ccrClusterId
+
+    -- * GetIAMPolicyRequest
+    , GetIAMPolicyRequest
+    , getIAMPolicyRequest
+
+    -- * Cluster
+    , Cluster
+    , cluster
+    , cState
+    , cDefaultStorageType
+    , cLocation
+    , cServeNodes
+    , cName
+
+    -- * Split
+    , Split
+    , split
+    , sKey
+
+    -- * MultiClusterRoutingUseAny
+    , MultiClusterRoutingUseAny
+    , multiClusterRoutingUseAny
+
+    -- * ClusterState
+    , ClusterState
+    , clusterState
+    , csReplicationState
+
+    -- * Operation
+    , Operation
+    , operation
+    , oDone
+    , oError
+    , oResponse
+    , oName
+    , oMetadata
+
+    -- * Empty
+    , Empty
+    , empty
+
+    -- * ClusterDefaultStorageType
+    , ClusterDefaultStorageType (..)
+
+    -- * ListAppProFilesResponse
+    , ListAppProFilesResponse
+    , listAppProFilesResponse
+    , lapfrNextPageToken
+    , lapfrFailedLocations
+    , lapfrAppProFiles
+
+    -- * TableClusterStates
+    , TableClusterStates
+    , tableClusterStates
+    , tcsAddtional
+
+    -- * TableColumnFamilies
+    , TableColumnFamilies
+    , tableColumnFamilies
+    , tcfAddtional
+
+    -- * CreateTableRequest
+    , CreateTableRequest
+    , createTableRequest
+    , ctrInitialSplits
+    , ctrTableId
+    , ctrTable
+
+    -- * CreateClusterMetadata
+    , CreateClusterMetadata
+    , createClusterMetadata
+    , ccmRequestTime
+    , ccmOriginalRequest
+    , ccmFinishTime
+
+    -- * Union
+    , Union
+    , union
+    , uRules
+
+    -- * StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- * UpdateAppProFileMetadata
+    , UpdateAppProFileMetadata
+    , updateAppProFileMetadata
+
+    -- * UpdateClusterMetadata
+    , UpdateClusterMetadata
+    , updateClusterMetadata
+    , ucmRequestTime
+    , ucmOriginalRequest
+    , ucmFinishTime
+
+    -- * ClusterStateReplicationState
+    , ClusterStateReplicationState (..)
+
+    -- * SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
+    -- * InstanceType
+    , InstanceType (..)
+
+    -- * CheckConsistencyRequest
+    , CheckConsistencyRequest
+    , checkConsistencyRequest
+    , ccrConsistencyToken
+
+    -- * ListTablesResponse
+    , ListTablesResponse
+    , listTablesResponse
+    , ltrNextPageToken
+    , ltrTables
+
+    -- * AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- * PartialUpdateInstanceRequest
+    , PartialUpdateInstanceRequest
+    , partialUpdateInstanceRequest
+    , puirUpdateMask
+    , puirInstance
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * TableGranularity
+    , TableGranularity (..)
+
+    -- * GcRule
+    , GcRule
+    , gcRule
+    , grMaxAge
+    , grUnion
+    , grIntersection
+    , grMaxNumVersions
+
+    -- * TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- * ClusterType
+    , ClusterType (..)
+
+    -- * AppProFile
+    , AppProFile
+    , appProFile
+    , apfSingleClusterRouting
+    , apfEtag
+    , apfMultiClusterRoutingUseAny
+    , apfName
+    , apfDescription
+
+    -- * CreateInstanceRequestClusters
+    , CreateInstanceRequestClusters
+    , createInstanceRequestClusters
+    , circAddtional
+
+    -- * GenerateConsistencyTokenResponse
+    , GenerateConsistencyTokenResponse
+    , generateConsistencyTokenResponse
+    , gctrConsistencyToken
+
+    -- * DropRowRangeRequest
+    , DropRowRangeRequest
+    , dropRowRangeRequest
+    , drrrRowKeyPrefix
+    , drrrDeleteAllDataFromTable
+
+    -- * UpdateInstanceMetadata
+    , UpdateInstanceMetadata
+    , updateInstanceMetadata
+    , uimRequestTime
+    , uimOriginalRequest
+    , uimFinishTime
+
+    -- * Intersection
+    , Intersection
+    , intersection
+    , iRules
+
+    -- * ColumnFamily
+    , ColumnFamily
+    , columnFamily
+    , cfGcRule
+
+    -- * TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- * ListClustersResponse
+    , ListClustersResponse
+    , listClustersResponse
+    , lcrNextPageToken
+    , lcrFailedLocations
+    , lcrClusters
+
+    -- * Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pVersion
+    , pBindings
+
+    -- * CreateInstanceMetadata
+    , CreateInstanceMetadata
+    , createInstanceMetadata
+    , cimRequestTime
+    , cimOriginalRequest
+    , cimFinishTime
+
+    -- * OperationMetadata
+    , OperationMetadata
+    , operationMetadata
+    , omAddtional
+
+    -- * AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- * ListInstancesResponse
+    , ListInstancesResponse
+    , listInstancesResponse
+    , lirNextPageToken
+    , lirFailedLocations
+    , lirInstances
+
+    -- * CheckConsistencyResponse
+    , CheckConsistencyResponse
+    , checkConsistencyResponse
+    , ccrConsistent
+
+    -- * InstanceState
+    , InstanceState (..)
+
+    -- * Modification
+    , Modification
+    , modification
+    , mDrop
+    , mCreate
+    , mId
+    , mUpdate
+
+    -- * Table
+    , Table
+    , table
+    , tGranularity
+    , tName
+    , tClusterStates
+    , tColumnFamilies
+
+    -- * OperationResponse
+    , OperationResponse
+    , operationResponse
+    , orAddtional
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- * Instance
+    , Instance
+    , instance'
+    , iState
+    , iName
+    , iDisplayName
+    , iLabels
+    , iType
+    ) where
+
+import           Network.Google.BigtableAdmin.Types.Product
+import           Network.Google.BigtableAdmin.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v2' of the Cloud Bigtable Admin API. This contains the host and root path used as a starting point for constructing service requests.
+bigtableAdminService :: ServiceConfig
+bigtableAdminService
+  = defaultService (ServiceId "bigtableadmin:v2")
+      "bigtableadmin.googleapis.com"
+
+-- | Administer your Cloud Bigtable clusters
+bigtableAdminClusterScope :: Proxy '["https://www.googleapis.com/auth/bigtable.admin.cluster"]
+bigtableAdminClusterScope = Proxy;
+
+-- | Administer your Cloud Bigtable tables
+cloudBigtableAdminTableScope :: Proxy '["https://www.googleapis.com/auth/cloud-bigtable.admin.table"]
+cloudBigtableAdminTableScope = Proxy;
+
+-- | View your data across Google Cloud Platform services
+cloudPlatformReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform.read-only"]
+cloudPlatformReadOnlyScope = Proxy;
+
+-- | Administer your Cloud Bigtable tables and clusters
+bigtableAdminScope :: Proxy '["https://www.googleapis.com/auth/bigtable.admin"]
+bigtableAdminScope = Proxy;
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
+cloudPlatformScope = Proxy;
+
+-- | Administer your Cloud Bigtable tables and clusters
+cloudBigtableAdminScope :: Proxy '["https://www.googleapis.com/auth/cloud-bigtable.admin"]
+cloudBigtableAdminScope = Proxy;
+
+-- | Administer your Cloud Bigtable clusters
+cloudBigtableAdminClusterScope :: Proxy '["https://www.googleapis.com/auth/cloud-bigtable.admin.cluster"]
+cloudBigtableAdminClusterScope = Proxy;
+
+-- | Administer your Cloud Bigtable tables
+bigtableAdminTableScope :: Proxy '["https://www.googleapis.com/auth/bigtable.admin.table"]
+bigtableAdminTableScope = Proxy;
+
+-- | Administer your Cloud Bigtable clusters
+bigtableAdminInstanceScope :: Proxy '["https://www.googleapis.com/auth/bigtable.admin.instance"]
+bigtableAdminInstanceScope = Proxy;
diff --git a/gen/Network/Google/BigtableAdmin/Types/Product.hs b/gen/Network/Google/BigtableAdmin/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/BigtableAdmin/Types/Product.hs
@@ -0,0 +1,2857 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.BigtableAdmin.Types.Product
+-- 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)
+--
+module Network.Google.BigtableAdmin.Types.Product where
+
+import           Network.Google.BigtableAdmin.Types.Sum
+import           Network.Google.Prelude
+
+-- | Unconditionally routes all read\/write requests to a specific cluster.
+-- This option preserves read-your-writes consistency, but does not improve
+-- availability.
+--
+-- /See:/ 'singleClusterRouting' smart constructor.
+data SingleClusterRouting = SingleClusterRouting'
+    { _scrAllowTransactionalWrites :: !(Maybe Bool)
+    , _scrClusterId                :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SingleClusterRouting' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scrAllowTransactionalWrites'
+--
+-- * 'scrClusterId'
+singleClusterRouting
+    :: SingleClusterRouting
+singleClusterRouting =
+    SingleClusterRouting'
+    { _scrAllowTransactionalWrites = Nothing
+    , _scrClusterId = Nothing
+    }
+
+-- | Whether or not \`CheckAndMutateRow\` and \`ReadModifyWriteRow\` requests
+-- are allowed by this app profile. It is unsafe to send these requests to
+-- the same table\/row\/column in multiple clusters.
+scrAllowTransactionalWrites :: Lens' SingleClusterRouting (Maybe Bool)
+scrAllowTransactionalWrites
+  = lens _scrAllowTransactionalWrites
+      (\ s a -> s{_scrAllowTransactionalWrites = a})
+
+-- | The cluster to which read\/write requests should be routed.
+scrClusterId :: Lens' SingleClusterRouting (Maybe Text)
+scrClusterId
+  = lens _scrClusterId (\ s a -> s{_scrClusterId = a})
+
+instance FromJSON SingleClusterRouting where
+        parseJSON
+          = withObject "SingleClusterRouting"
+              (\ o ->
+                 SingleClusterRouting' <$>
+                   (o .:? "allowTransactionalWrites") <*>
+                     (o .:? "clusterId"))
+
+instance ToJSON SingleClusterRouting where
+        toJSON SingleClusterRouting'{..}
+          = object
+              (catMaybes
+                 [("allowTransactionalWrites" .=) <$>
+                    _scrAllowTransactionalWrites,
+                  ("clusterId" .=) <$> _scrClusterId])
+
+-- | Labels are a flexible and lightweight mechanism for organizing cloud
+-- resources into groups that reflect a customer\'s organizational needs
+-- and deployment strategies. They can be used to filter resources and
+-- aggregate metrics. * Label keys must be between 1 and 63 characters long
+-- and must conform to the regular expression: \`\\p{Ll}\\p{Lo}{0,62}\`. *
+-- Label values must be between 0 and 63 characters long and must conform
+-- to the regular expression: \`[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\`. * No more
+-- than 64 labels can be associated with a given resource. * Keys and
+-- values must both be under 128 bytes.
+--
+-- /See:/ 'instanceLabels' smart constructor.
+newtype InstanceLabels = InstanceLabels'
+    { _ilAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilAddtional'
+instanceLabels
+    :: HashMap Text Text -- ^ 'ilAddtional'
+    -> InstanceLabels
+instanceLabels pIlAddtional_ =
+    InstanceLabels'
+    { _ilAddtional = _Coerce # pIlAddtional_
+    }
+
+ilAddtional :: Lens' InstanceLabels (HashMap Text Text)
+ilAddtional
+  = lens _ilAddtional (\ s a -> s{_ilAddtional = a}) .
+      _Coerce
+
+instance FromJSON InstanceLabels where
+        parseJSON
+          = withObject "InstanceLabels"
+              (\ o -> InstanceLabels' <$> (parseJSONObject o))
+
+instance ToJSON InstanceLabels where
+        toJSON = toJSON . _ilAddtional
+
+-- | 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])
+
+-- | Request message for BigtableInstanceAdmin.CreateInstance.
+--
+-- /See:/ 'createInstanceRequest' smart constructor.
+data CreateInstanceRequest = CreateInstanceRequest'
+    { _cirParent     :: !(Maybe Text)
+    , _cirInstanceId :: !(Maybe Text)
+    , _cirClusters   :: !(Maybe CreateInstanceRequestClusters)
+    , _cirInstance   :: !(Maybe Instance)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirParent'
+--
+-- * 'cirInstanceId'
+--
+-- * 'cirClusters'
+--
+-- * 'cirInstance'
+createInstanceRequest
+    :: CreateInstanceRequest
+createInstanceRequest =
+    CreateInstanceRequest'
+    { _cirParent = Nothing
+    , _cirInstanceId = Nothing
+    , _cirClusters = Nothing
+    , _cirInstance = Nothing
+    }
+
+-- | The unique name of the project in which to create the new instance.
+-- Values are of the form \`projects\/\`.
+cirParent :: Lens' CreateInstanceRequest (Maybe Text)
+cirParent
+  = lens _cirParent (\ s a -> s{_cirParent = a})
+
+-- | The ID to be used when referring to the new instance within its project,
+-- e.g., just \`myinstance\` rather than
+-- \`projects\/myproject\/instances\/myinstance\`.
+cirInstanceId :: Lens' CreateInstanceRequest (Maybe Text)
+cirInstanceId
+  = lens _cirInstanceId
+      (\ s a -> s{_cirInstanceId = a})
+
+-- | The clusters to be created within the instance, mapped by desired
+-- cluster ID, e.g., just \`mycluster\` rather than
+-- \`projects\/myproject\/instances\/myinstance\/clusters\/mycluster\`.
+-- Fields marked \`OutputOnly\` must be left blank. Currently, at most two
+-- clusters can be specified.
+cirClusters :: Lens' CreateInstanceRequest (Maybe CreateInstanceRequestClusters)
+cirClusters
+  = lens _cirClusters (\ s a -> s{_cirClusters = a})
+
+-- | The instance to create. Fields marked \`OutputOnly\` must be left blank.
+cirInstance :: Lens' CreateInstanceRequest (Maybe Instance)
+cirInstance
+  = lens _cirInstance (\ s a -> s{_cirInstance = a})
+
+instance FromJSON CreateInstanceRequest where
+        parseJSON
+          = withObject "CreateInstanceRequest"
+              (\ o ->
+                 CreateInstanceRequest' <$>
+                   (o .:? "parent") <*> (o .:? "instanceId") <*>
+                     (o .:? "clusters")
+                     <*> (o .:? "instance"))
+
+instance ToJSON CreateInstanceRequest where
+        toJSON CreateInstanceRequest'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _cirParent,
+                  ("instanceId" .=) <$> _cirInstanceId,
+                  ("clusters" .=) <$> _cirClusters,
+                  ("instance" .=) <$> _cirInstance])
+
+-- | Specifies the audit configuration for a service. The configuration
+-- determines which permission types are logged, and what identities, if
+-- any, are exempted from logging. An AuditConfig must have one or more
+-- AuditLogConfigs. If there are AuditConfigs for both \`allServices\` and
+-- a specific service, the union of the two AuditConfigs is used for that
+-- service: the log_types specified in each AuditConfig are enabled, and
+-- the exempted_members in each AuditLogConfig are exempted. Example Policy
+-- with multiple AuditConfigs: { \"audit_configs\": [ { \"service\":
+-- \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\",
+-- \"exempted_members\": [ \"user:foo\'gmail.com\" ] }, { \"log_type\":
+-- \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\":
+-- \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\":
+-- \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\":
+-- [ \"user:bar\'gmail.com\" ] } ] } ] } For fooservice, this policy
+-- enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts
+-- foo\'gmail.com from DATA_READ logging, and bar\'gmail.com from
+-- DATA_WRITE logging.
+--
+-- /See:/ 'auditConfig' smart constructor.
+data AuditConfig = AuditConfig'
+    { _acService         :: !(Maybe Text)
+    , _acAuditLogConfigs :: !(Maybe [AuditLogConfig])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acService'
+--
+-- * 'acAuditLogConfigs'
+auditConfig
+    :: AuditConfig
+auditConfig =
+    AuditConfig'
+    { _acService = Nothing
+    , _acAuditLogConfigs = Nothing
+    }
+
+-- | Specifies a service that will be enabled for audit logging. For example,
+-- \`storage.googleapis.com\`, \`cloudsql.googleapis.com\`. \`allServices\`
+-- is a special value that covers all services.
+acService :: Lens' AuditConfig (Maybe Text)
+acService
+  = lens _acService (\ s a -> s{_acService = a})
+
+-- | The configuration for logging of each type of permission.
+acAuditLogConfigs :: Lens' AuditConfig [AuditLogConfig]
+acAuditLogConfigs
+  = lens _acAuditLogConfigs
+      (\ s a -> s{_acAuditLogConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditConfig where
+        parseJSON
+          = withObject "AuditConfig"
+              (\ o ->
+                 AuditConfig' <$>
+                   (o .:? "service") <*>
+                     (o .:? "auditLogConfigs" .!= mempty))
+
+instance ToJSON AuditConfig where
+        toJSON AuditConfig'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _acService,
+                  ("auditLogConfigs" .=) <$> _acAuditLogConfigs])
+
+-- | Request message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.GenerateConsistencyToken
+--
+-- /See:/ 'generateConsistencyTokenRequest' smart constructor.
+data GenerateConsistencyTokenRequest =
+    GenerateConsistencyTokenRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GenerateConsistencyTokenRequest' with the minimum fields required to make a request.
+--
+generateConsistencyTokenRequest
+    :: GenerateConsistencyTokenRequest
+generateConsistencyTokenRequest = GenerateConsistencyTokenRequest'
+
+instance FromJSON GenerateConsistencyTokenRequest
+         where
+        parseJSON
+          = withObject "GenerateConsistencyTokenRequest"
+              (\ o -> pure GenerateConsistencyTokenRequest')
+
+instance ToJSON GenerateConsistencyTokenRequest where
+        toJSON = const emptyObject
+
+-- | Request message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.ModifyColumnFamilies
+--
+-- /See:/ 'modifyColumnFamiliesRequest' smart constructor.
+newtype ModifyColumnFamiliesRequest = ModifyColumnFamiliesRequest'
+    { _mcfrModifications :: Maybe [Modification]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ModifyColumnFamiliesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mcfrModifications'
+modifyColumnFamiliesRequest
+    :: ModifyColumnFamiliesRequest
+modifyColumnFamiliesRequest =
+    ModifyColumnFamiliesRequest'
+    { _mcfrModifications = Nothing
+    }
+
+-- | Modifications to be atomically applied to the specified table\'s
+-- families. Entries are applied in order, meaning that earlier
+-- modifications can be masked by later ones (in the case of repeated
+-- updates to the same family, for example).
+mcfrModifications :: Lens' ModifyColumnFamiliesRequest [Modification]
+mcfrModifications
+  = lens _mcfrModifications
+      (\ s a -> s{_mcfrModifications = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ModifyColumnFamiliesRequest where
+        parseJSON
+          = withObject "ModifyColumnFamiliesRequest"
+              (\ o ->
+                 ModifyColumnFamiliesRequest' <$>
+                   (o .:? "modifications" .!= mempty))
+
+instance ToJSON ModifyColumnFamiliesRequest where
+        toJSON ModifyColumnFamiliesRequest'{..}
+          = object
+              (catMaybes
+                 [("modifications" .=) <$> _mcfrModifications])
+
+-- | Represents an expression text. Example: title: \"User account presence\"
+-- description: \"Determines whether the request has a user account\"
+-- expression: \"size(request.user) > 0\"
+--
+-- /See:/ 'expr' smart constructor.
+data Expr = Expr'
+    { _eLocation    :: !(Maybe Text)
+    , _eExpression  :: !(Maybe Text)
+    , _eTitle       :: !(Maybe Text)
+    , _eDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Expr' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eLocation'
+--
+-- * 'eExpression'
+--
+-- * 'eTitle'
+--
+-- * 'eDescription'
+expr
+    :: Expr
+expr =
+    Expr'
+    { _eLocation = Nothing
+    , _eExpression = Nothing
+    , _eTitle = Nothing
+    , _eDescription = Nothing
+    }
+
+-- | An optional string indicating the location of the expression for error
+-- reporting, e.g. a file name and a position in the file.
+eLocation :: Lens' Expr (Maybe Text)
+eLocation
+  = lens _eLocation (\ s a -> s{_eLocation = a})
+
+-- | Textual representation of an expression in Common Expression Language
+-- syntax. The application context of the containing message determines
+-- which well-known feature set of CEL is supported.
+eExpression :: Lens' Expr (Maybe Text)
+eExpression
+  = lens _eExpression (\ s a -> s{_eExpression = a})
+
+-- | An optional title for the expression, i.e. a short string describing its
+-- purpose. This can be used e.g. in UIs which allow to enter the
+-- expression.
+eTitle :: Lens' Expr (Maybe Text)
+eTitle = lens _eTitle (\ s a -> s{_eTitle = a})
+
+-- | An optional description of the expression. This is a longer text which
+-- describes the expression, e.g. when hovered over it in a UI.
+eDescription :: Lens' Expr (Maybe Text)
+eDescription
+  = lens _eDescription (\ s a -> s{_eDescription = a})
+
+instance FromJSON Expr where
+        parseJSON
+          = withObject "Expr"
+              (\ o ->
+                 Expr' <$>
+                   (o .:? "location") <*> (o .:? "expression") <*>
+                     (o .:? "title")
+                     <*> (o .:? "description"))
+
+instance ToJSON Expr where
+        toJSON Expr'{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _eLocation,
+                  ("expression" .=) <$> _eExpression,
+                  ("title" .=) <$> _eTitle,
+                  ("description" .=) <$> _eDescription])
+
+-- | The response message for Operations.ListOperations.
+--
+-- /See:/ 'listOperationsResponse' smart constructor.
+data ListOperationsResponse = ListOperationsResponse'
+    { _lorNextPageToken :: !(Maybe Text)
+    , _lorOperations    :: !(Maybe [Operation])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lorNextPageToken'
+--
+-- * 'lorOperations'
+listOperationsResponse
+    :: ListOperationsResponse
+listOperationsResponse =
+    ListOperationsResponse'
+    { _lorNextPageToken = Nothing
+    , _lorOperations = Nothing
+    }
+
+-- | The standard List next-page token.
+lorNextPageToken :: Lens' ListOperationsResponse (Maybe Text)
+lorNextPageToken
+  = lens _lorNextPageToken
+      (\ s a -> s{_lorNextPageToken = a})
+
+-- | A list of operations that matches the specified filter in the request.
+lorOperations :: Lens' ListOperationsResponse [Operation]
+lorOperations
+  = lens _lorOperations
+      (\ s a -> s{_lorOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListOperationsResponse where
+        parseJSON
+          = withObject "ListOperationsResponse"
+              (\ o ->
+                 ListOperationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "operations" .!= mempty))
+
+instance ToJSON ListOperationsResponse where
+        toJSON ListOperationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lorNextPageToken,
+                  ("operations" .=) <$> _lorOperations])
+
+-- | Request message for BigtableInstanceAdmin.CreateCluster.
+--
+-- /See:/ 'createClusterRequest' smart constructor.
+data CreateClusterRequest = CreateClusterRequest'
+    { _ccrParent    :: !(Maybe Text)
+    , _ccrCluster   :: !(Maybe Cluster)
+    , _ccrClusterId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrParent'
+--
+-- * 'ccrCluster'
+--
+-- * 'ccrClusterId'
+createClusterRequest
+    :: CreateClusterRequest
+createClusterRequest =
+    CreateClusterRequest'
+    { _ccrParent = Nothing
+    , _ccrCluster = Nothing
+    , _ccrClusterId = Nothing
+    }
+
+-- | The unique name of the instance in which to create the new cluster.
+-- Values are of the form \`projects\/\/instances\/\`.
+ccrParent :: Lens' CreateClusterRequest (Maybe Text)
+ccrParent
+  = lens _ccrParent (\ s a -> s{_ccrParent = a})
+
+-- | The cluster to be created. Fields marked \`OutputOnly\` must be left
+-- blank.
+ccrCluster :: Lens' CreateClusterRequest (Maybe Cluster)
+ccrCluster
+  = lens _ccrCluster (\ s a -> s{_ccrCluster = a})
+
+-- | The ID to be used when referring to the new cluster within its instance,
+-- e.g., just \`mycluster\` rather than
+-- \`projects\/myproject\/instances\/myinstance\/clusters\/mycluster\`.
+ccrClusterId :: Lens' CreateClusterRequest (Maybe Text)
+ccrClusterId
+  = lens _ccrClusterId (\ s a -> s{_ccrClusterId = a})
+
+instance FromJSON CreateClusterRequest where
+        parseJSON
+          = withObject "CreateClusterRequest"
+              (\ o ->
+                 CreateClusterRequest' <$>
+                   (o .:? "parent") <*> (o .:? "cluster") <*>
+                     (o .:? "clusterId"))
+
+instance ToJSON CreateClusterRequest where
+        toJSON CreateClusterRequest'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _ccrParent,
+                  ("cluster" .=) <$> _ccrCluster,
+                  ("clusterId" .=) <$> _ccrClusterId])
+
+-- | Request message for \`GetIamPolicy\` method.
+--
+-- /See:/ 'getIAMPolicyRequest' smart constructor.
+data GetIAMPolicyRequest =
+    GetIAMPolicyRequest'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+getIAMPolicyRequest
+    :: GetIAMPolicyRequest
+getIAMPolicyRequest = GetIAMPolicyRequest'
+
+instance FromJSON GetIAMPolicyRequest where
+        parseJSON
+          = withObject "GetIAMPolicyRequest"
+              (\ o -> pure GetIAMPolicyRequest')
+
+instance ToJSON GetIAMPolicyRequest where
+        toJSON = const emptyObject
+
+-- | A resizable group of nodes in a particular cloud location, capable of
+-- serving all Tables in the parent Instance.
+--
+-- /See:/ 'cluster' smart constructor.
+data Cluster = Cluster'
+    { _cState              :: !(Maybe ClusterType)
+    , _cDefaultStorageType :: !(Maybe ClusterDefaultStorageType)
+    , _cLocation           :: !(Maybe Text)
+    , _cServeNodes         :: !(Maybe (Textual Int32))
+    , _cName               :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Cluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cState'
+--
+-- * 'cDefaultStorageType'
+--
+-- * 'cLocation'
+--
+-- * 'cServeNodes'
+--
+-- * 'cName'
+cluster
+    :: Cluster
+cluster =
+    Cluster'
+    { _cState = Nothing
+    , _cDefaultStorageType = Nothing
+    , _cLocation = Nothing
+    , _cServeNodes = Nothing
+    , _cName = Nothing
+    }
+
+-- | (\`OutputOnly\`) The current state of the cluster.
+cState :: Lens' Cluster (Maybe ClusterType)
+cState = lens _cState (\ s a -> s{_cState = a})
+
+-- | (\`CreationOnly\`) The type of storage used by this cluster to serve its
+-- parent instance\'s tables, unless explicitly overridden.
+cDefaultStorageType :: Lens' Cluster (Maybe ClusterDefaultStorageType)
+cDefaultStorageType
+  = lens _cDefaultStorageType
+      (\ s a -> s{_cDefaultStorageType = a})
+
+-- | (\`CreationOnly\`) The location where this cluster\'s nodes and storage
+-- reside. For best performance, clients should be located as close as
+-- possible to this cluster. Currently only zones are supported, so values
+-- should be of the form \`projects\/\/locations\/\`.
+cLocation :: Lens' Cluster (Maybe Text)
+cLocation
+  = lens _cLocation (\ s a -> s{_cLocation = a})
+
+-- | The number of nodes allocated to this cluster. More nodes enable higher
+-- throughput and more consistent performance.
+cServeNodes :: Lens' Cluster (Maybe Int32)
+cServeNodes
+  = lens _cServeNodes (\ s a -> s{_cServeNodes = a}) .
+      mapping _Coerce
+
+-- | (\`OutputOnly\`) The unique name of the cluster. Values are of the form
+-- \`projects\/\/instances\/\/clusters\/a-z*\`.
+cName :: Lens' Cluster (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+instance FromJSON Cluster where
+        parseJSON
+          = withObject "Cluster"
+              (\ o ->
+                 Cluster' <$>
+                   (o .:? "state") <*> (o .:? "defaultStorageType") <*>
+                     (o .:? "location")
+                     <*> (o .:? "serveNodes")
+                     <*> (o .:? "name"))
+
+instance ToJSON Cluster where
+        toJSON Cluster'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _cState,
+                  ("defaultStorageType" .=) <$> _cDefaultStorageType,
+                  ("location" .=) <$> _cLocation,
+                  ("serveNodes" .=) <$> _cServeNodes,
+                  ("name" .=) <$> _cName])
+
+-- | An initial split point for a newly created table.
+--
+-- /See:/ 'split' smart constructor.
+newtype Split = Split'
+    { _sKey :: Maybe Bytes
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Split' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sKey'
+split
+    :: Split
+split =
+    Split'
+    { _sKey = Nothing
+    }
+
+-- | Row key to use as an initial tablet boundary.
+sKey :: Lens' Split (Maybe ByteString)
+sKey
+  = lens _sKey (\ s a -> s{_sKey = a}) . mapping _Bytes
+
+instance FromJSON Split where
+        parseJSON
+          = withObject "Split"
+              (\ o -> Split' <$> (o .:? "key"))
+
+instance ToJSON Split where
+        toJSON Split'{..}
+          = object (catMaybes [("key" .=) <$> _sKey])
+
+-- | Read\/write requests may be routed to any cluster in the instance, and
+-- will fail over to another cluster in the event of transient errors or
+-- delays. Choosing this option sacrifices read-your-writes consistency to
+-- improve availability.
+--
+-- /See:/ 'multiClusterRoutingUseAny' smart constructor.
+data MultiClusterRoutingUseAny =
+    MultiClusterRoutingUseAny'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MultiClusterRoutingUseAny' with the minimum fields required to make a request.
+--
+multiClusterRoutingUseAny
+    :: MultiClusterRoutingUseAny
+multiClusterRoutingUseAny = MultiClusterRoutingUseAny'
+
+instance FromJSON MultiClusterRoutingUseAny where
+        parseJSON
+          = withObject "MultiClusterRoutingUseAny"
+              (\ o -> pure MultiClusterRoutingUseAny')
+
+instance ToJSON MultiClusterRoutingUseAny where
+        toJSON = const emptyObject
+
+-- | The state of a table\'s data in a particular cluster.
+--
+-- /See:/ 'clusterState' smart constructor.
+newtype ClusterState = ClusterState'
+    { _csReplicationState :: Maybe ClusterStateReplicationState
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClusterState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csReplicationState'
+clusterState
+    :: ClusterState
+clusterState =
+    ClusterState'
+    { _csReplicationState = Nothing
+    }
+
+-- | (\`OutputOnly\`) The state of replication for the table in this cluster.
+csReplicationState :: Lens' ClusterState (Maybe ClusterStateReplicationState)
+csReplicationState
+  = lens _csReplicationState
+      (\ s a -> s{_csReplicationState = a})
+
+instance FromJSON ClusterState where
+        parseJSON
+          = withObject "ClusterState"
+              (\ o -> ClusterState' <$> (o .:? "replicationState"))
+
+instance ToJSON ClusterState where
+        toJSON ClusterState'{..}
+          = object
+              (catMaybes
+                 [("replicationState" .=) <$> _csReplicationState])
+
+-- | This resource represents a long-running operation that is the result of
+-- a network API call.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation'
+    { _oDone     :: !(Maybe Bool)
+    , _oError    :: !(Maybe Status)
+    , _oResponse :: !(Maybe OperationResponse)
+    , _oName     :: !(Maybe Text)
+    , _oMetadata :: !(Maybe OperationMetadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Operation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oDone'
+--
+-- * 'oError'
+--
+-- * 'oResponse'
+--
+-- * 'oName'
+--
+-- * 'oMetadata'
+operation
+    :: Operation
+operation =
+    Operation'
+    { _oDone = Nothing
+    , _oError = Nothing
+    , _oResponse = Nothing
+    , _oName = Nothing
+    , _oMetadata = 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.
+oDone :: Lens' Operation (Maybe Bool)
+oDone = lens _oDone (\ s a -> s{_oDone = a})
+
+-- | The error result of the operation in case of failure or cancellation.
+oError :: Lens' Operation (Maybe Status)
+oError = lens _oError (\ s a -> s{_oError = 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\`.
+oResponse :: Lens' Operation (Maybe OperationResponse)
+oResponse
+  = lens _oResponse (\ s a -> s{_oResponse = 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\`.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = 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.
+oMetadata :: Lens' Operation (Maybe OperationMetadata)
+oMetadata
+  = lens _oMetadata (\ s a -> s{_oMetadata = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation' <$>
+                   (o .:? "done") <*> (o .:? "error") <*>
+                     (o .:? "response")
+                     <*> (o .:? "name")
+                     <*> (o .:? "metadata"))
+
+instance ToJSON Operation where
+        toJSON Operation'{..}
+          = object
+              (catMaybes
+                 [("done" .=) <$> _oDone, ("error" .=) <$> _oError,
+                  ("response" .=) <$> _oResponse,
+                  ("name" .=) <$> _oName,
+                  ("metadata" .=) <$> _oMetadata])
+
+-- | 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
+
+-- | Response message for BigtableInstanceAdmin.ListAppProfiles.
+--
+-- /See:/ 'listAppProFilesResponse' smart constructor.
+data ListAppProFilesResponse = ListAppProFilesResponse'
+    { _lapfrNextPageToken   :: !(Maybe Text)
+    , _lapfrFailedLocations :: !(Maybe [Text])
+    , _lapfrAppProFiles     :: !(Maybe [AppProFile])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListAppProFilesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lapfrNextPageToken'
+--
+-- * 'lapfrFailedLocations'
+--
+-- * 'lapfrAppProFiles'
+listAppProFilesResponse
+    :: ListAppProFilesResponse
+listAppProFilesResponse =
+    ListAppProFilesResponse'
+    { _lapfrNextPageToken = Nothing
+    , _lapfrFailedLocations = Nothing
+    , _lapfrAppProFiles = Nothing
+    }
+
+-- | Set if not all app profiles could be returned in a single response. Pass
+-- this value to \`page_token\` in another request to get the next page of
+-- results.
+lapfrNextPageToken :: Lens' ListAppProFilesResponse (Maybe Text)
+lapfrNextPageToken
+  = lens _lapfrNextPageToken
+      (\ s a -> s{_lapfrNextPageToken = a})
+
+-- | Locations from which AppProfile information could not be retrieved, due
+-- to an outage or some other transient condition. AppProfiles from these
+-- locations may be missing from \`app_profiles\`. Values are of the form
+-- \`projects\/\/locations\/\`
+lapfrFailedLocations :: Lens' ListAppProFilesResponse [Text]
+lapfrFailedLocations
+  = lens _lapfrFailedLocations
+      (\ s a -> s{_lapfrFailedLocations = a})
+      . _Default
+      . _Coerce
+
+-- | The list of requested app profiles.
+lapfrAppProFiles :: Lens' ListAppProFilesResponse [AppProFile]
+lapfrAppProFiles
+  = lens _lapfrAppProFiles
+      (\ s a -> s{_lapfrAppProFiles = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListAppProFilesResponse where
+        parseJSON
+          = withObject "ListAppProFilesResponse"
+              (\ o ->
+                 ListAppProFilesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "failedLocations" .!= mempty)
+                     <*> (o .:? "appProfiles" .!= mempty))
+
+instance ToJSON ListAppProFilesResponse where
+        toJSON ListAppProFilesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lapfrNextPageToken,
+                  ("failedLocations" .=) <$> _lapfrFailedLocations,
+                  ("appProfiles" .=) <$> _lapfrAppProFiles])
+
+-- | (\`OutputOnly\`) Map from cluster ID to per-cluster table state. If it
+-- could not be determined whether or not the table has data in a
+-- particular cluster (for example, if its zone is unavailable), then there
+-- will be an entry for the cluster with UNKNOWN \`replication_status\`.
+-- Views: \`REPLICATION_VIEW\`, \`FULL\`
+--
+-- /See:/ 'tableClusterStates' smart constructor.
+newtype TableClusterStates = TableClusterStates'
+    { _tcsAddtional :: HashMap Text ClusterState
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableClusterStates' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcsAddtional'
+tableClusterStates
+    :: HashMap Text ClusterState -- ^ 'tcsAddtional'
+    -> TableClusterStates
+tableClusterStates pTcsAddtional_ =
+    TableClusterStates'
+    { _tcsAddtional = _Coerce # pTcsAddtional_
+    }
+
+tcsAddtional :: Lens' TableClusterStates (HashMap Text ClusterState)
+tcsAddtional
+  = lens _tcsAddtional (\ s a -> s{_tcsAddtional = a})
+      . _Coerce
+
+instance FromJSON TableClusterStates where
+        parseJSON
+          = withObject "TableClusterStates"
+              (\ o -> TableClusterStates' <$> (parseJSONObject o))
+
+instance ToJSON TableClusterStates where
+        toJSON = toJSON . _tcsAddtional
+
+-- | (\`CreationOnly\`) The column families configured for this table, mapped
+-- by column family ID. Views: \`SCHEMA_VIEW\`, \`FULL\`
+--
+-- /See:/ 'tableColumnFamilies' smart constructor.
+newtype TableColumnFamilies = TableColumnFamilies'
+    { _tcfAddtional :: HashMap Text ColumnFamily
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TableColumnFamilies' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcfAddtional'
+tableColumnFamilies
+    :: HashMap Text ColumnFamily -- ^ 'tcfAddtional'
+    -> TableColumnFamilies
+tableColumnFamilies pTcfAddtional_ =
+    TableColumnFamilies'
+    { _tcfAddtional = _Coerce # pTcfAddtional_
+    }
+
+tcfAddtional :: Lens' TableColumnFamilies (HashMap Text ColumnFamily)
+tcfAddtional
+  = lens _tcfAddtional (\ s a -> s{_tcfAddtional = a})
+      . _Coerce
+
+instance FromJSON TableColumnFamilies where
+        parseJSON
+          = withObject "TableColumnFamilies"
+              (\ o -> TableColumnFamilies' <$> (parseJSONObject o))
+
+instance ToJSON TableColumnFamilies where
+        toJSON = toJSON . _tcfAddtional
+
+-- | Request message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.CreateTable
+--
+-- /See:/ 'createTableRequest' smart constructor.
+data CreateTableRequest = CreateTableRequest'
+    { _ctrInitialSplits :: !(Maybe [Split])
+    , _ctrTableId       :: !(Maybe Text)
+    , _ctrTable         :: !(Maybe Table)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateTableRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ctrInitialSplits'
+--
+-- * 'ctrTableId'
+--
+-- * 'ctrTable'
+createTableRequest
+    :: CreateTableRequest
+createTableRequest =
+    CreateTableRequest'
+    { _ctrInitialSplits = Nothing
+    , _ctrTableId = Nothing
+    , _ctrTable = Nothing
+    }
+
+-- | The optional list of row keys that will be used to initially split the
+-- table into several tablets (tablets are similar to HBase regions). Given
+-- two split keys, \`s1\` and \`s2\`, three tablets will be created,
+-- spanning the key ranges: \`[, s1), [s1, s2), [s2, )\`. Example: * Row
+-- keys := \`[\"a\", \"apple\", \"custom\", \"customer_1\",
+-- \"customer_2\",\` \`\"other\", \"zz\"]\` * initial_split_keys :=
+-- \`[\"apple\", \"customer_1\", \"customer_2\", \"other\"]\` * Key
+-- assignment: - Tablet 1 \`[, apple) => {\"a\"}.\` - Tablet 2 \`[apple,
+-- customer_1) => {\"apple\", \"custom\"}.\` - Tablet 3 \`[customer_1,
+-- customer_2) => {\"customer_1\"}.\` - Tablet 4 \`[customer_2, other) =>
+-- {\"customer_2\"}.\` - Tablet 5 \`[other, ) => {\"other\", \"zz\"}.\`
+ctrInitialSplits :: Lens' CreateTableRequest [Split]
+ctrInitialSplits
+  = lens _ctrInitialSplits
+      (\ s a -> s{_ctrInitialSplits = a})
+      . _Default
+      . _Coerce
+
+-- | The name by which the new table should be referred to within the parent
+-- instance, e.g., \`foobar\` rather than \`\/tables\/foobar\`.
+ctrTableId :: Lens' CreateTableRequest (Maybe Text)
+ctrTableId
+  = lens _ctrTableId (\ s a -> s{_ctrTableId = a})
+
+-- | The Table to create.
+ctrTable :: Lens' CreateTableRequest (Maybe Table)
+ctrTable = lens _ctrTable (\ s a -> s{_ctrTable = a})
+
+instance FromJSON CreateTableRequest where
+        parseJSON
+          = withObject "CreateTableRequest"
+              (\ o ->
+                 CreateTableRequest' <$>
+                   (o .:? "initialSplits" .!= mempty) <*>
+                     (o .:? "tableId")
+                     <*> (o .:? "table"))
+
+instance ToJSON CreateTableRequest where
+        toJSON CreateTableRequest'{..}
+          = object
+              (catMaybes
+                 [("initialSplits" .=) <$> _ctrInitialSplits,
+                  ("tableId" .=) <$> _ctrTableId,
+                  ("table" .=) <$> _ctrTable])
+
+-- | The metadata for the Operation returned by CreateCluster.
+--
+-- /See:/ 'createClusterMetadata' smart constructor.
+data CreateClusterMetadata = CreateClusterMetadata'
+    { _ccmRequestTime     :: !(Maybe DateTime')
+    , _ccmOriginalRequest :: !(Maybe CreateClusterRequest)
+    , _ccmFinishTime      :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateClusterMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccmRequestTime'
+--
+-- * 'ccmOriginalRequest'
+--
+-- * 'ccmFinishTime'
+createClusterMetadata
+    :: CreateClusterMetadata
+createClusterMetadata =
+    CreateClusterMetadata'
+    { _ccmRequestTime = Nothing
+    , _ccmOriginalRequest = Nothing
+    , _ccmFinishTime = Nothing
+    }
+
+-- | The time at which the original request was received.
+ccmRequestTime :: Lens' CreateClusterMetadata (Maybe UTCTime)
+ccmRequestTime
+  = lens _ccmRequestTime
+      (\ s a -> s{_ccmRequestTime = a})
+      . mapping _DateTime
+
+-- | The request that prompted the initiation of this CreateCluster
+-- operation.
+ccmOriginalRequest :: Lens' CreateClusterMetadata (Maybe CreateClusterRequest)
+ccmOriginalRequest
+  = lens _ccmOriginalRequest
+      (\ s a -> s{_ccmOriginalRequest = a})
+
+-- | The time at which the operation failed or was completed successfully.
+ccmFinishTime :: Lens' CreateClusterMetadata (Maybe UTCTime)
+ccmFinishTime
+  = lens _ccmFinishTime
+      (\ s a -> s{_ccmFinishTime = a})
+      . mapping _DateTime
+
+instance FromJSON CreateClusterMetadata where
+        parseJSON
+          = withObject "CreateClusterMetadata"
+              (\ o ->
+                 CreateClusterMetadata' <$>
+                   (o .:? "requestTime") <*> (o .:? "originalRequest")
+                     <*> (o .:? "finishTime"))
+
+instance ToJSON CreateClusterMetadata where
+        toJSON CreateClusterMetadata'{..}
+          = object
+              (catMaybes
+                 [("requestTime" .=) <$> _ccmRequestTime,
+                  ("originalRequest" .=) <$> _ccmOriginalRequest,
+                  ("finishTime" .=) <$> _ccmFinishTime])
+
+-- | A GcRule which deletes cells matching any of the given rules.
+--
+-- /See:/ 'union' smart constructor.
+newtype Union = Union'
+    { _uRules :: Maybe [GcRule]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Union' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uRules'
+union
+    :: Union
+union =
+    Union'
+    { _uRules = Nothing
+    }
+
+-- | Delete cells which would be deleted by any element of \`rules\`.
+uRules :: Lens' Union [GcRule]
+uRules
+  = lens _uRules (\ s a -> s{_uRules = a}) . _Default .
+      _Coerce
+
+instance FromJSON Union where
+        parseJSON
+          = withObject "Union"
+              (\ o -> Union' <$> (o .:? "rules" .!= mempty))
+
+instance ToJSON Union where
+        toJSON Union'{..}
+          = object (catMaybes [("rules" .=) <$> _uRules])
+
+--
+-- /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 metadata for the Operation returned by UpdateAppProfile.
+--
+-- /See:/ 'updateAppProFileMetadata' smart constructor.
+data UpdateAppProFileMetadata =
+    UpdateAppProFileMetadata'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAppProFileMetadata' with the minimum fields required to make a request.
+--
+updateAppProFileMetadata
+    :: UpdateAppProFileMetadata
+updateAppProFileMetadata = UpdateAppProFileMetadata'
+
+instance FromJSON UpdateAppProFileMetadata where
+        parseJSON
+          = withObject "UpdateAppProFileMetadata"
+              (\ o -> pure UpdateAppProFileMetadata')
+
+instance ToJSON UpdateAppProFileMetadata where
+        toJSON = const emptyObject
+
+-- | The metadata for the Operation returned by UpdateCluster.
+--
+-- /See:/ 'updateClusterMetadata' smart constructor.
+data UpdateClusterMetadata = UpdateClusterMetadata'
+    { _ucmRequestTime     :: !(Maybe DateTime')
+    , _ucmOriginalRequest :: !(Maybe Cluster)
+    , _ucmFinishTime      :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateClusterMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucmRequestTime'
+--
+-- * 'ucmOriginalRequest'
+--
+-- * 'ucmFinishTime'
+updateClusterMetadata
+    :: UpdateClusterMetadata
+updateClusterMetadata =
+    UpdateClusterMetadata'
+    { _ucmRequestTime = Nothing
+    , _ucmOriginalRequest = Nothing
+    , _ucmFinishTime = Nothing
+    }
+
+-- | The time at which the original request was received.
+ucmRequestTime :: Lens' UpdateClusterMetadata (Maybe UTCTime)
+ucmRequestTime
+  = lens _ucmRequestTime
+      (\ s a -> s{_ucmRequestTime = a})
+      . mapping _DateTime
+
+-- | The request that prompted the initiation of this UpdateCluster
+-- operation.
+ucmOriginalRequest :: Lens' UpdateClusterMetadata (Maybe Cluster)
+ucmOriginalRequest
+  = lens _ucmOriginalRequest
+      (\ s a -> s{_ucmOriginalRequest = a})
+
+-- | The time at which the operation failed or was completed successfully.
+ucmFinishTime :: Lens' UpdateClusterMetadata (Maybe UTCTime)
+ucmFinishTime
+  = lens _ucmFinishTime
+      (\ s a -> s{_ucmFinishTime = a})
+      . mapping _DateTime
+
+instance FromJSON UpdateClusterMetadata where
+        parseJSON
+          = withObject "UpdateClusterMetadata"
+              (\ o ->
+                 UpdateClusterMetadata' <$>
+                   (o .:? "requestTime") <*> (o .:? "originalRequest")
+                     <*> (o .:? "finishTime"))
+
+instance ToJSON UpdateClusterMetadata where
+        toJSON UpdateClusterMetadata'{..}
+          = object
+              (catMaybes
+                 [("requestTime" .=) <$> _ucmRequestTime,
+                  ("originalRequest" .=) <$> _ucmOriginalRequest,
+                  ("finishTime" .=) <$> _ucmFinishTime])
+
+-- | Request message for \`SetIamPolicy\` method.
+--
+-- /See:/ 'setIAMPolicyRequest' smart constructor.
+data SetIAMPolicyRequest = SetIAMPolicyRequest'
+    { _siprUpdateMask :: !(Maybe GFieldMask)
+    , _siprPolicy     :: !(Maybe Policy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetIAMPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'siprUpdateMask'
+--
+-- * 'siprPolicy'
+setIAMPolicyRequest
+    :: SetIAMPolicyRequest
+setIAMPolicyRequest =
+    SetIAMPolicyRequest'
+    { _siprUpdateMask = Nothing
+    , _siprPolicy = Nothing
+    }
+
+-- | OPTIONAL: A FieldMask specifying which fields of the policy to modify.
+-- Only the fields in the mask will be modified. If no mask is provided,
+-- the following default mask is used: paths: \"bindings, etag\" This field
+-- is only used by Cloud IAM.
+siprUpdateMask :: Lens' SetIAMPolicyRequest (Maybe GFieldMask)
+siprUpdateMask
+  = lens _siprUpdateMask
+      (\ s a -> s{_siprUpdateMask = a})
+
+-- | REQUIRED: The complete policy to be applied to the \`resource\`. The
+-- size of the policy is limited to a few 10s of KB. An empty policy is a
+-- valid policy but certain Cloud Platform services (such as Projects)
+-- might reject them.
+siprPolicy :: Lens' SetIAMPolicyRequest (Maybe Policy)
+siprPolicy
+  = lens _siprPolicy (\ s a -> s{_siprPolicy = a})
+
+instance FromJSON SetIAMPolicyRequest where
+        parseJSON
+          = withObject "SetIAMPolicyRequest"
+              (\ o ->
+                 SetIAMPolicyRequest' <$>
+                   (o .:? "updateMask") <*> (o .:? "policy"))
+
+instance ToJSON SetIAMPolicyRequest where
+        toJSON SetIAMPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("updateMask" .=) <$> _siprUpdateMask,
+                  ("policy" .=) <$> _siprPolicy])
+
+-- | Request message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency
+--
+-- /See:/ 'checkConsistencyRequest' smart constructor.
+newtype CheckConsistencyRequest = CheckConsistencyRequest'
+    { _ccrConsistencyToken :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CheckConsistencyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrConsistencyToken'
+checkConsistencyRequest
+    :: CheckConsistencyRequest
+checkConsistencyRequest =
+    CheckConsistencyRequest'
+    { _ccrConsistencyToken = Nothing
+    }
+
+-- | The token created using GenerateConsistencyToken for the Table.
+ccrConsistencyToken :: Lens' CheckConsistencyRequest (Maybe Text)
+ccrConsistencyToken
+  = lens _ccrConsistencyToken
+      (\ s a -> s{_ccrConsistencyToken = a})
+
+instance FromJSON CheckConsistencyRequest where
+        parseJSON
+          = withObject "CheckConsistencyRequest"
+              (\ o ->
+                 CheckConsistencyRequest' <$>
+                   (o .:? "consistencyToken"))
+
+instance ToJSON CheckConsistencyRequest where
+        toJSON CheckConsistencyRequest'{..}
+          = object
+              (catMaybes
+                 [("consistencyToken" .=) <$> _ccrConsistencyToken])
+
+-- | Response message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.ListTables
+--
+-- /See:/ 'listTablesResponse' smart constructor.
+data ListTablesResponse = ListTablesResponse'
+    { _ltrNextPageToken :: !(Maybe Text)
+    , _ltrTables        :: !(Maybe [Table])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListTablesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ltrNextPageToken'
+--
+-- * 'ltrTables'
+listTablesResponse
+    :: ListTablesResponse
+listTablesResponse =
+    ListTablesResponse'
+    { _ltrNextPageToken = Nothing
+    , _ltrTables = Nothing
+    }
+
+-- | Set if not all tables could be returned in a single response. Pass this
+-- value to \`page_token\` in another request to get the next page of
+-- results.
+ltrNextPageToken :: Lens' ListTablesResponse (Maybe Text)
+ltrNextPageToken
+  = lens _ltrNextPageToken
+      (\ s a -> s{_ltrNextPageToken = a})
+
+-- | The tables present in the requested instance.
+ltrTables :: Lens' ListTablesResponse [Table]
+ltrTables
+  = lens _ltrTables (\ s a -> s{_ltrTables = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListTablesResponse where
+        parseJSON
+          = withObject "ListTablesResponse"
+              (\ o ->
+                 ListTablesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "tables" .!= mempty))
+
+instance ToJSON ListTablesResponse where
+        toJSON ListTablesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ltrNextPageToken,
+                  ("tables" .=) <$> _ltrTables])
+
+-- | Request message for BigtableInstanceAdmin.PartialUpdateInstance.
+--
+-- /See:/ 'partialUpdateInstanceRequest' smart constructor.
+data PartialUpdateInstanceRequest = PartialUpdateInstanceRequest'
+    { _puirUpdateMask :: !(Maybe GFieldMask)
+    , _puirInstance   :: !(Maybe Instance)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PartialUpdateInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'puirUpdateMask'
+--
+-- * 'puirInstance'
+partialUpdateInstanceRequest
+    :: PartialUpdateInstanceRequest
+partialUpdateInstanceRequest =
+    PartialUpdateInstanceRequest'
+    { _puirUpdateMask = Nothing
+    , _puirInstance = Nothing
+    }
+
+-- | The subset of Instance fields which should be replaced. Must be
+-- explicitly set.
+puirUpdateMask :: Lens' PartialUpdateInstanceRequest (Maybe GFieldMask)
+puirUpdateMask
+  = lens _puirUpdateMask
+      (\ s a -> s{_puirUpdateMask = a})
+
+-- | The Instance which will (partially) replace the current value.
+puirInstance :: Lens' PartialUpdateInstanceRequest (Maybe Instance)
+puirInstance
+  = lens _puirInstance (\ s a -> s{_puirInstance = a})
+
+instance FromJSON PartialUpdateInstanceRequest where
+        parseJSON
+          = withObject "PartialUpdateInstanceRequest"
+              (\ o ->
+                 PartialUpdateInstanceRequest' <$>
+                   (o .:? "updateMask") <*> (o .:? "instance"))
+
+instance ToJSON PartialUpdateInstanceRequest where
+        toJSON PartialUpdateInstanceRequest'{..}
+          = object
+              (catMaybes
+                 [("updateMask" .=) <$> _puirUpdateMask,
+                  ("instance" .=) <$> _puirInstance])
+
+-- | Rule for determining which cells to delete during garbage collection.
+--
+-- /See:/ 'gcRule' smart constructor.
+data GcRule = GcRule'
+    { _grMaxAge         :: !(Maybe GDuration)
+    , _grUnion          :: !(Maybe Union)
+    , _grIntersection   :: !(Maybe Intersection)
+    , _grMaxNumVersions :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GcRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'grMaxAge'
+--
+-- * 'grUnion'
+--
+-- * 'grIntersection'
+--
+-- * 'grMaxNumVersions'
+gcRule
+    :: GcRule
+gcRule =
+    GcRule'
+    { _grMaxAge = Nothing
+    , _grUnion = Nothing
+    , _grIntersection = Nothing
+    , _grMaxNumVersions = Nothing
+    }
+
+-- | Delete cells in a column older than the given age. Values must be at
+-- least one millisecond, and will be truncated to microsecond granularity.
+grMaxAge :: Lens' GcRule (Maybe Scientific)
+grMaxAge
+  = lens _grMaxAge (\ s a -> s{_grMaxAge = a}) .
+      mapping _GDuration
+
+-- | Delete cells that would be deleted by any nested rule.
+grUnion :: Lens' GcRule (Maybe Union)
+grUnion = lens _grUnion (\ s a -> s{_grUnion = a})
+
+-- | Delete cells that would be deleted by every nested rule.
+grIntersection :: Lens' GcRule (Maybe Intersection)
+grIntersection
+  = lens _grIntersection
+      (\ s a -> s{_grIntersection = a})
+
+-- | Delete all cells in a column except the most recent N.
+grMaxNumVersions :: Lens' GcRule (Maybe Int32)
+grMaxNumVersions
+  = lens _grMaxNumVersions
+      (\ s a -> s{_grMaxNumVersions = a})
+      . mapping _Coerce
+
+instance FromJSON GcRule where
+        parseJSON
+          = withObject "GcRule"
+              (\ o ->
+                 GcRule' <$>
+                   (o .:? "maxAge") <*> (o .:? "union") <*>
+                     (o .:? "intersection")
+                     <*> (o .:? "maxNumVersions"))
+
+instance ToJSON GcRule where
+        toJSON GcRule'{..}
+          = object
+              (catMaybes
+                 [("maxAge" .=) <$> _grMaxAge,
+                  ("union" .=) <$> _grUnion,
+                  ("intersection" .=) <$> _grIntersection,
+                  ("maxNumVersions" .=) <$> _grMaxNumVersions])
+
+-- | Request message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsRequest' smart constructor.
+newtype TestIAMPermissionsRequest = TestIAMPermissionsRequest'
+    { _tiprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiprPermissions'
+testIAMPermissionsRequest
+    :: TestIAMPermissionsRequest
+testIAMPermissionsRequest =
+    TestIAMPermissionsRequest'
+    { _tiprPermissions = Nothing
+    }
+
+-- | The set of permissions to check for the \`resource\`. Permissions with
+-- wildcards (such as \'*\' or \'storage.*\') are not allowed. For more
+-- information see [IAM
+-- Overview](https:\/\/cloud.google.com\/iam\/docs\/overview#permissions).
+tiprPermissions :: Lens' TestIAMPermissionsRequest [Text]
+tiprPermissions
+  = lens _tiprPermissions
+      (\ s a -> s{_tiprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsRequest where
+        parseJSON
+          = withObject "TestIAMPermissionsRequest"
+              (\ o ->
+                 TestIAMPermissionsRequest' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsRequest where
+        toJSON TestIAMPermissionsRequest'{..}
+          = object
+              (catMaybes [("permissions" .=) <$> _tiprPermissions])
+
+-- | A configuration object describing how Cloud Bigtable should treat
+-- traffic from a particular end user application.
+--
+-- /See:/ 'appProFile' smart constructor.
+data AppProFile = AppProFile'
+    { _apfSingleClusterRouting      :: !(Maybe SingleClusterRouting)
+    , _apfEtag                      :: !(Maybe Text)
+    , _apfMultiClusterRoutingUseAny :: !(Maybe MultiClusterRoutingUseAny)
+    , _apfName                      :: !(Maybe Text)
+    , _apfDescription               :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AppProFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apfSingleClusterRouting'
+--
+-- * 'apfEtag'
+--
+-- * 'apfMultiClusterRoutingUseAny'
+--
+-- * 'apfName'
+--
+-- * 'apfDescription'
+appProFile
+    :: AppProFile
+appProFile =
+    AppProFile'
+    { _apfSingleClusterRouting = Nothing
+    , _apfEtag = Nothing
+    , _apfMultiClusterRoutingUseAny = Nothing
+    , _apfName = Nothing
+    , _apfDescription = Nothing
+    }
+
+-- | Use a single-cluster routing policy.
+apfSingleClusterRouting :: Lens' AppProFile (Maybe SingleClusterRouting)
+apfSingleClusterRouting
+  = lens _apfSingleClusterRouting
+      (\ s a -> s{_apfSingleClusterRouting = a})
+
+-- | Strongly validated etag for optimistic concurrency control. Preserve the
+-- value returned from \`GetAppProfile\` when calling \`UpdateAppProfile\`
+-- to fail the request if there has been a modification in the mean time.
+-- The \`update_mask\` of the request need not include \`etag\` for this
+-- protection to apply. See
+-- [Wikipedia](https:\/\/en.wikipedia.org\/wiki\/HTTP_ETag) and [RFC
+-- 7232](https:\/\/tools.ietf.org\/html\/rfc7232#section-2.3) for more
+-- details.
+apfEtag :: Lens' AppProFile (Maybe Text)
+apfEtag = lens _apfEtag (\ s a -> s{_apfEtag = a})
+
+-- | Use a multi-cluster routing policy that may pick any cluster.
+apfMultiClusterRoutingUseAny :: Lens' AppProFile (Maybe MultiClusterRoutingUseAny)
+apfMultiClusterRoutingUseAny
+  = lens _apfMultiClusterRoutingUseAny
+      (\ s a -> s{_apfMultiClusterRoutingUseAny = a})
+
+-- | (\`OutputOnly\`) The unique name of the app profile. Values are of the
+-- form \`projects\/\/instances\/\/appProfiles\/_a-zA-Z0-9*\`.
+apfName :: Lens' AppProFile (Maybe Text)
+apfName = lens _apfName (\ s a -> s{_apfName = a})
+
+-- | Optional long form description of the use case for this AppProfile.
+apfDescription :: Lens' AppProFile (Maybe Text)
+apfDescription
+  = lens _apfDescription
+      (\ s a -> s{_apfDescription = a})
+
+instance FromJSON AppProFile where
+        parseJSON
+          = withObject "AppProFile"
+              (\ o ->
+                 AppProFile' <$>
+                   (o .:? "singleClusterRouting") <*> (o .:? "etag") <*>
+                     (o .:? "multiClusterRoutingUseAny")
+                     <*> (o .:? "name")
+                     <*> (o .:? "description"))
+
+instance ToJSON AppProFile where
+        toJSON AppProFile'{..}
+          = object
+              (catMaybes
+                 [("singleClusterRouting" .=) <$>
+                    _apfSingleClusterRouting,
+                  ("etag" .=) <$> _apfEtag,
+                  ("multiClusterRoutingUseAny" .=) <$>
+                    _apfMultiClusterRoutingUseAny,
+                  ("name" .=) <$> _apfName,
+                  ("description" .=) <$> _apfDescription])
+
+-- | The clusters to be created within the instance, mapped by desired
+-- cluster ID, e.g., just \`mycluster\` rather than
+-- \`projects\/myproject\/instances\/myinstance\/clusters\/mycluster\`.
+-- Fields marked \`OutputOnly\` must be left blank. Currently, at most two
+-- clusters can be specified.
+--
+-- /See:/ 'createInstanceRequestClusters' smart constructor.
+newtype CreateInstanceRequestClusters = CreateInstanceRequestClusters'
+    { _circAddtional :: HashMap Text Cluster
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateInstanceRequestClusters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'circAddtional'
+createInstanceRequestClusters
+    :: HashMap Text Cluster -- ^ 'circAddtional'
+    -> CreateInstanceRequestClusters
+createInstanceRequestClusters pCircAddtional_ =
+    CreateInstanceRequestClusters'
+    { _circAddtional = _Coerce # pCircAddtional_
+    }
+
+circAddtional :: Lens' CreateInstanceRequestClusters (HashMap Text Cluster)
+circAddtional
+  = lens _circAddtional
+      (\ s a -> s{_circAddtional = a})
+      . _Coerce
+
+instance FromJSON CreateInstanceRequestClusters where
+        parseJSON
+          = withObject "CreateInstanceRequestClusters"
+              (\ o ->
+                 CreateInstanceRequestClusters' <$>
+                   (parseJSONObject o))
+
+instance ToJSON CreateInstanceRequestClusters where
+        toJSON = toJSON . _circAddtional
+
+-- | Response message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.GenerateConsistencyToken
+--
+-- /See:/ 'generateConsistencyTokenResponse' smart constructor.
+newtype GenerateConsistencyTokenResponse = GenerateConsistencyTokenResponse'
+    { _gctrConsistencyToken :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GenerateConsistencyTokenResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gctrConsistencyToken'
+generateConsistencyTokenResponse
+    :: GenerateConsistencyTokenResponse
+generateConsistencyTokenResponse =
+    GenerateConsistencyTokenResponse'
+    { _gctrConsistencyToken = Nothing
+    }
+
+-- | The generated consistency token.
+gctrConsistencyToken :: Lens' GenerateConsistencyTokenResponse (Maybe Text)
+gctrConsistencyToken
+  = lens _gctrConsistencyToken
+      (\ s a -> s{_gctrConsistencyToken = a})
+
+instance FromJSON GenerateConsistencyTokenResponse
+         where
+        parseJSON
+          = withObject "GenerateConsistencyTokenResponse"
+              (\ o ->
+                 GenerateConsistencyTokenResponse' <$>
+                   (o .:? "consistencyToken"))
+
+instance ToJSON GenerateConsistencyTokenResponse
+         where
+        toJSON GenerateConsistencyTokenResponse'{..}
+          = object
+              (catMaybes
+                 [("consistencyToken" .=) <$> _gctrConsistencyToken])
+
+-- | Request message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.DropRowRange
+--
+-- /See:/ 'dropRowRangeRequest' smart constructor.
+data DropRowRangeRequest = DropRowRangeRequest'
+    { _drrrRowKeyPrefix           :: !(Maybe Bytes)
+    , _drrrDeleteAllDataFromTable :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DropRowRangeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrrRowKeyPrefix'
+--
+-- * 'drrrDeleteAllDataFromTable'
+dropRowRangeRequest
+    :: DropRowRangeRequest
+dropRowRangeRequest =
+    DropRowRangeRequest'
+    { _drrrRowKeyPrefix = Nothing
+    , _drrrDeleteAllDataFromTable = Nothing
+    }
+
+-- | Delete all rows that start with this row key prefix. Prefix cannot be
+-- zero length.
+drrrRowKeyPrefix :: Lens' DropRowRangeRequest (Maybe ByteString)
+drrrRowKeyPrefix
+  = lens _drrrRowKeyPrefix
+      (\ s a -> s{_drrrRowKeyPrefix = a})
+      . mapping _Bytes
+
+-- | Delete all rows in the table. Setting this to false is a no-op.
+drrrDeleteAllDataFromTable :: Lens' DropRowRangeRequest (Maybe Bool)
+drrrDeleteAllDataFromTable
+  = lens _drrrDeleteAllDataFromTable
+      (\ s a -> s{_drrrDeleteAllDataFromTable = a})
+
+instance FromJSON DropRowRangeRequest where
+        parseJSON
+          = withObject "DropRowRangeRequest"
+              (\ o ->
+                 DropRowRangeRequest' <$>
+                   (o .:? "rowKeyPrefix") <*>
+                     (o .:? "deleteAllDataFromTable"))
+
+instance ToJSON DropRowRangeRequest where
+        toJSON DropRowRangeRequest'{..}
+          = object
+              (catMaybes
+                 [("rowKeyPrefix" .=) <$> _drrrRowKeyPrefix,
+                  ("deleteAllDataFromTable" .=) <$>
+                    _drrrDeleteAllDataFromTable])
+
+-- | The metadata for the Operation returned by UpdateInstance.
+--
+-- /See:/ 'updateInstanceMetadata' smart constructor.
+data UpdateInstanceMetadata = UpdateInstanceMetadata'
+    { _uimRequestTime     :: !(Maybe DateTime')
+    , _uimOriginalRequest :: !(Maybe PartialUpdateInstanceRequest)
+    , _uimFinishTime      :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateInstanceMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uimRequestTime'
+--
+-- * 'uimOriginalRequest'
+--
+-- * 'uimFinishTime'
+updateInstanceMetadata
+    :: UpdateInstanceMetadata
+updateInstanceMetadata =
+    UpdateInstanceMetadata'
+    { _uimRequestTime = Nothing
+    , _uimOriginalRequest = Nothing
+    , _uimFinishTime = Nothing
+    }
+
+-- | The time at which the original request was received.
+uimRequestTime :: Lens' UpdateInstanceMetadata (Maybe UTCTime)
+uimRequestTime
+  = lens _uimRequestTime
+      (\ s a -> s{_uimRequestTime = a})
+      . mapping _DateTime
+
+-- | The request that prompted the initiation of this UpdateInstance
+-- operation.
+uimOriginalRequest :: Lens' UpdateInstanceMetadata (Maybe PartialUpdateInstanceRequest)
+uimOriginalRequest
+  = lens _uimOriginalRequest
+      (\ s a -> s{_uimOriginalRequest = a})
+
+-- | The time at which the operation failed or was completed successfully.
+uimFinishTime :: Lens' UpdateInstanceMetadata (Maybe UTCTime)
+uimFinishTime
+  = lens _uimFinishTime
+      (\ s a -> s{_uimFinishTime = a})
+      . mapping _DateTime
+
+instance FromJSON UpdateInstanceMetadata where
+        parseJSON
+          = withObject "UpdateInstanceMetadata"
+              (\ o ->
+                 UpdateInstanceMetadata' <$>
+                   (o .:? "requestTime") <*> (o .:? "originalRequest")
+                     <*> (o .:? "finishTime"))
+
+instance ToJSON UpdateInstanceMetadata where
+        toJSON UpdateInstanceMetadata'{..}
+          = object
+              (catMaybes
+                 [("requestTime" .=) <$> _uimRequestTime,
+                  ("originalRequest" .=) <$> _uimOriginalRequest,
+                  ("finishTime" .=) <$> _uimFinishTime])
+
+-- | A GcRule which deletes cells matching all of the given rules.
+--
+-- /See:/ 'intersection' smart constructor.
+newtype Intersection = Intersection'
+    { _iRules :: Maybe [GcRule]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Intersection' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iRules'
+intersection
+    :: Intersection
+intersection =
+    Intersection'
+    { _iRules = Nothing
+    }
+
+-- | Only delete cells which would be deleted by every element of \`rules\`.
+iRules :: Lens' Intersection [GcRule]
+iRules
+  = lens _iRules (\ s a -> s{_iRules = a}) . _Default .
+      _Coerce
+
+instance FromJSON Intersection where
+        parseJSON
+          = withObject "Intersection"
+              (\ o -> Intersection' <$> (o .:? "rules" .!= mempty))
+
+instance ToJSON Intersection where
+        toJSON Intersection'{..}
+          = object (catMaybes [("rules" .=) <$> _iRules])
+
+-- | A set of columns within a table which share a common configuration.
+--
+-- /See:/ 'columnFamily' smart constructor.
+newtype ColumnFamily = ColumnFamily'
+    { _cfGcRule :: Maybe GcRule
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ColumnFamily' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cfGcRule'
+columnFamily
+    :: ColumnFamily
+columnFamily =
+    ColumnFamily'
+    { _cfGcRule = Nothing
+    }
+
+-- | Garbage collection rule specified as a protobuf. Must serialize to at
+-- most 500 bytes. NOTE: Garbage collection executes opportunistically in
+-- the background, and so it\'s possible for reads to return a cell even if
+-- it matches the active GC expression for its family.
+cfGcRule :: Lens' ColumnFamily (Maybe GcRule)
+cfGcRule = lens _cfGcRule (\ s a -> s{_cfGcRule = a})
+
+instance FromJSON ColumnFamily where
+        parseJSON
+          = withObject "ColumnFamily"
+              (\ o -> ColumnFamily' <$> (o .:? "gcRule"))
+
+instance ToJSON ColumnFamily where
+        toJSON ColumnFamily'{..}
+          = object (catMaybes [("gcRule" .=) <$> _cfGcRule])
+
+-- | Response message for \`TestIamPermissions\` method.
+--
+-- /See:/ 'testIAMPermissionsResponse' smart constructor.
+newtype TestIAMPermissionsResponse = TestIAMPermissionsResponse'
+    { _tiamprPermissions :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestIAMPermissionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiamprPermissions'
+testIAMPermissionsResponse
+    :: TestIAMPermissionsResponse
+testIAMPermissionsResponse =
+    TestIAMPermissionsResponse'
+    { _tiamprPermissions = Nothing
+    }
+
+-- | A subset of \`TestPermissionsRequest.permissions\` that the caller is
+-- allowed.
+tiamprPermissions :: Lens' TestIAMPermissionsResponse [Text]
+tiamprPermissions
+  = lens _tiamprPermissions
+      (\ s a -> s{_tiamprPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TestIAMPermissionsResponse where
+        parseJSON
+          = withObject "TestIAMPermissionsResponse"
+              (\ o ->
+                 TestIAMPermissionsResponse' <$>
+                   (o .:? "permissions" .!= mempty))
+
+instance ToJSON TestIAMPermissionsResponse where
+        toJSON TestIAMPermissionsResponse'{..}
+          = object
+              (catMaybes
+                 [("permissions" .=) <$> _tiamprPermissions])
+
+-- | Response message for BigtableInstanceAdmin.ListClusters.
+--
+-- /See:/ 'listClustersResponse' smart constructor.
+data ListClustersResponse = ListClustersResponse'
+    { _lcrNextPageToken   :: !(Maybe Text)
+    , _lcrFailedLocations :: !(Maybe [Text])
+    , _lcrClusters        :: !(Maybe [Cluster])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcrNextPageToken'
+--
+-- * 'lcrFailedLocations'
+--
+-- * 'lcrClusters'
+listClustersResponse
+    :: ListClustersResponse
+listClustersResponse =
+    ListClustersResponse'
+    { _lcrNextPageToken = Nothing
+    , _lcrFailedLocations = Nothing
+    , _lcrClusters = Nothing
+    }
+
+-- | DEPRECATED: This field is unused and ignored.
+lcrNextPageToken :: Lens' ListClustersResponse (Maybe Text)
+lcrNextPageToken
+  = lens _lcrNextPageToken
+      (\ s a -> s{_lcrNextPageToken = a})
+
+-- | Locations from which Cluster information could not be retrieved, due to
+-- an outage or some other transient condition. Clusters from these
+-- locations may be missing from \`clusters\`, or may only have partial
+-- information returned. Values are of the form \`projects\/\/locations\/\`
+lcrFailedLocations :: Lens' ListClustersResponse [Text]
+lcrFailedLocations
+  = lens _lcrFailedLocations
+      (\ s a -> s{_lcrFailedLocations = a})
+      . _Default
+      . _Coerce
+
+-- | The list of requested clusters.
+lcrClusters :: Lens' ListClustersResponse [Cluster]
+lcrClusters
+  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListClustersResponse where
+        parseJSON
+          = withObject "ListClustersResponse"
+              (\ o ->
+                 ListClustersResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "failedLocations" .!= mempty)
+                     <*> (o .:? "clusters" .!= mempty))
+
+instance ToJSON ListClustersResponse where
+        toJSON ListClustersResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lcrNextPageToken,
+                  ("failedLocations" .=) <$> _lcrFailedLocations,
+                  ("clusters" .=) <$> _lcrClusters])
+
+-- | Defines an Identity and Access Management (IAM) policy. It is used to
+-- specify access control policies for Cloud Platform resources. A
+-- \`Policy\` consists of a list of \`bindings\`. A \`binding\` binds a
+-- list of \`members\` to a \`role\`, where the members can be user
+-- accounts, Google groups, Google domains, and service accounts. A
+-- \`role\` is a named list of permissions defined by IAM. **JSON Example**
+-- { \"bindings\": [ { \"role\": \"roles\/owner\", \"members\": [
+-- \"user:mike\'example.com\", \"group:admins\'example.com\",
+-- \"domain:google.com\",
+-- \"serviceAccount:my-other-app\'appspot.gserviceaccount.com\" ] }, {
+-- \"role\": \"roles\/viewer\", \"members\": [\"user:sean\'example.com\"] }
+-- ] } **YAML Example** bindings: - members: - user:mike\'example.com -
+-- group:admins\'example.com - domain:google.com -
+-- serviceAccount:my-other-app\'appspot.gserviceaccount.com role:
+-- roles\/owner - members: - user:sean\'example.com role: roles\/viewer For
+-- a description of IAM and its features, see the [IAM developer\'s
+-- guide](https:\/\/cloud.google.com\/iam\/docs).
+--
+-- /See:/ 'policy' smart constructor.
+data Policy = Policy'
+    { _pAuditConfigs :: !(Maybe [AuditConfig])
+    , _pEtag         :: !(Maybe Bytes)
+    , _pVersion      :: !(Maybe (Textual Int32))
+    , _pBindings     :: !(Maybe [Binding])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Policy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pAuditConfigs'
+--
+-- * 'pEtag'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+policy
+    :: Policy
+policy =
+    Policy'
+    { _pAuditConfigs = Nothing
+    , _pEtag = Nothing
+    , _pVersion = Nothing
+    , _pBindings = Nothing
+    }
+
+-- | Specifies cloud audit logging configuration for this policy.
+pAuditConfigs :: Lens' Policy [AuditConfig]
+pAuditConfigs
+  = lens _pAuditConfigs
+      (\ s a -> s{_pAuditConfigs = a})
+      . _Default
+      . _Coerce
+
+-- | \`etag\` is used for optimistic concurrency control as a way to help
+-- prevent simultaneous updates of a policy from overwriting each other. It
+-- is strongly suggested that systems make use of the \`etag\` in the
+-- read-modify-write cycle to perform policy updates in order to avoid race
+-- conditions: An \`etag\` is returned in the response to \`getIamPolicy\`,
+-- and systems are expected to put that etag in the request to
+-- \`setIamPolicy\` to ensure that their change will be applied to the same
+-- version of the policy. If no \`etag\` is provided in the call to
+-- \`setIamPolicy\`, then the existing policy is overwritten blindly.
+pEtag :: Lens' Policy (Maybe ByteString)
+pEtag
+  = lens _pEtag (\ s a -> s{_pEtag = a}) .
+      mapping _Bytes
+
+-- | Deprecated.
+pVersion :: Lens' Policy (Maybe Int32)
+pVersion
+  = lens _pVersion (\ s a -> s{_pVersion = a}) .
+      mapping _Coerce
+
+-- | Associates a list of \`members\` to a \`role\`. \`bindings\` with no
+-- members will result in an error.
+pBindings :: Lens' Policy [Binding]
+pBindings
+  = lens _pBindings (\ s a -> s{_pBindings = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "auditConfigs" .!= mempty) <*> (o .:? "etag")
+                     <*> (o .:? "version")
+                     <*> (o .:? "bindings" .!= mempty))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("auditConfigs" .=) <$> _pAuditConfigs,
+                  ("etag" .=) <$> _pEtag, ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings])
+
+-- | The metadata for the Operation returned by CreateInstance.
+--
+-- /See:/ 'createInstanceMetadata' smart constructor.
+data CreateInstanceMetadata = CreateInstanceMetadata'
+    { _cimRequestTime     :: !(Maybe DateTime')
+    , _cimOriginalRequest :: !(Maybe CreateInstanceRequest)
+    , _cimFinishTime      :: !(Maybe DateTime')
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateInstanceMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cimRequestTime'
+--
+-- * 'cimOriginalRequest'
+--
+-- * 'cimFinishTime'
+createInstanceMetadata
+    :: CreateInstanceMetadata
+createInstanceMetadata =
+    CreateInstanceMetadata'
+    { _cimRequestTime = Nothing
+    , _cimOriginalRequest = Nothing
+    , _cimFinishTime = Nothing
+    }
+
+-- | The time at which the original request was received.
+cimRequestTime :: Lens' CreateInstanceMetadata (Maybe UTCTime)
+cimRequestTime
+  = lens _cimRequestTime
+      (\ s a -> s{_cimRequestTime = a})
+      . mapping _DateTime
+
+-- | The request that prompted the initiation of this CreateInstance
+-- operation.
+cimOriginalRequest :: Lens' CreateInstanceMetadata (Maybe CreateInstanceRequest)
+cimOriginalRequest
+  = lens _cimOriginalRequest
+      (\ s a -> s{_cimOriginalRequest = a})
+
+-- | The time at which the operation failed or was completed successfully.
+cimFinishTime :: Lens' CreateInstanceMetadata (Maybe UTCTime)
+cimFinishTime
+  = lens _cimFinishTime
+      (\ s a -> s{_cimFinishTime = a})
+      . mapping _DateTime
+
+instance FromJSON CreateInstanceMetadata where
+        parseJSON
+          = withObject "CreateInstanceMetadata"
+              (\ o ->
+                 CreateInstanceMetadata' <$>
+                   (o .:? "requestTime") <*> (o .:? "originalRequest")
+                     <*> (o .:? "finishTime"))
+
+instance ToJSON CreateInstanceMetadata where
+        toJSON CreateInstanceMetadata'{..}
+          = object
+              (catMaybes
+                 [("requestTime" .=) <$> _cimRequestTime,
+                  ("originalRequest" .=) <$> _cimOriginalRequest,
+                  ("finishTime" .=) <$> _cimFinishTime])
+
+-- | 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:/ 'operationMetadata' smart constructor.
+newtype OperationMetadata = OperationMetadata'
+    { _omAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'omAddtional'
+operationMetadata
+    :: HashMap Text JSONValue -- ^ 'omAddtional'
+    -> OperationMetadata
+operationMetadata pOmAddtional_ =
+    OperationMetadata'
+    { _omAddtional = _Coerce # pOmAddtional_
+    }
+
+-- | Properties of the object. Contains field \'type with type URL.
+omAddtional :: Lens' OperationMetadata (HashMap Text JSONValue)
+omAddtional
+  = lens _omAddtional (\ s a -> s{_omAddtional = a}) .
+      _Coerce
+
+instance FromJSON OperationMetadata where
+        parseJSON
+          = withObject "OperationMetadata"
+              (\ o -> OperationMetadata' <$> (parseJSONObject o))
+
+instance ToJSON OperationMetadata where
+        toJSON = toJSON . _omAddtional
+
+-- | Provides the configuration for logging a type of permissions. Example: {
+-- \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\",
+-- \"exempted_members\": [ \"user:foo\'gmail.com\" ] }, { \"log_type\":
+-- \"DATA_WRITE\", } ] } This enables \'DATA_READ\' and \'DATA_WRITE\'
+-- logging, while exempting foo\'gmail.com from DATA_READ logging.
+--
+-- /See:/ 'auditLogConfig' smart constructor.
+data AuditLogConfig = AuditLogConfig'
+    { _alcLogType         :: !(Maybe AuditLogConfigLogType)
+    , _alcExemptedMembers :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AuditLogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alcLogType'
+--
+-- * 'alcExemptedMembers'
+auditLogConfig
+    :: AuditLogConfig
+auditLogConfig =
+    AuditLogConfig'
+    { _alcLogType = Nothing
+    , _alcExemptedMembers = Nothing
+    }
+
+-- | The log type that this config enables.
+alcLogType :: Lens' AuditLogConfig (Maybe AuditLogConfigLogType)
+alcLogType
+  = lens _alcLogType (\ s a -> s{_alcLogType = a})
+
+-- | Specifies the identities that do not cause logging for this type of
+-- permission. Follows the same format of Binding.members.
+alcExemptedMembers :: Lens' AuditLogConfig [Text]
+alcExemptedMembers
+  = lens _alcExemptedMembers
+      (\ s a -> s{_alcExemptedMembers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditLogConfig where
+        parseJSON
+          = withObject "AuditLogConfig"
+              (\ o ->
+                 AuditLogConfig' <$>
+                   (o .:? "logType") <*>
+                     (o .:? "exemptedMembers" .!= mempty))
+
+instance ToJSON AuditLogConfig where
+        toJSON AuditLogConfig'{..}
+          = object
+              (catMaybes
+                 [("logType" .=) <$> _alcLogType,
+                  ("exemptedMembers" .=) <$> _alcExemptedMembers])
+
+-- | Response message for BigtableInstanceAdmin.ListInstances.
+--
+-- /See:/ 'listInstancesResponse' smart constructor.
+data ListInstancesResponse = ListInstancesResponse'
+    { _lirNextPageToken   :: !(Maybe Text)
+    , _lirFailedLocations :: !(Maybe [Text])
+    , _lirInstances       :: !(Maybe [Instance])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lirNextPageToken'
+--
+-- * 'lirFailedLocations'
+--
+-- * 'lirInstances'
+listInstancesResponse
+    :: ListInstancesResponse
+listInstancesResponse =
+    ListInstancesResponse'
+    { _lirNextPageToken = Nothing
+    , _lirFailedLocations = Nothing
+    , _lirInstances = Nothing
+    }
+
+-- | DEPRECATED: This field is unused and ignored.
+lirNextPageToken :: Lens' ListInstancesResponse (Maybe Text)
+lirNextPageToken
+  = lens _lirNextPageToken
+      (\ s a -> s{_lirNextPageToken = a})
+
+-- | Locations from which Instance information could not be retrieved, due to
+-- an outage or some other transient condition. Instances whose Clusters
+-- are all in one of the failed locations may be missing from
+-- \`instances\`, and Instances with at least one Cluster in a failed
+-- location may only have partial information returned. Values are of the
+-- form \`projects\/\/locations\/\`
+lirFailedLocations :: Lens' ListInstancesResponse [Text]
+lirFailedLocations
+  = lens _lirFailedLocations
+      (\ s a -> s{_lirFailedLocations = a})
+      . _Default
+      . _Coerce
+
+-- | The list of requested instances.
+lirInstances :: Lens' ListInstancesResponse [Instance]
+lirInstances
+  = lens _lirInstances (\ s a -> s{_lirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListInstancesResponse where
+        parseJSON
+          = withObject "ListInstancesResponse"
+              (\ o ->
+                 ListInstancesResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "failedLocations" .!= mempty)
+                     <*> (o .:? "instances" .!= mempty))
+
+instance ToJSON ListInstancesResponse where
+        toJSON ListInstancesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lirNextPageToken,
+                  ("failedLocations" .=) <$> _lirFailedLocations,
+                  ("instances" .=) <$> _lirInstances])
+
+-- | Response message for
+-- google.bigtable.admin.v2.BigtableTableAdmin.CheckConsistency
+--
+-- /See:/ 'checkConsistencyResponse' smart constructor.
+newtype CheckConsistencyResponse = CheckConsistencyResponse'
+    { _ccrConsistent :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CheckConsistencyResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrConsistent'
+checkConsistencyResponse
+    :: CheckConsistencyResponse
+checkConsistencyResponse =
+    CheckConsistencyResponse'
+    { _ccrConsistent = Nothing
+    }
+
+-- | True only if the token is consistent. A token is consistent if
+-- replication has caught up with the restrictions specified in the
+-- request.
+ccrConsistent :: Lens' CheckConsistencyResponse (Maybe Bool)
+ccrConsistent
+  = lens _ccrConsistent
+      (\ s a -> s{_ccrConsistent = a})
+
+instance FromJSON CheckConsistencyResponse where
+        parseJSON
+          = withObject "CheckConsistencyResponse"
+              (\ o ->
+                 CheckConsistencyResponse' <$> (o .:? "consistent"))
+
+instance ToJSON CheckConsistencyResponse where
+        toJSON CheckConsistencyResponse'{..}
+          = object
+              (catMaybes [("consistent" .=) <$> _ccrConsistent])
+
+-- | A create, update, or delete of a particular column family.
+--
+-- /See:/ 'modification' smart constructor.
+data Modification = Modification'
+    { _mDrop   :: !(Maybe Bool)
+    , _mCreate :: !(Maybe ColumnFamily)
+    , _mId     :: !(Maybe Text)
+    , _mUpdate :: !(Maybe ColumnFamily)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Modification' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mDrop'
+--
+-- * 'mCreate'
+--
+-- * 'mId'
+--
+-- * 'mUpdate'
+modification
+    :: Modification
+modification =
+    Modification'
+    { _mDrop = Nothing
+    , _mCreate = Nothing
+    , _mId = Nothing
+    , _mUpdate = Nothing
+    }
+
+-- | Drop (delete) the column family with the given ID, or fail if no such
+-- family exists.
+mDrop :: Lens' Modification (Maybe Bool)
+mDrop = lens _mDrop (\ s a -> s{_mDrop = a})
+
+-- | Create a new column family with the specified schema, or fail if one
+-- already exists with the given ID.
+mCreate :: Lens' Modification (Maybe ColumnFamily)
+mCreate = lens _mCreate (\ s a -> s{_mCreate = a})
+
+-- | The ID of the column family to be modified.
+mId :: Lens' Modification (Maybe Text)
+mId = lens _mId (\ s a -> s{_mId = a})
+
+-- | Update an existing column family to the specified schema, or fail if no
+-- column family exists with the given ID.
+mUpdate :: Lens' Modification (Maybe ColumnFamily)
+mUpdate = lens _mUpdate (\ s a -> s{_mUpdate = a})
+
+instance FromJSON Modification where
+        parseJSON
+          = withObject "Modification"
+              (\ o ->
+                 Modification' <$>
+                   (o .:? "drop") <*> (o .:? "create") <*> (o .:? "id")
+                     <*> (o .:? "update"))
+
+instance ToJSON Modification where
+        toJSON Modification'{..}
+          = object
+              (catMaybes
+                 [("drop" .=) <$> _mDrop, ("create" .=) <$> _mCreate,
+                  ("id" .=) <$> _mId, ("update" .=) <$> _mUpdate])
+
+-- | A collection of user data indexed by row, column, and timestamp. Each
+-- table is served using the resources of its parent cluster.
+--
+-- /See:/ 'table' smart constructor.
+data Table = Table'
+    { _tGranularity    :: !(Maybe TableGranularity)
+    , _tName           :: !(Maybe Text)
+    , _tClusterStates  :: !(Maybe TableClusterStates)
+    , _tColumnFamilies :: !(Maybe TableColumnFamilies)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Table' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tGranularity'
+--
+-- * 'tName'
+--
+-- * 'tClusterStates'
+--
+-- * 'tColumnFamilies'
+table
+    :: Table
+table =
+    Table'
+    { _tGranularity = Nothing
+    , _tName = Nothing
+    , _tClusterStates = Nothing
+    , _tColumnFamilies = Nothing
+    }
+
+-- | (\`CreationOnly\`) The granularity (i.e. \`MILLIS\`) at which timestamps
+-- are stored in this table. Timestamps not matching the granularity will
+-- be rejected. If unspecified at creation time, the value will be set to
+-- \`MILLIS\`. Views: \`SCHEMA_VIEW\`, \`FULL\`
+tGranularity :: Lens' Table (Maybe TableGranularity)
+tGranularity
+  = lens _tGranularity (\ s a -> s{_tGranularity = a})
+
+-- | (\`OutputOnly\`) The unique name of the table. Values are of the form
+-- \`projects\/\/instances\/\/tables\/_a-zA-Z0-9*\`. Views: \`NAME_ONLY\`,
+-- \`SCHEMA_VIEW\`, \`REPLICATION_VIEW\`, \`FULL\`
+tName :: Lens' Table (Maybe Text)
+tName = lens _tName (\ s a -> s{_tName = a})
+
+-- | (\`OutputOnly\`) Map from cluster ID to per-cluster table state. If it
+-- could not be determined whether or not the table has data in a
+-- particular cluster (for example, if its zone is unavailable), then there
+-- will be an entry for the cluster with UNKNOWN \`replication_status\`.
+-- Views: \`REPLICATION_VIEW\`, \`FULL\`
+tClusterStates :: Lens' Table (Maybe TableClusterStates)
+tClusterStates
+  = lens _tClusterStates
+      (\ s a -> s{_tClusterStates = a})
+
+-- | (\`CreationOnly\`) The column families configured for this table, mapped
+-- by column family ID. Views: \`SCHEMA_VIEW\`, \`FULL\`
+tColumnFamilies :: Lens' Table (Maybe TableColumnFamilies)
+tColumnFamilies
+  = lens _tColumnFamilies
+      (\ s a -> s{_tColumnFamilies = a})
+
+instance FromJSON Table where
+        parseJSON
+          = withObject "Table"
+              (\ o ->
+                 Table' <$>
+                   (o .:? "granularity") <*> (o .:? "name") <*>
+                     (o .:? "clusterStates")
+                     <*> (o .:? "columnFamilies"))
+
+instance ToJSON Table where
+        toJSON Table'{..}
+          = object
+              (catMaybes
+                 [("granularity" .=) <$> _tGranularity,
+                  ("name" .=) <$> _tName,
+                  ("clusterStates" .=) <$> _tClusterStates,
+                  ("columnFamilies" .=) <$> _tColumnFamilies])
+
+-- | 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:/ 'operationResponse' smart constructor.
+newtype OperationResponse = OperationResponse'
+    { _orAddtional :: HashMap Text JSONValue
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'orAddtional'
+operationResponse
+    :: HashMap Text JSONValue -- ^ 'orAddtional'
+    -> OperationResponse
+operationResponse pOrAddtional_ =
+    OperationResponse'
+    { _orAddtional = _Coerce # pOrAddtional_
+    }
+
+-- | Properties of the object. Contains field \'type with type URL.
+orAddtional :: Lens' OperationResponse (HashMap Text JSONValue)
+orAddtional
+  = lens _orAddtional (\ s a -> s{_orAddtional = a}) .
+      _Coerce
+
+instance FromJSON OperationResponse where
+        parseJSON
+          = withObject "OperationResponse"
+              (\ o -> OperationResponse' <$> (parseJSONObject o))
+
+instance ToJSON OperationResponse where
+        toJSON = toJSON . _orAddtional
+
+-- | Associates \`members\` with a \`role\`.
+--
+-- /See:/ 'binding' smart constructor.
+data Binding = Binding'
+    { _bMembers   :: !(Maybe [Text])
+    , _bRole      :: !(Maybe Text)
+    , _bCondition :: !(Maybe Expr)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Binding' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bMembers'
+--
+-- * 'bRole'
+--
+-- * 'bCondition'
+binding
+    :: Binding
+binding =
+    Binding'
+    { _bMembers = Nothing
+    , _bRole = Nothing
+    , _bCondition = Nothing
+    }
+
+-- | Specifies the identities requesting access for a Cloud Platform
+-- resource. \`members\` can have the following values: * \`allUsers\`: A
+-- special identifier that represents anyone who is on the internet; with
+-- or without a Google account. * \`allAuthenticatedUsers\`: A special
+-- identifier that represents anyone who is authenticated with a Google
+-- account or a service account. * \`user:{emailid}\`: An email address
+-- that represents a specific Google account. For example,
+-- \`alice\'gmail.com\` . * \`serviceAccount:{emailid}\`: An email address
+-- that represents a service account. For example,
+-- \`my-other-app\'appspot.gserviceaccount.com\`. * \`group:{emailid}\`: An
+-- email address that represents a Google group. For example,
+-- \`admins\'example.com\`. * \`domain:{domain}\`: A Google Apps domain
+-- name that represents all the users of that domain. For example,
+-- \`google.com\` or \`example.com\`.
+bMembers :: Lens' Binding [Text]
+bMembers
+  = lens _bMembers (\ s a -> s{_bMembers = a}) .
+      _Default
+      . _Coerce
+
+-- | Role that is assigned to \`members\`. For example, \`roles\/viewer\`,
+-- \`roles\/editor\`, or \`roles\/owner\`.
+bRole :: Lens' Binding (Maybe Text)
+bRole = lens _bRole (\ s a -> s{_bRole = a})
+
+-- | Unimplemented. The condition that is associated with this binding. NOTE:
+-- an unsatisfied condition will not allow user access via current binding.
+-- Different bindings, including their conditions, are examined
+-- independently.
+bCondition :: Lens' Binding (Maybe Expr)
+bCondition
+  = lens _bCondition (\ s a -> s{_bCondition = a})
+
+instance FromJSON Binding where
+        parseJSON
+          = withObject "Binding"
+              (\ o ->
+                 Binding' <$>
+                   (o .:? "members" .!= mempty) <*> (o .:? "role") <*>
+                     (o .:? "condition"))
+
+instance ToJSON Binding where
+        toJSON Binding'{..}
+          = object
+              (catMaybes
+                 [("members" .=) <$> _bMembers,
+                  ("role" .=) <$> _bRole,
+                  ("condition" .=) <$> _bCondition])
+
+-- | A collection of Bigtable Tables and the resources that serve them. All
+-- tables in an instance are served from all Clusters in the instance.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+    { _iState       :: !(Maybe InstanceState)
+    , _iName        :: !(Maybe Text)
+    , _iDisplayName :: !(Maybe Text)
+    , _iLabels      :: !(Maybe InstanceLabels)
+    , _iType        :: !(Maybe InstanceType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Instance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iState'
+--
+-- * 'iName'
+--
+-- * 'iDisplayName'
+--
+-- * 'iLabels'
+--
+-- * 'iType'
+instance'
+    :: Instance
+instance' =
+    Instance'
+    { _iState = Nothing
+    , _iName = Nothing
+    , _iDisplayName = Nothing
+    , _iLabels = Nothing
+    , _iType = Nothing
+    }
+
+-- | (\`OutputOnly\`) The current state of the instance.
+iState :: Lens' Instance (Maybe InstanceState)
+iState = lens _iState (\ s a -> s{_iState = a})
+
+-- | (\`OutputOnly\`) The unique name of the instance. Values are of the form
+-- \`projects\/\/instances\/a-z+[a-z0-9]\`.
+iName :: Lens' Instance (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+-- | The descriptive name for this instance as it appears in UIs. Can be
+-- changed at any time, but should be kept globally unique to avoid
+-- confusion.
+iDisplayName :: Lens' Instance (Maybe Text)
+iDisplayName
+  = lens _iDisplayName (\ s a -> s{_iDisplayName = a})
+
+-- | Labels are a flexible and lightweight mechanism for organizing cloud
+-- resources into groups that reflect a customer\'s organizational needs
+-- and deployment strategies. They can be used to filter resources and
+-- aggregate metrics. * Label keys must be between 1 and 63 characters long
+-- and must conform to the regular expression: \`\\p{Ll}\\p{Lo}{0,62}\`. *
+-- Label values must be between 0 and 63 characters long and must conform
+-- to the regular expression: \`[\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\`. * No more
+-- than 64 labels can be associated with a given resource. * Keys and
+-- values must both be under 128 bytes.
+iLabels :: Lens' Instance (Maybe InstanceLabels)
+iLabels = lens _iLabels (\ s a -> s{_iLabels = a})
+
+-- | The type of the instance. Defaults to \`PRODUCTION\`.
+iType :: Lens' Instance (Maybe InstanceType)
+iType = lens _iType (\ s a -> s{_iType = a})
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ o ->
+                 Instance' <$>
+                   (o .:? "state") <*> (o .:? "name") <*>
+                     (o .:? "displayName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "type"))
+
+instance ToJSON Instance where
+        toJSON Instance'{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _iState, ("name" .=) <$> _iName,
+                  ("displayName" .=) <$> _iDisplayName,
+                  ("labels" .=) <$> _iLabels, ("type" .=) <$> _iType])
diff --git a/gen/Network/Google/BigtableAdmin/Types/Sum.hs b/gen/Network/Google/BigtableAdmin/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/BigtableAdmin/Types/Sum.hs
@@ -0,0 +1,335 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.BigtableAdmin.Types.Sum
+-- 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)
+--
+module Network.Google.BigtableAdmin.Types.Sum where
+
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | (\`CreationOnly\`) The type of storage used by this cluster to serve its
+-- parent instance\'s tables, unless explicitly overridden.
+data ClusterDefaultStorageType
+    = StorageTypeUnspecified
+      -- ^ @STORAGE_TYPE_UNSPECIFIED@
+      -- The user did not specify a storage type.
+    | Ssd
+      -- ^ @SSD@
+      -- Flash (SSD) storage should be used.
+    | Hdd
+      -- ^ @HDD@
+      -- Magnetic drive (HDD) storage should be used.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterDefaultStorageType
+
+instance FromHttpApiData ClusterDefaultStorageType where
+    parseQueryParam = \case
+        "STORAGE_TYPE_UNSPECIFIED" -> Right StorageTypeUnspecified
+        "SSD" -> Right Ssd
+        "HDD" -> Right Hdd
+        x -> Left ("Unable to parse ClusterDefaultStorageType from: " <> x)
+
+instance ToHttpApiData ClusterDefaultStorageType where
+    toQueryParam = \case
+        StorageTypeUnspecified -> "STORAGE_TYPE_UNSPECIFIED"
+        Ssd -> "SSD"
+        Hdd -> "HDD"
+
+instance FromJSON ClusterDefaultStorageType where
+    parseJSON = parseJSONText "ClusterDefaultStorageType"
+
+instance ToJSON ClusterDefaultStorageType where
+    toJSON = toJSONText
+
+-- | (\`OutputOnly\`) The state of replication for the table in this cluster.
+data ClusterStateReplicationState
+    = StateNotKnown
+      -- ^ @STATE_NOT_KNOWN@
+      -- The replication state of the table is unknown in this cluster.
+    | Initializing
+      -- ^ @INITIALIZING@
+      -- The cluster was recently created, and the table must finish copying over
+      -- pre-existing data from other clusters before it can begin receiving live
+      -- replication updates and serving Data API requests.
+    | PlannedMaintenance
+      -- ^ @PLANNED_MAINTENANCE@
+      -- The table is temporarily unable to serve Data API requests from this
+      -- cluster due to planned internal maintenance.
+    | UnplannedMaintenance
+      -- ^ @UNPLANNED_MAINTENANCE@
+      -- The table is temporarily unable to serve Data API requests from this
+      -- cluster due to unplanned or emergency maintenance.
+    | Ready
+      -- ^ @READY@
+      -- The table can serve Data API requests from this cluster. Depending on
+      -- replication delay, reads may not immediately reflect the state of the
+      -- table in other clusters.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterStateReplicationState
+
+instance FromHttpApiData ClusterStateReplicationState where
+    parseQueryParam = \case
+        "STATE_NOT_KNOWN" -> Right StateNotKnown
+        "INITIALIZING" -> Right Initializing
+        "PLANNED_MAINTENANCE" -> Right PlannedMaintenance
+        "UNPLANNED_MAINTENANCE" -> Right UnplannedMaintenance
+        "READY" -> Right Ready
+        x -> Left ("Unable to parse ClusterStateReplicationState from: " <> x)
+
+instance ToHttpApiData ClusterStateReplicationState where
+    toQueryParam = \case
+        StateNotKnown -> "STATE_NOT_KNOWN"
+        Initializing -> "INITIALIZING"
+        PlannedMaintenance -> "PLANNED_MAINTENANCE"
+        UnplannedMaintenance -> "UNPLANNED_MAINTENANCE"
+        Ready -> "READY"
+
+instance FromJSON ClusterStateReplicationState where
+    parseJSON = parseJSONText "ClusterStateReplicationState"
+
+instance ToJSON ClusterStateReplicationState where
+    toJSON = toJSONText
+
+-- | The type of the instance. Defaults to \`PRODUCTION\`.
+data InstanceType
+    = TypeUnspecified
+      -- ^ @TYPE_UNSPECIFIED@
+      -- The type of the instance is unspecified. If set when creating an
+      -- instance, a \`PRODUCTION\` instance will be created. If set when
+      -- updating an instance, the type will be left unchanged.
+    | Production
+      -- ^ @PRODUCTION@
+      -- An instance meant for production use. \`serve_nodes\` must be set on the
+      -- cluster.
+    | Development
+      -- ^ @DEVELOPMENT@
+      -- The instance is meant for development and testing purposes only; it has
+      -- no performance or uptime guarantees and is not covered by SLA. After a
+      -- development instance is created, it can be upgraded by updating the
+      -- instance to type \`PRODUCTION\`. An instance created as a production
+      -- instance cannot be changed to a development instance. When creating a
+      -- development instance, \`serve_nodes\` on the cluster must not be set.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceType
+
+instance FromHttpApiData InstanceType where
+    parseQueryParam = \case
+        "TYPE_UNSPECIFIED" -> Right TypeUnspecified
+        "PRODUCTION" -> Right Production
+        "DEVELOPMENT" -> Right Development
+        x -> Left ("Unable to parse InstanceType from: " <> x)
+
+instance ToHttpApiData InstanceType where
+    toQueryParam = \case
+        TypeUnspecified -> "TYPE_UNSPECIFIED"
+        Production -> "PRODUCTION"
+        Development -> "DEVELOPMENT"
+
+instance FromJSON InstanceType where
+    parseJSON = parseJSONText "InstanceType"
+
+instance ToJSON InstanceType where
+    toJSON = toJSONText
+
+-- | The log type that this config enables.
+data AuditLogConfigLogType
+    = LogTypeUnspecified
+      -- ^ @LOG_TYPE_UNSPECIFIED@
+      -- Default case. Should never be this.
+    | AdminRead
+      -- ^ @ADMIN_READ@
+      -- Admin reads. Example: CloudIAM getIamPolicy
+    | DataWrite
+      -- ^ @DATA_WRITE@
+      -- Data writes. Example: CloudSQL Users create
+    | DataRead
+      -- ^ @DATA_READ@
+      -- Data reads. Example: CloudSQL Users list
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AuditLogConfigLogType
+
+instance FromHttpApiData AuditLogConfigLogType where
+    parseQueryParam = \case
+        "LOG_TYPE_UNSPECIFIED" -> Right LogTypeUnspecified
+        "ADMIN_READ" -> Right AdminRead
+        "DATA_WRITE" -> Right DataWrite
+        "DATA_READ" -> Right DataRead
+        x -> Left ("Unable to parse AuditLogConfigLogType from: " <> x)
+
+instance ToHttpApiData AuditLogConfigLogType where
+    toQueryParam = \case
+        LogTypeUnspecified -> "LOG_TYPE_UNSPECIFIED"
+        AdminRead -> "ADMIN_READ"
+        DataWrite -> "DATA_WRITE"
+        DataRead -> "DATA_READ"
+
+instance FromJSON AuditLogConfigLogType where
+    parseJSON = parseJSONText "AuditLogConfigLogType"
+
+instance ToJSON AuditLogConfigLogType where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
+
+-- | (\`CreationOnly\`) The granularity (i.e. \`MILLIS\`) at which timestamps
+-- are stored in this table. Timestamps not matching the granularity will
+-- be rejected. If unspecified at creation time, the value will be set to
+-- \`MILLIS\`. Views: \`SCHEMA_VIEW\`, \`FULL\`
+data TableGranularity
+    = TimestampGranularityUnspecified
+      -- ^ @TIMESTAMP_GRANULARITY_UNSPECIFIED@
+      -- The user did not specify a granularity. Should not be returned. When
+      -- specified during table creation, MILLIS will be used.
+    | Millis
+      -- ^ @MILLIS@
+      -- The table keeps data versioned at a granularity of 1ms.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable TableGranularity
+
+instance FromHttpApiData TableGranularity where
+    parseQueryParam = \case
+        "TIMESTAMP_GRANULARITY_UNSPECIFIED" -> Right TimestampGranularityUnspecified
+        "MILLIS" -> Right Millis
+        x -> Left ("Unable to parse TableGranularity from: " <> x)
+
+instance ToHttpApiData TableGranularity where
+    toQueryParam = \case
+        TimestampGranularityUnspecified -> "TIMESTAMP_GRANULARITY_UNSPECIFIED"
+        Millis -> "MILLIS"
+
+instance FromJSON TableGranularity where
+    parseJSON = parseJSONText "TableGranularity"
+
+instance ToJSON TableGranularity where
+    toJSON = toJSONText
+
+-- | (\`OutputOnly\`) The current state of the cluster.
+data ClusterType
+    = CTStateNotKnown
+      -- ^ @STATE_NOT_KNOWN@
+      -- The state of the cluster could not be determined.
+    | CTReady
+      -- ^ @READY@
+      -- The cluster has been successfully created and is ready to serve
+      -- requests.
+    | CTCreating
+      -- ^ @CREATING@
+      -- The cluster is currently being created, and may be destroyed if the
+      -- creation process encounters an error. A cluster may not be able to serve
+      -- requests while being created.
+    | CTResizing
+      -- ^ @RESIZING@
+      -- The cluster is currently being resized, and may revert to its previous
+      -- node count if the process encounters an error. A cluster is still
+      -- capable of serving requests while being resized, but may exhibit
+      -- performance as if its number of allocated nodes is between the starting
+      -- and requested states.
+    | CTDisabled
+      -- ^ @DISABLED@
+      -- The cluster has no backing nodes. The data (tables) still exist, but no
+      -- operations can be performed on the cluster.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterType
+
+instance FromHttpApiData ClusterType where
+    parseQueryParam = \case
+        "STATE_NOT_KNOWN" -> Right CTStateNotKnown
+        "READY" -> Right CTReady
+        "CREATING" -> Right CTCreating
+        "RESIZING" -> Right CTResizing
+        "DISABLED" -> Right CTDisabled
+        x -> Left ("Unable to parse ClusterType from: " <> x)
+
+instance ToHttpApiData ClusterType where
+    toQueryParam = \case
+        CTStateNotKnown -> "STATE_NOT_KNOWN"
+        CTReady -> "READY"
+        CTCreating -> "CREATING"
+        CTResizing -> "RESIZING"
+        CTDisabled -> "DISABLED"
+
+instance FromJSON ClusterType where
+    parseJSON = parseJSONText "ClusterType"
+
+instance ToJSON ClusterType where
+    toJSON = toJSONText
+
+-- | (\`OutputOnly\`) The current state of the instance.
+data InstanceState
+    = ISStateNotKnown
+      -- ^ @STATE_NOT_KNOWN@
+      -- The state of the instance could not be determined.
+    | ISReady
+      -- ^ @READY@
+      -- The instance has been successfully created and can serve requests to its
+      -- tables.
+    | ISCreating
+      -- ^ @CREATING@
+      -- The instance is currently being created, and may be destroyed if the
+      -- creation process encounters an error.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceState
+
+instance FromHttpApiData InstanceState where
+    parseQueryParam = \case
+        "STATE_NOT_KNOWN" -> Right ISStateNotKnown
+        "READY" -> Right ISReady
+        "CREATING" -> Right ISCreating
+        x -> Left ("Unable to parse InstanceState from: " <> x)
+
+instance ToHttpApiData InstanceState where
+    toQueryParam = \case
+        ISStateNotKnown -> "STATE_NOT_KNOWN"
+        ISReady -> "READY"
+        ISCreating -> "CREATING"
+
+instance FromJSON InstanceState where
+    parseJSON = parseJSONText "InstanceState"
+
+instance ToJSON InstanceState where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Operations/Cancel.hs b/gen/Network/Google/Resource/BigtableAdmin/Operations/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Operations/Cancel.hs
@@ -0,0 +1,164 @@
+{-# 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.BigtableAdmin.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/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.operations.cancel@.
+module Network.Google.Resource.BigtableAdmin.Operations.Cancel
+    (
+    -- * REST Resource
+      OperationsCancelResource
+
+    -- * Creating a Request
+    , operationsCancel
+    , OperationsCancel
+
+    -- * Request Lenses
+    , ocXgafv
+    , ocUploadProtocol
+    , ocAccessToken
+    , ocUploadType
+    , ocName
+    , ocCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.operations.cancel@ method which the
+-- 'OperationsCancel' request conforms to.
+type OperationsCancelResource =
+     "v2" :>
+       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:/ 'operationsCancel' smart constructor.
+data OperationsCancel = OperationsCancel'
+    { _ocXgafv          :: !(Maybe Xgafv)
+    , _ocUploadProtocol :: !(Maybe Text)
+    , _ocAccessToken    :: !(Maybe Text)
+    , _ocUploadType     :: !(Maybe Text)
+    , _ocName           :: !Text
+    , _ocCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsCancel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ocXgafv'
+--
+-- * 'ocUploadProtocol'
+--
+-- * 'ocAccessToken'
+--
+-- * 'ocUploadType'
+--
+-- * 'ocName'
+--
+-- * 'ocCallback'
+operationsCancel
+    :: Text -- ^ 'ocName'
+    -> OperationsCancel
+operationsCancel pOcName_ =
+    OperationsCancel'
+    { _ocXgafv = Nothing
+    , _ocUploadProtocol = Nothing
+    , _ocAccessToken = Nothing
+    , _ocUploadType = Nothing
+    , _ocName = pOcName_
+    , _ocCallback = Nothing
+    }
+
+-- | V1 error format.
+ocXgafv :: Lens' OperationsCancel (Maybe Xgafv)
+ocXgafv = lens _ocXgafv (\ s a -> s{_ocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+ocUploadProtocol :: Lens' OperationsCancel (Maybe Text)
+ocUploadProtocol
+  = lens _ocUploadProtocol
+      (\ s a -> s{_ocUploadProtocol = a})
+
+-- | OAuth access token.
+ocAccessToken :: Lens' OperationsCancel (Maybe Text)
+ocAccessToken
+  = lens _ocAccessToken
+      (\ s a -> s{_ocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+ocUploadType :: Lens' OperationsCancel (Maybe Text)
+ocUploadType
+  = lens _ocUploadType (\ s a -> s{_ocUploadType = a})
+
+-- | The name of the operation resource to be cancelled.
+ocName :: Lens' OperationsCancel Text
+ocName = lens _ocName (\ s a -> s{_ocName = a})
+
+-- | JSONP
+ocCallback :: Lens' OperationsCancel (Maybe Text)
+ocCallback
+  = lens _ocCallback (\ s a -> s{_ocCallback = a})
+
+instance GoogleRequest OperationsCancel where
+        type Rs OperationsCancel = Empty
+        type Scopes OperationsCancel =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient OperationsCancel'{..}
+          = go _ocName _ocXgafv _ocUploadProtocol
+              _ocAccessToken
+              _ocUploadType
+              _ocCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy OperationsCancelResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Operations/Delete.hs b/gen/Network/Google/Resource/BigtableAdmin/Operations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Operations/Delete.hs
@@ -0,0 +1,154 @@
+{-# 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.BigtableAdmin.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/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.operations.delete@.
+module Network.Google.Resource.BigtableAdmin.Operations.Delete
+    (
+    -- * REST Resource
+      OperationsDeleteResource
+
+    -- * Creating a Request
+    , operationsDelete
+    , OperationsDelete
+
+    -- * Request Lenses
+    , odXgafv
+    , odUploadProtocol
+    , odAccessToken
+    , odUploadType
+    , odName
+    , odCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.operations.delete@ method which the
+-- 'OperationsDelete' request conforms to.
+type OperationsDeleteResource =
+     "v2" :>
+       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:/ 'operationsDelete' smart constructor.
+data OperationsDelete = OperationsDelete'
+    { _odXgafv          :: !(Maybe Xgafv)
+    , _odUploadProtocol :: !(Maybe Text)
+    , _odAccessToken    :: !(Maybe Text)
+    , _odUploadType     :: !(Maybe Text)
+    , _odName           :: !Text
+    , _odCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'odXgafv'
+--
+-- * 'odUploadProtocol'
+--
+-- * 'odAccessToken'
+--
+-- * 'odUploadType'
+--
+-- * 'odName'
+--
+-- * 'odCallback'
+operationsDelete
+    :: Text -- ^ 'odName'
+    -> OperationsDelete
+operationsDelete pOdName_ =
+    OperationsDelete'
+    { _odXgafv = Nothing
+    , _odUploadProtocol = Nothing
+    , _odAccessToken = Nothing
+    , _odUploadType = Nothing
+    , _odName = pOdName_
+    , _odCallback = Nothing
+    }
+
+-- | V1 error format.
+odXgafv :: Lens' OperationsDelete (Maybe Xgafv)
+odXgafv = lens _odXgafv (\ s a -> s{_odXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+odUploadProtocol :: Lens' OperationsDelete (Maybe Text)
+odUploadProtocol
+  = lens _odUploadProtocol
+      (\ s a -> s{_odUploadProtocol = a})
+
+-- | OAuth access token.
+odAccessToken :: Lens' OperationsDelete (Maybe Text)
+odAccessToken
+  = lens _odAccessToken
+      (\ s a -> s{_odAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+odUploadType :: Lens' OperationsDelete (Maybe Text)
+odUploadType
+  = lens _odUploadType (\ s a -> s{_odUploadType = a})
+
+-- | The name of the operation resource to be deleted.
+odName :: Lens' OperationsDelete Text
+odName = lens _odName (\ s a -> s{_odName = a})
+
+-- | JSONP
+odCallback :: Lens' OperationsDelete (Maybe Text)
+odCallback
+  = lens _odCallback (\ s a -> s{_odCallback = a})
+
+instance GoogleRequest OperationsDelete where
+        type Rs OperationsDelete = Empty
+        type Scopes OperationsDelete =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient OperationsDelete'{..}
+          = go _odName _odXgafv _odUploadProtocol
+              _odAccessToken
+              _odUploadType
+              _odCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy OperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Operations/Get.hs b/gen/Network/Google/Resource/BigtableAdmin/Operations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Operations/Get.hs
@@ -0,0 +1,152 @@
+{-# 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.BigtableAdmin.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/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.operations.get@.
+module Network.Google.Resource.BigtableAdmin.Operations.Get
+    (
+    -- * REST Resource
+      OperationsGetResource
+
+    -- * Creating a Request
+    , operationsGet
+    , OperationsGet
+
+    -- * Request Lenses
+    , ogXgafv
+    , ogUploadProtocol
+    , ogAccessToken
+    , ogUploadType
+    , ogName
+    , ogCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.operations.get@ method which the
+-- 'OperationsGet' request conforms to.
+type OperationsGetResource =
+     "v2" :>
+       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] Operation
+
+-- | 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:/ 'operationsGet' smart constructor.
+data OperationsGet = OperationsGet'
+    { _ogXgafv          :: !(Maybe Xgafv)
+    , _ogUploadProtocol :: !(Maybe Text)
+    , _ogAccessToken    :: !(Maybe Text)
+    , _ogUploadType     :: !(Maybe Text)
+    , _ogName           :: !Text
+    , _ogCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ogXgafv'
+--
+-- * 'ogUploadProtocol'
+--
+-- * 'ogAccessToken'
+--
+-- * 'ogUploadType'
+--
+-- * 'ogName'
+--
+-- * 'ogCallback'
+operationsGet
+    :: Text -- ^ 'ogName'
+    -> OperationsGet
+operationsGet pOgName_ =
+    OperationsGet'
+    { _ogXgafv = Nothing
+    , _ogUploadProtocol = Nothing
+    , _ogAccessToken = Nothing
+    , _ogUploadType = Nothing
+    , _ogName = pOgName_
+    , _ogCallback = Nothing
+    }
+
+-- | V1 error format.
+ogXgafv :: Lens' OperationsGet (Maybe Xgafv)
+ogXgafv = lens _ogXgafv (\ s a -> s{_ogXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+ogUploadProtocol :: Lens' OperationsGet (Maybe Text)
+ogUploadProtocol
+  = lens _ogUploadProtocol
+      (\ s a -> s{_ogUploadProtocol = a})
+
+-- | OAuth access token.
+ogAccessToken :: Lens' OperationsGet (Maybe Text)
+ogAccessToken
+  = lens _ogAccessToken
+      (\ s a -> s{_ogAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+ogUploadType :: Lens' OperationsGet (Maybe Text)
+ogUploadType
+  = lens _ogUploadType (\ s a -> s{_ogUploadType = a})
+
+-- | The name of the operation resource.
+ogName :: Lens' OperationsGet Text
+ogName = lens _ogName (\ s a -> s{_ogName = a})
+
+-- | JSONP
+ogCallback :: Lens' OperationsGet (Maybe Text)
+ogCallback
+  = lens _ogCallback (\ s a -> s{_ogCallback = a})
+
+instance GoogleRequest OperationsGet where
+        type Rs OperationsGet = Operation
+        type Scopes OperationsGet =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient OperationsGet'{..}
+          = go _ogName _ogXgafv _ogUploadProtocol
+              _ogAccessToken
+              _ogUploadType
+              _ogCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient (Proxy :: Proxy OperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Operations/Projects/Operations/List.hs b/gen/Network/Google/Resource/BigtableAdmin/Operations/Projects/Operations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Operations/Projects/Operations/List.hs
@@ -0,0 +1,212 @@
+{-# 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.BigtableAdmin.Operations.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/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.operations.projects.operations.list@.
+module Network.Google.Resource.BigtableAdmin.Operations.Projects.Operations.List
+    (
+    -- * REST Resource
+      OperationsProjectsOperationsListResource
+
+    -- * Creating a Request
+    , operationsProjectsOperationsList
+    , OperationsProjectsOperationsList
+
+    -- * Request Lenses
+    , opolXgafv
+    , opolUploadProtocol
+    , opolAccessToken
+    , opolUploadType
+    , opolName
+    , opolFilter
+    , opolPageToken
+    , opolPageSize
+    , opolCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.operations.projects.operations.list@ method which the
+-- 'OperationsProjectsOperationsList' request conforms to.
+type OperationsProjectsOperationsListResource =
+     "v2" :>
+       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] ListOperationsResponse
+
+-- | 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:/ 'operationsProjectsOperationsList' smart constructor.
+data OperationsProjectsOperationsList = OperationsProjectsOperationsList'
+    { _opolXgafv          :: !(Maybe Xgafv)
+    , _opolUploadProtocol :: !(Maybe Text)
+    , _opolAccessToken    :: !(Maybe Text)
+    , _opolUploadType     :: !(Maybe Text)
+    , _opolName           :: !Text
+    , _opolFilter         :: !(Maybe Text)
+    , _opolPageToken      :: !(Maybe Text)
+    , _opolPageSize       :: !(Maybe (Textual Int32))
+    , _opolCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsProjectsOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'opolXgafv'
+--
+-- * 'opolUploadProtocol'
+--
+-- * 'opolAccessToken'
+--
+-- * 'opolUploadType'
+--
+-- * 'opolName'
+--
+-- * 'opolFilter'
+--
+-- * 'opolPageToken'
+--
+-- * 'opolPageSize'
+--
+-- * 'opolCallback'
+operationsProjectsOperationsList
+    :: Text -- ^ 'opolName'
+    -> OperationsProjectsOperationsList
+operationsProjectsOperationsList pOpolName_ =
+    OperationsProjectsOperationsList'
+    { _opolXgafv = Nothing
+    , _opolUploadProtocol = Nothing
+    , _opolAccessToken = Nothing
+    , _opolUploadType = Nothing
+    , _opolName = pOpolName_
+    , _opolFilter = Nothing
+    , _opolPageToken = Nothing
+    , _opolPageSize = Nothing
+    , _opolCallback = Nothing
+    }
+
+-- | V1 error format.
+opolXgafv :: Lens' OperationsProjectsOperationsList (Maybe Xgafv)
+opolXgafv
+  = lens _opolXgafv (\ s a -> s{_opolXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+opolUploadProtocol :: Lens' OperationsProjectsOperationsList (Maybe Text)
+opolUploadProtocol
+  = lens _opolUploadProtocol
+      (\ s a -> s{_opolUploadProtocol = a})
+
+-- | OAuth access token.
+opolAccessToken :: Lens' OperationsProjectsOperationsList (Maybe Text)
+opolAccessToken
+  = lens _opolAccessToken
+      (\ s a -> s{_opolAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+opolUploadType :: Lens' OperationsProjectsOperationsList (Maybe Text)
+opolUploadType
+  = lens _opolUploadType
+      (\ s a -> s{_opolUploadType = a})
+
+-- | The name of the operation\'s parent resource.
+opolName :: Lens' OperationsProjectsOperationsList Text
+opolName = lens _opolName (\ s a -> s{_opolName = a})
+
+-- | The standard list filter.
+opolFilter :: Lens' OperationsProjectsOperationsList (Maybe Text)
+opolFilter
+  = lens _opolFilter (\ s a -> s{_opolFilter = a})
+
+-- | The standard list page token.
+opolPageToken :: Lens' OperationsProjectsOperationsList (Maybe Text)
+opolPageToken
+  = lens _opolPageToken
+      (\ s a -> s{_opolPageToken = a})
+
+-- | The standard list page size.
+opolPageSize :: Lens' OperationsProjectsOperationsList (Maybe Int32)
+opolPageSize
+  = lens _opolPageSize (\ s a -> s{_opolPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+opolCallback :: Lens' OperationsProjectsOperationsList (Maybe Text)
+opolCallback
+  = lens _opolCallback (\ s a -> s{_opolCallback = a})
+
+instance GoogleRequest
+         OperationsProjectsOperationsList where
+        type Rs OperationsProjectsOperationsList =
+             ListOperationsResponse
+        type Scopes OperationsProjectsOperationsList =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient OperationsProjectsOperationsList'{..}
+          = go _opolName _opolXgafv _opolUploadProtocol
+              _opolAccessToken
+              _opolUploadType
+              _opolFilter
+              _opolPageToken
+              _opolPageSize
+              _opolCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy OperationsProjectsOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Create.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Create.hs
@@ -0,0 +1,199 @@
+{-# 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.BigtableAdmin.Projects.Instances.AppProFiles.Create
+-- 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)
+--
+-- Creates an app profile within an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.appProfiles.create@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Create
+    (
+    -- * REST Resource
+      ProjectsInstancesAppProFilesCreateResource
+
+    -- * Creating a Request
+    , projectsInstancesAppProFilesCreate
+    , ProjectsInstancesAppProFilesCreate
+
+    -- * Request Lenses
+    , piapfcParent
+    , piapfcXgafv
+    , piapfcAppProFileId
+    , piapfcUploadProtocol
+    , piapfcAccessToken
+    , piapfcUploadType
+    , piapfcPayload
+    , piapfcIgnoreWarnings
+    , piapfcCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.appProfiles.create@ method which the
+-- 'ProjectsInstancesAppProFilesCreate' request conforms to.
+type ProjectsInstancesAppProFilesCreateResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "appProfiles" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "appProfileId" Text :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "ignoreWarnings" Bool :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] AppProFile :> Post '[JSON] AppProFile
+
+-- | Creates an app profile within an instance.
+--
+-- /See:/ 'projectsInstancesAppProFilesCreate' smart constructor.
+data ProjectsInstancesAppProFilesCreate = ProjectsInstancesAppProFilesCreate'
+    { _piapfcParent         :: !Text
+    , _piapfcXgafv          :: !(Maybe Xgafv)
+    , _piapfcAppProFileId   :: !(Maybe Text)
+    , _piapfcUploadProtocol :: !(Maybe Text)
+    , _piapfcAccessToken    :: !(Maybe Text)
+    , _piapfcUploadType     :: !(Maybe Text)
+    , _piapfcPayload        :: !AppProFile
+    , _piapfcIgnoreWarnings :: !(Maybe Bool)
+    , _piapfcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesAppProFilesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piapfcParent'
+--
+-- * 'piapfcXgafv'
+--
+-- * 'piapfcAppProFileId'
+--
+-- * 'piapfcUploadProtocol'
+--
+-- * 'piapfcAccessToken'
+--
+-- * 'piapfcUploadType'
+--
+-- * 'piapfcPayload'
+--
+-- * 'piapfcIgnoreWarnings'
+--
+-- * 'piapfcCallback'
+projectsInstancesAppProFilesCreate
+    :: Text -- ^ 'piapfcParent'
+    -> AppProFile -- ^ 'piapfcPayload'
+    -> ProjectsInstancesAppProFilesCreate
+projectsInstancesAppProFilesCreate pPiapfcParent_ pPiapfcPayload_ =
+    ProjectsInstancesAppProFilesCreate'
+    { _piapfcParent = pPiapfcParent_
+    , _piapfcXgafv = Nothing
+    , _piapfcAppProFileId = Nothing
+    , _piapfcUploadProtocol = Nothing
+    , _piapfcAccessToken = Nothing
+    , _piapfcUploadType = Nothing
+    , _piapfcPayload = pPiapfcPayload_
+    , _piapfcIgnoreWarnings = Nothing
+    , _piapfcCallback = Nothing
+    }
+
+-- | The unique name of the instance in which to create the new app profile.
+-- Values are of the form \`projects\/\/instances\/\`.
+piapfcParent :: Lens' ProjectsInstancesAppProFilesCreate Text
+piapfcParent
+  = lens _piapfcParent (\ s a -> s{_piapfcParent = a})
+
+-- | V1 error format.
+piapfcXgafv :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Xgafv)
+piapfcXgafv
+  = lens _piapfcXgafv (\ s a -> s{_piapfcXgafv = a})
+
+-- | The ID to be used when referring to the new app profile within its
+-- instance, e.g., just \`myprofile\` rather than
+-- \`projects\/myproject\/instances\/myinstance\/appProfiles\/myprofile\`.
+piapfcAppProFileId :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Text)
+piapfcAppProFileId
+  = lens _piapfcAppProFileId
+      (\ s a -> s{_piapfcAppProFileId = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piapfcUploadProtocol :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Text)
+piapfcUploadProtocol
+  = lens _piapfcUploadProtocol
+      (\ s a -> s{_piapfcUploadProtocol = a})
+
+-- | OAuth access token.
+piapfcAccessToken :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Text)
+piapfcAccessToken
+  = lens _piapfcAccessToken
+      (\ s a -> s{_piapfcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piapfcUploadType :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Text)
+piapfcUploadType
+  = lens _piapfcUploadType
+      (\ s a -> s{_piapfcUploadType = a})
+
+-- | Multipart request metadata.
+piapfcPayload :: Lens' ProjectsInstancesAppProFilesCreate AppProFile
+piapfcPayload
+  = lens _piapfcPayload
+      (\ s a -> s{_piapfcPayload = a})
+
+-- | If true, ignore safety checks when creating the app profile.
+piapfcIgnoreWarnings :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Bool)
+piapfcIgnoreWarnings
+  = lens _piapfcIgnoreWarnings
+      (\ s a -> s{_piapfcIgnoreWarnings = a})
+
+-- | JSONP
+piapfcCallback :: Lens' ProjectsInstancesAppProFilesCreate (Maybe Text)
+piapfcCallback
+  = lens _piapfcCallback
+      (\ s a -> s{_piapfcCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesAppProFilesCreate where
+        type Rs ProjectsInstancesAppProFilesCreate =
+             AppProFile
+        type Scopes ProjectsInstancesAppProFilesCreate =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesAppProFilesCreate'{..}
+          = go _piapfcParent _piapfcXgafv _piapfcAppProFileId
+              _piapfcUploadProtocol
+              _piapfcAccessToken
+              _piapfcUploadType
+              _piapfcIgnoreWarnings
+              _piapfcCallback
+              (Just AltJSON)
+              _piapfcPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesAppProFilesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Delete.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Delete.hs
@@ -0,0 +1,168 @@
+{-# 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.BigtableAdmin.Projects.Instances.AppProFiles.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 an app profile from an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.appProfiles.delete@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Delete
+    (
+    -- * REST Resource
+      ProjectsInstancesAppProFilesDeleteResource
+
+    -- * Creating a Request
+    , projectsInstancesAppProFilesDelete
+    , ProjectsInstancesAppProFilesDelete
+
+    -- * Request Lenses
+    , piapfdXgafv
+    , piapfdUploadProtocol
+    , piapfdAccessToken
+    , piapfdUploadType
+    , piapfdIgnoreWarnings
+    , piapfdName
+    , piapfdCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.appProfiles.delete@ method which the
+-- 'ProjectsInstancesAppProFilesDelete' request conforms to.
+type ProjectsInstancesAppProFilesDeleteResource =
+     "v2" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "ignoreWarnings" Bool :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Empty
+
+-- | Deletes an app profile from an instance.
+--
+-- /See:/ 'projectsInstancesAppProFilesDelete' smart constructor.
+data ProjectsInstancesAppProFilesDelete = ProjectsInstancesAppProFilesDelete'
+    { _piapfdXgafv          :: !(Maybe Xgafv)
+    , _piapfdUploadProtocol :: !(Maybe Text)
+    , _piapfdAccessToken    :: !(Maybe Text)
+    , _piapfdUploadType     :: !(Maybe Text)
+    , _piapfdIgnoreWarnings :: !(Maybe Bool)
+    , _piapfdName           :: !Text
+    , _piapfdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesAppProFilesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piapfdXgafv'
+--
+-- * 'piapfdUploadProtocol'
+--
+-- * 'piapfdAccessToken'
+--
+-- * 'piapfdUploadType'
+--
+-- * 'piapfdIgnoreWarnings'
+--
+-- * 'piapfdName'
+--
+-- * 'piapfdCallback'
+projectsInstancesAppProFilesDelete
+    :: Text -- ^ 'piapfdName'
+    -> ProjectsInstancesAppProFilesDelete
+projectsInstancesAppProFilesDelete pPiapfdName_ =
+    ProjectsInstancesAppProFilesDelete'
+    { _piapfdXgafv = Nothing
+    , _piapfdUploadProtocol = Nothing
+    , _piapfdAccessToken = Nothing
+    , _piapfdUploadType = Nothing
+    , _piapfdIgnoreWarnings = Nothing
+    , _piapfdName = pPiapfdName_
+    , _piapfdCallback = Nothing
+    }
+
+-- | V1 error format.
+piapfdXgafv :: Lens' ProjectsInstancesAppProFilesDelete (Maybe Xgafv)
+piapfdXgafv
+  = lens _piapfdXgafv (\ s a -> s{_piapfdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piapfdUploadProtocol :: Lens' ProjectsInstancesAppProFilesDelete (Maybe Text)
+piapfdUploadProtocol
+  = lens _piapfdUploadProtocol
+      (\ s a -> s{_piapfdUploadProtocol = a})
+
+-- | OAuth access token.
+piapfdAccessToken :: Lens' ProjectsInstancesAppProFilesDelete (Maybe Text)
+piapfdAccessToken
+  = lens _piapfdAccessToken
+      (\ s a -> s{_piapfdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piapfdUploadType :: Lens' ProjectsInstancesAppProFilesDelete (Maybe Text)
+piapfdUploadType
+  = lens _piapfdUploadType
+      (\ s a -> s{_piapfdUploadType = a})
+
+-- | If true, ignore safety checks when deleting the app profile.
+piapfdIgnoreWarnings :: Lens' ProjectsInstancesAppProFilesDelete (Maybe Bool)
+piapfdIgnoreWarnings
+  = lens _piapfdIgnoreWarnings
+      (\ s a -> s{_piapfdIgnoreWarnings = a})
+
+-- | The unique name of the app profile to be deleted. Values are of the form
+-- \`projects\/\/instances\/\/appProfiles\/\`.
+piapfdName :: Lens' ProjectsInstancesAppProFilesDelete Text
+piapfdName
+  = lens _piapfdName (\ s a -> s{_piapfdName = a})
+
+-- | JSONP
+piapfdCallback :: Lens' ProjectsInstancesAppProFilesDelete (Maybe Text)
+piapfdCallback
+  = lens _piapfdCallback
+      (\ s a -> s{_piapfdCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesAppProFilesDelete where
+        type Rs ProjectsInstancesAppProFilesDelete = Empty
+        type Scopes ProjectsInstancesAppProFilesDelete =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesAppProFilesDelete'{..}
+          = go _piapfdName _piapfdXgafv _piapfdUploadProtocol
+              _piapfdAccessToken
+              _piapfdUploadType
+              _piapfdIgnoreWarnings
+              _piapfdCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesAppProFilesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Get.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Get.hs
@@ -0,0 +1,155 @@
+{-# 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.BigtableAdmin.Projects.Instances.AppProFiles.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 information about an app profile.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.appProfiles.get@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Get
+    (
+    -- * REST Resource
+      ProjectsInstancesAppProFilesGetResource
+
+    -- * Creating a Request
+    , projectsInstancesAppProFilesGet
+    , ProjectsInstancesAppProFilesGet
+
+    -- * Request Lenses
+    , piapfgXgafv
+    , piapfgUploadProtocol
+    , piapfgAccessToken
+    , piapfgUploadType
+    , piapfgName
+    , piapfgCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.appProfiles.get@ method which the
+-- 'ProjectsInstancesAppProFilesGet' request conforms to.
+type ProjectsInstancesAppProFilesGetResource =
+     "v2" :>
+       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] AppProFile
+
+-- | Gets information about an app profile.
+--
+-- /See:/ 'projectsInstancesAppProFilesGet' smart constructor.
+data ProjectsInstancesAppProFilesGet = ProjectsInstancesAppProFilesGet'
+    { _piapfgXgafv          :: !(Maybe Xgafv)
+    , _piapfgUploadProtocol :: !(Maybe Text)
+    , _piapfgAccessToken    :: !(Maybe Text)
+    , _piapfgUploadType     :: !(Maybe Text)
+    , _piapfgName           :: !Text
+    , _piapfgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesAppProFilesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piapfgXgafv'
+--
+-- * 'piapfgUploadProtocol'
+--
+-- * 'piapfgAccessToken'
+--
+-- * 'piapfgUploadType'
+--
+-- * 'piapfgName'
+--
+-- * 'piapfgCallback'
+projectsInstancesAppProFilesGet
+    :: Text -- ^ 'piapfgName'
+    -> ProjectsInstancesAppProFilesGet
+projectsInstancesAppProFilesGet pPiapfgName_ =
+    ProjectsInstancesAppProFilesGet'
+    { _piapfgXgafv = Nothing
+    , _piapfgUploadProtocol = Nothing
+    , _piapfgAccessToken = Nothing
+    , _piapfgUploadType = Nothing
+    , _piapfgName = pPiapfgName_
+    , _piapfgCallback = Nothing
+    }
+
+-- | V1 error format.
+piapfgXgafv :: Lens' ProjectsInstancesAppProFilesGet (Maybe Xgafv)
+piapfgXgafv
+  = lens _piapfgXgafv (\ s a -> s{_piapfgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piapfgUploadProtocol :: Lens' ProjectsInstancesAppProFilesGet (Maybe Text)
+piapfgUploadProtocol
+  = lens _piapfgUploadProtocol
+      (\ s a -> s{_piapfgUploadProtocol = a})
+
+-- | OAuth access token.
+piapfgAccessToken :: Lens' ProjectsInstancesAppProFilesGet (Maybe Text)
+piapfgAccessToken
+  = lens _piapfgAccessToken
+      (\ s a -> s{_piapfgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piapfgUploadType :: Lens' ProjectsInstancesAppProFilesGet (Maybe Text)
+piapfgUploadType
+  = lens _piapfgUploadType
+      (\ s a -> s{_piapfgUploadType = a})
+
+-- | The unique name of the requested app profile. Values are of the form
+-- \`projects\/\/instances\/\/appProfiles\/\`.
+piapfgName :: Lens' ProjectsInstancesAppProFilesGet Text
+piapfgName
+  = lens _piapfgName (\ s a -> s{_piapfgName = a})
+
+-- | JSONP
+piapfgCallback :: Lens' ProjectsInstancesAppProFilesGet (Maybe Text)
+piapfgCallback
+  = lens _piapfgCallback
+      (\ s a -> s{_piapfgCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesAppProFilesGet where
+        type Rs ProjectsInstancesAppProFilesGet = AppProFile
+        type Scopes ProjectsInstancesAppProFilesGet =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesAppProFilesGet'{..}
+          = go _piapfgName _piapfgXgafv _piapfgUploadProtocol
+              _piapfgAccessToken
+              _piapfgUploadType
+              _piapfgCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesAppProFilesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/List.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/List.hs
@@ -0,0 +1,187 @@
+{-# 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.BigtableAdmin.Projects.Instances.AppProFiles.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 information about app profiles in an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.appProfiles.list@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.List
+    (
+    -- * REST Resource
+      ProjectsInstancesAppProFilesListResource
+
+    -- * Creating a Request
+    , projectsInstancesAppProFilesList
+    , ProjectsInstancesAppProFilesList
+
+    -- * Request Lenses
+    , piapflParent
+    , piapflXgafv
+    , piapflUploadProtocol
+    , piapflAccessToken
+    , piapflUploadType
+    , piapflPageToken
+    , piapflPageSize
+    , piapflCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.appProfiles.list@ method which the
+-- 'ProjectsInstancesAppProFilesList' request conforms to.
+type ProjectsInstancesAppProFilesListResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "appProfiles" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListAppProFilesResponse
+
+-- | Lists information about app profiles in an instance.
+--
+-- /See:/ 'projectsInstancesAppProFilesList' smart constructor.
+data ProjectsInstancesAppProFilesList = ProjectsInstancesAppProFilesList'
+    { _piapflParent         :: !Text
+    , _piapflXgafv          :: !(Maybe Xgafv)
+    , _piapflUploadProtocol :: !(Maybe Text)
+    , _piapflAccessToken    :: !(Maybe Text)
+    , _piapflUploadType     :: !(Maybe Text)
+    , _piapflPageToken      :: !(Maybe Text)
+    , _piapflPageSize       :: !(Maybe (Textual Int32))
+    , _piapflCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesAppProFilesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piapflParent'
+--
+-- * 'piapflXgafv'
+--
+-- * 'piapflUploadProtocol'
+--
+-- * 'piapflAccessToken'
+--
+-- * 'piapflUploadType'
+--
+-- * 'piapflPageToken'
+--
+-- * 'piapflPageSize'
+--
+-- * 'piapflCallback'
+projectsInstancesAppProFilesList
+    :: Text -- ^ 'piapflParent'
+    -> ProjectsInstancesAppProFilesList
+projectsInstancesAppProFilesList pPiapflParent_ =
+    ProjectsInstancesAppProFilesList'
+    { _piapflParent = pPiapflParent_
+    , _piapflXgafv = Nothing
+    , _piapflUploadProtocol = Nothing
+    , _piapflAccessToken = Nothing
+    , _piapflUploadType = Nothing
+    , _piapflPageToken = Nothing
+    , _piapflPageSize = Nothing
+    , _piapflCallback = Nothing
+    }
+
+-- | The unique name of the instance for which a list of app profiles is
+-- requested. Values are of the form \`projects\/\/instances\/\`. Use \` =
+-- \'-\'\` to list AppProfiles for all Instances in a project, e.g.,
+-- \`projects\/myproject\/instances\/-\`.
+piapflParent :: Lens' ProjectsInstancesAppProFilesList Text
+piapflParent
+  = lens _piapflParent (\ s a -> s{_piapflParent = a})
+
+-- | V1 error format.
+piapflXgafv :: Lens' ProjectsInstancesAppProFilesList (Maybe Xgafv)
+piapflXgafv
+  = lens _piapflXgafv (\ s a -> s{_piapflXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piapflUploadProtocol :: Lens' ProjectsInstancesAppProFilesList (Maybe Text)
+piapflUploadProtocol
+  = lens _piapflUploadProtocol
+      (\ s a -> s{_piapflUploadProtocol = a})
+
+-- | OAuth access token.
+piapflAccessToken :: Lens' ProjectsInstancesAppProFilesList (Maybe Text)
+piapflAccessToken
+  = lens _piapflAccessToken
+      (\ s a -> s{_piapflAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piapflUploadType :: Lens' ProjectsInstancesAppProFilesList (Maybe Text)
+piapflUploadType
+  = lens _piapflUploadType
+      (\ s a -> s{_piapflUploadType = a})
+
+-- | The value of \`next_page_token\` returned by a previous call.
+piapflPageToken :: Lens' ProjectsInstancesAppProFilesList (Maybe Text)
+piapflPageToken
+  = lens _piapflPageToken
+      (\ s a -> s{_piapflPageToken = a})
+
+-- | Maximum number of results per page. CURRENTLY UNIMPLEMENTED AND IGNORED.
+piapflPageSize :: Lens' ProjectsInstancesAppProFilesList (Maybe Int32)
+piapflPageSize
+  = lens _piapflPageSize
+      (\ s a -> s{_piapflPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+piapflCallback :: Lens' ProjectsInstancesAppProFilesList (Maybe Text)
+piapflCallback
+  = lens _piapflCallback
+      (\ s a -> s{_piapflCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesAppProFilesList where
+        type Rs ProjectsInstancesAppProFilesList =
+             ListAppProFilesResponse
+        type Scopes ProjectsInstancesAppProFilesList =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesAppProFilesList'{..}
+          = go _piapflParent _piapflXgafv _piapflUploadProtocol
+              _piapflAccessToken
+              _piapflUploadType
+              _piapflPageToken
+              _piapflPageSize
+              _piapflCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesAppProFilesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Patch.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/AppProFiles/Patch.hs
@@ -0,0 +1,196 @@
+{-# 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.BigtableAdmin.Projects.Instances.AppProFiles.Patch
+-- 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)
+--
+-- Updates an app profile within an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.appProfiles.patch@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Patch
+    (
+    -- * REST Resource
+      ProjectsInstancesAppProFilesPatchResource
+
+    -- * Creating a Request
+    , projectsInstancesAppProFilesPatch
+    , ProjectsInstancesAppProFilesPatch
+
+    -- * Request Lenses
+    , piapfpXgafv
+    , piapfpUploadProtocol
+    , piapfpUpdateMask
+    , piapfpAccessToken
+    , piapfpUploadType
+    , piapfpPayload
+    , piapfpIgnoreWarnings
+    , piapfpName
+    , piapfpCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.appProfiles.patch@ method which the
+-- 'ProjectsInstancesAppProFilesPatch' request conforms to.
+type ProjectsInstancesAppProFilesPatchResource =
+     "v2" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "updateMask" GFieldMask :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "ignoreWarnings" Bool :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] AppProFile :> Patch '[JSON] Operation
+
+-- | Updates an app profile within an instance.
+--
+-- /See:/ 'projectsInstancesAppProFilesPatch' smart constructor.
+data ProjectsInstancesAppProFilesPatch = ProjectsInstancesAppProFilesPatch'
+    { _piapfpXgafv          :: !(Maybe Xgafv)
+    , _piapfpUploadProtocol :: !(Maybe Text)
+    , _piapfpUpdateMask     :: !(Maybe GFieldMask)
+    , _piapfpAccessToken    :: !(Maybe Text)
+    , _piapfpUploadType     :: !(Maybe Text)
+    , _piapfpPayload        :: !AppProFile
+    , _piapfpIgnoreWarnings :: !(Maybe Bool)
+    , _piapfpName           :: !Text
+    , _piapfpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesAppProFilesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piapfpXgafv'
+--
+-- * 'piapfpUploadProtocol'
+--
+-- * 'piapfpUpdateMask'
+--
+-- * 'piapfpAccessToken'
+--
+-- * 'piapfpUploadType'
+--
+-- * 'piapfpPayload'
+--
+-- * 'piapfpIgnoreWarnings'
+--
+-- * 'piapfpName'
+--
+-- * 'piapfpCallback'
+projectsInstancesAppProFilesPatch
+    :: AppProFile -- ^ 'piapfpPayload'
+    -> Text -- ^ 'piapfpName'
+    -> ProjectsInstancesAppProFilesPatch
+projectsInstancesAppProFilesPatch pPiapfpPayload_ pPiapfpName_ =
+    ProjectsInstancesAppProFilesPatch'
+    { _piapfpXgafv = Nothing
+    , _piapfpUploadProtocol = Nothing
+    , _piapfpUpdateMask = Nothing
+    , _piapfpAccessToken = Nothing
+    , _piapfpUploadType = Nothing
+    , _piapfpPayload = pPiapfpPayload_
+    , _piapfpIgnoreWarnings = Nothing
+    , _piapfpName = pPiapfpName_
+    , _piapfpCallback = Nothing
+    }
+
+-- | V1 error format.
+piapfpXgafv :: Lens' ProjectsInstancesAppProFilesPatch (Maybe Xgafv)
+piapfpXgafv
+  = lens _piapfpXgafv (\ s a -> s{_piapfpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piapfpUploadProtocol :: Lens' ProjectsInstancesAppProFilesPatch (Maybe Text)
+piapfpUploadProtocol
+  = lens _piapfpUploadProtocol
+      (\ s a -> s{_piapfpUploadProtocol = a})
+
+-- | The subset of app profile fields which should be replaced. If unset, all
+-- fields will be replaced.
+piapfpUpdateMask :: Lens' ProjectsInstancesAppProFilesPatch (Maybe GFieldMask)
+piapfpUpdateMask
+  = lens _piapfpUpdateMask
+      (\ s a -> s{_piapfpUpdateMask = a})
+
+-- | OAuth access token.
+piapfpAccessToken :: Lens' ProjectsInstancesAppProFilesPatch (Maybe Text)
+piapfpAccessToken
+  = lens _piapfpAccessToken
+      (\ s a -> s{_piapfpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piapfpUploadType :: Lens' ProjectsInstancesAppProFilesPatch (Maybe Text)
+piapfpUploadType
+  = lens _piapfpUploadType
+      (\ s a -> s{_piapfpUploadType = a})
+
+-- | Multipart request metadata.
+piapfpPayload :: Lens' ProjectsInstancesAppProFilesPatch AppProFile
+piapfpPayload
+  = lens _piapfpPayload
+      (\ s a -> s{_piapfpPayload = a})
+
+-- | If true, ignore safety checks when updating the app profile.
+piapfpIgnoreWarnings :: Lens' ProjectsInstancesAppProFilesPatch (Maybe Bool)
+piapfpIgnoreWarnings
+  = lens _piapfpIgnoreWarnings
+      (\ s a -> s{_piapfpIgnoreWarnings = a})
+
+-- | (\`OutputOnly\`) The unique name of the app profile. Values are of the
+-- form \`projects\/\/instances\/\/appProfiles\/_a-zA-Z0-9*\`.
+piapfpName :: Lens' ProjectsInstancesAppProFilesPatch Text
+piapfpName
+  = lens _piapfpName (\ s a -> s{_piapfpName = a})
+
+-- | JSONP
+piapfpCallback :: Lens' ProjectsInstancesAppProFilesPatch (Maybe Text)
+piapfpCallback
+  = lens _piapfpCallback
+      (\ s a -> s{_piapfpCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesAppProFilesPatch where
+        type Rs ProjectsInstancesAppProFilesPatch = Operation
+        type Scopes ProjectsInstancesAppProFilesPatch =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesAppProFilesPatch'{..}
+          = go _piapfpName _piapfpXgafv _piapfpUploadProtocol
+              _piapfpUpdateMask
+              _piapfpAccessToken
+              _piapfpUploadType
+              _piapfpIgnoreWarnings
+              _piapfpCallback
+              (Just AltJSON)
+              _piapfpPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesAppProFilesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Create.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Create.hs
@@ -0,0 +1,183 @@
+{-# 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.BigtableAdmin.Projects.Instances.Clusters.Create
+-- 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)
+--
+-- Creates a cluster within an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.clusters.create@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Create
+    (
+    -- * REST Resource
+      ProjectsInstancesClustersCreateResource
+
+    -- * Creating a Request
+    , projectsInstancesClustersCreate
+    , ProjectsInstancesClustersCreate
+
+    -- * Request Lenses
+    , piccParent
+    , piccXgafv
+    , piccUploadProtocol
+    , piccAccessToken
+    , piccUploadType
+    , piccPayload
+    , piccClusterId
+    , piccCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.clusters.create@ method which the
+-- 'ProjectsInstancesClustersCreate' request conforms to.
+type ProjectsInstancesClustersCreateResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "clusters" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "clusterId" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Cluster :> Post '[JSON] Operation
+
+-- | Creates a cluster within an instance.
+--
+-- /See:/ 'projectsInstancesClustersCreate' smart constructor.
+data ProjectsInstancesClustersCreate = ProjectsInstancesClustersCreate'
+    { _piccParent         :: !Text
+    , _piccXgafv          :: !(Maybe Xgafv)
+    , _piccUploadProtocol :: !(Maybe Text)
+    , _piccAccessToken    :: !(Maybe Text)
+    , _piccUploadType     :: !(Maybe Text)
+    , _piccPayload        :: !Cluster
+    , _piccClusterId      :: !(Maybe Text)
+    , _piccCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesClustersCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piccParent'
+--
+-- * 'piccXgafv'
+--
+-- * 'piccUploadProtocol'
+--
+-- * 'piccAccessToken'
+--
+-- * 'piccUploadType'
+--
+-- * 'piccPayload'
+--
+-- * 'piccClusterId'
+--
+-- * 'piccCallback'
+projectsInstancesClustersCreate
+    :: Text -- ^ 'piccParent'
+    -> Cluster -- ^ 'piccPayload'
+    -> ProjectsInstancesClustersCreate
+projectsInstancesClustersCreate pPiccParent_ pPiccPayload_ =
+    ProjectsInstancesClustersCreate'
+    { _piccParent = pPiccParent_
+    , _piccXgafv = Nothing
+    , _piccUploadProtocol = Nothing
+    , _piccAccessToken = Nothing
+    , _piccUploadType = Nothing
+    , _piccPayload = pPiccPayload_
+    , _piccClusterId = Nothing
+    , _piccCallback = Nothing
+    }
+
+-- | The unique name of the instance in which to create the new cluster.
+-- Values are of the form \`projects\/\/instances\/\`.
+piccParent :: Lens' ProjectsInstancesClustersCreate Text
+piccParent
+  = lens _piccParent (\ s a -> s{_piccParent = a})
+
+-- | V1 error format.
+piccXgafv :: Lens' ProjectsInstancesClustersCreate (Maybe Xgafv)
+piccXgafv
+  = lens _piccXgafv (\ s a -> s{_piccXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piccUploadProtocol :: Lens' ProjectsInstancesClustersCreate (Maybe Text)
+piccUploadProtocol
+  = lens _piccUploadProtocol
+      (\ s a -> s{_piccUploadProtocol = a})
+
+-- | OAuth access token.
+piccAccessToken :: Lens' ProjectsInstancesClustersCreate (Maybe Text)
+piccAccessToken
+  = lens _piccAccessToken
+      (\ s a -> s{_piccAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piccUploadType :: Lens' ProjectsInstancesClustersCreate (Maybe Text)
+piccUploadType
+  = lens _piccUploadType
+      (\ s a -> s{_piccUploadType = a})
+
+-- | Multipart request metadata.
+piccPayload :: Lens' ProjectsInstancesClustersCreate Cluster
+piccPayload
+  = lens _piccPayload (\ s a -> s{_piccPayload = a})
+
+-- | The ID to be used when referring to the new cluster within its instance,
+-- e.g., just \`mycluster\` rather than
+-- \`projects\/myproject\/instances\/myinstance\/clusters\/mycluster\`.
+piccClusterId :: Lens' ProjectsInstancesClustersCreate (Maybe Text)
+piccClusterId
+  = lens _piccClusterId
+      (\ s a -> s{_piccClusterId = a})
+
+-- | JSONP
+piccCallback :: Lens' ProjectsInstancesClustersCreate (Maybe Text)
+piccCallback
+  = lens _piccCallback (\ s a -> s{_piccCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesClustersCreate where
+        type Rs ProjectsInstancesClustersCreate = Operation
+        type Scopes ProjectsInstancesClustersCreate =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesClustersCreate'{..}
+          = go _piccParent _piccXgafv _piccUploadProtocol
+              _piccAccessToken
+              _piccUploadType
+              _piccClusterId
+              _piccCallback
+              (Just AltJSON)
+              _piccPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesClustersCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Delete.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Delete.hs
@@ -0,0 +1,153 @@
+{-# 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.BigtableAdmin.Projects.Instances.Clusters.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 cluster from an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.clusters.delete@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Delete
+    (
+    -- * REST Resource
+      ProjectsInstancesClustersDeleteResource
+
+    -- * Creating a Request
+    , projectsInstancesClustersDelete
+    , ProjectsInstancesClustersDelete
+
+    -- * Request Lenses
+    , picdXgafv
+    , picdUploadProtocol
+    , picdAccessToken
+    , picdUploadType
+    , picdName
+    , picdCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.clusters.delete@ method which the
+-- 'ProjectsInstancesClustersDelete' request conforms to.
+type ProjectsInstancesClustersDeleteResource =
+     "v2" :>
+       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 cluster from an instance.
+--
+-- /See:/ 'projectsInstancesClustersDelete' smart constructor.
+data ProjectsInstancesClustersDelete = ProjectsInstancesClustersDelete'
+    { _picdXgafv          :: !(Maybe Xgafv)
+    , _picdUploadProtocol :: !(Maybe Text)
+    , _picdAccessToken    :: !(Maybe Text)
+    , _picdUploadType     :: !(Maybe Text)
+    , _picdName           :: !Text
+    , _picdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesClustersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'picdXgafv'
+--
+-- * 'picdUploadProtocol'
+--
+-- * 'picdAccessToken'
+--
+-- * 'picdUploadType'
+--
+-- * 'picdName'
+--
+-- * 'picdCallback'
+projectsInstancesClustersDelete
+    :: Text -- ^ 'picdName'
+    -> ProjectsInstancesClustersDelete
+projectsInstancesClustersDelete pPicdName_ =
+    ProjectsInstancesClustersDelete'
+    { _picdXgafv = Nothing
+    , _picdUploadProtocol = Nothing
+    , _picdAccessToken = Nothing
+    , _picdUploadType = Nothing
+    , _picdName = pPicdName_
+    , _picdCallback = Nothing
+    }
+
+-- | V1 error format.
+picdXgafv :: Lens' ProjectsInstancesClustersDelete (Maybe Xgafv)
+picdXgafv
+  = lens _picdXgafv (\ s a -> s{_picdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+picdUploadProtocol :: Lens' ProjectsInstancesClustersDelete (Maybe Text)
+picdUploadProtocol
+  = lens _picdUploadProtocol
+      (\ s a -> s{_picdUploadProtocol = a})
+
+-- | OAuth access token.
+picdAccessToken :: Lens' ProjectsInstancesClustersDelete (Maybe Text)
+picdAccessToken
+  = lens _picdAccessToken
+      (\ s a -> s{_picdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+picdUploadType :: Lens' ProjectsInstancesClustersDelete (Maybe Text)
+picdUploadType
+  = lens _picdUploadType
+      (\ s a -> s{_picdUploadType = a})
+
+-- | The unique name of the cluster to be deleted. Values are of the form
+-- \`projects\/\/instances\/\/clusters\/\`.
+picdName :: Lens' ProjectsInstancesClustersDelete Text
+picdName = lens _picdName (\ s a -> s{_picdName = a})
+
+-- | JSONP
+picdCallback :: Lens' ProjectsInstancesClustersDelete (Maybe Text)
+picdCallback
+  = lens _picdCallback (\ s a -> s{_picdCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesClustersDelete where
+        type Rs ProjectsInstancesClustersDelete = Empty
+        type Scopes ProjectsInstancesClustersDelete =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesClustersDelete'{..}
+          = go _picdName _picdXgafv _picdUploadProtocol
+              _picdAccessToken
+              _picdUploadType
+              _picdCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesClustersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Get.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Get.hs
@@ -0,0 +1,153 @@
+{-# 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.BigtableAdmin.Projects.Instances.Clusters.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 information about a cluster.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.clusters.get@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Get
+    (
+    -- * REST Resource
+      ProjectsInstancesClustersGetResource
+
+    -- * Creating a Request
+    , projectsInstancesClustersGet
+    , ProjectsInstancesClustersGet
+
+    -- * Request Lenses
+    , picgXgafv
+    , picgUploadProtocol
+    , picgAccessToken
+    , picgUploadType
+    , picgName
+    , picgCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.clusters.get@ method which the
+-- 'ProjectsInstancesClustersGet' request conforms to.
+type ProjectsInstancesClustersGetResource =
+     "v2" :>
+       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] Cluster
+
+-- | Gets information about a cluster.
+--
+-- /See:/ 'projectsInstancesClustersGet' smart constructor.
+data ProjectsInstancesClustersGet = ProjectsInstancesClustersGet'
+    { _picgXgafv          :: !(Maybe Xgafv)
+    , _picgUploadProtocol :: !(Maybe Text)
+    , _picgAccessToken    :: !(Maybe Text)
+    , _picgUploadType     :: !(Maybe Text)
+    , _picgName           :: !Text
+    , _picgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesClustersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'picgXgafv'
+--
+-- * 'picgUploadProtocol'
+--
+-- * 'picgAccessToken'
+--
+-- * 'picgUploadType'
+--
+-- * 'picgName'
+--
+-- * 'picgCallback'
+projectsInstancesClustersGet
+    :: Text -- ^ 'picgName'
+    -> ProjectsInstancesClustersGet
+projectsInstancesClustersGet pPicgName_ =
+    ProjectsInstancesClustersGet'
+    { _picgXgafv = Nothing
+    , _picgUploadProtocol = Nothing
+    , _picgAccessToken = Nothing
+    , _picgUploadType = Nothing
+    , _picgName = pPicgName_
+    , _picgCallback = Nothing
+    }
+
+-- | V1 error format.
+picgXgafv :: Lens' ProjectsInstancesClustersGet (Maybe Xgafv)
+picgXgafv
+  = lens _picgXgafv (\ s a -> s{_picgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+picgUploadProtocol :: Lens' ProjectsInstancesClustersGet (Maybe Text)
+picgUploadProtocol
+  = lens _picgUploadProtocol
+      (\ s a -> s{_picgUploadProtocol = a})
+
+-- | OAuth access token.
+picgAccessToken :: Lens' ProjectsInstancesClustersGet (Maybe Text)
+picgAccessToken
+  = lens _picgAccessToken
+      (\ s a -> s{_picgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+picgUploadType :: Lens' ProjectsInstancesClustersGet (Maybe Text)
+picgUploadType
+  = lens _picgUploadType
+      (\ s a -> s{_picgUploadType = a})
+
+-- | The unique name of the requested cluster. Values are of the form
+-- \`projects\/\/instances\/\/clusters\/\`.
+picgName :: Lens' ProjectsInstancesClustersGet Text
+picgName = lens _picgName (\ s a -> s{_picgName = a})
+
+-- | JSONP
+picgCallback :: Lens' ProjectsInstancesClustersGet (Maybe Text)
+picgCallback
+  = lens _picgCallback (\ s a -> s{_picgCallback = a})
+
+instance GoogleRequest ProjectsInstancesClustersGet
+         where
+        type Rs ProjectsInstancesClustersGet = Cluster
+        type Scopes ProjectsInstancesClustersGet =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient ProjectsInstancesClustersGet'{..}
+          = go _picgName _picgXgafv _picgUploadProtocol
+              _picgAccessToken
+              _picgUploadType
+              _picgCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesClustersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/List.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/List.hs
@@ -0,0 +1,173 @@
+{-# 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.BigtableAdmin.Projects.Instances.Clusters.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 information about clusters in an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.clusters.list@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.List
+    (
+    -- * REST Resource
+      ProjectsInstancesClustersListResource
+
+    -- * Creating a Request
+    , projectsInstancesClustersList
+    , ProjectsInstancesClustersList
+
+    -- * Request Lenses
+    , piclParent
+    , piclXgafv
+    , piclUploadProtocol
+    , piclAccessToken
+    , piclUploadType
+    , piclPageToken
+    , piclCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.clusters.list@ method which the
+-- 'ProjectsInstancesClustersList' request conforms to.
+type ProjectsInstancesClustersListResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "clusters" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ListClustersResponse
+
+-- | Lists information about clusters in an instance.
+--
+-- /See:/ 'projectsInstancesClustersList' smart constructor.
+data ProjectsInstancesClustersList = ProjectsInstancesClustersList'
+    { _piclParent         :: !Text
+    , _piclXgafv          :: !(Maybe Xgafv)
+    , _piclUploadProtocol :: !(Maybe Text)
+    , _piclAccessToken    :: !(Maybe Text)
+    , _piclUploadType     :: !(Maybe Text)
+    , _piclPageToken      :: !(Maybe Text)
+    , _piclCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesClustersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piclParent'
+--
+-- * 'piclXgafv'
+--
+-- * 'piclUploadProtocol'
+--
+-- * 'piclAccessToken'
+--
+-- * 'piclUploadType'
+--
+-- * 'piclPageToken'
+--
+-- * 'piclCallback'
+projectsInstancesClustersList
+    :: Text -- ^ 'piclParent'
+    -> ProjectsInstancesClustersList
+projectsInstancesClustersList pPiclParent_ =
+    ProjectsInstancesClustersList'
+    { _piclParent = pPiclParent_
+    , _piclXgafv = Nothing
+    , _piclUploadProtocol = Nothing
+    , _piclAccessToken = Nothing
+    , _piclUploadType = Nothing
+    , _piclPageToken = Nothing
+    , _piclCallback = Nothing
+    }
+
+-- | The unique name of the instance for which a list of clusters is
+-- requested. Values are of the form \`projects\/\/instances\/\`. Use \` =
+-- \'-\'\` to list Clusters for all Instances in a project, e.g.,
+-- \`projects\/myproject\/instances\/-\`.
+piclParent :: Lens' ProjectsInstancesClustersList Text
+piclParent
+  = lens _piclParent (\ s a -> s{_piclParent = a})
+
+-- | V1 error format.
+piclXgafv :: Lens' ProjectsInstancesClustersList (Maybe Xgafv)
+piclXgafv
+  = lens _piclXgafv (\ s a -> s{_piclXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piclUploadProtocol :: Lens' ProjectsInstancesClustersList (Maybe Text)
+piclUploadProtocol
+  = lens _piclUploadProtocol
+      (\ s a -> s{_piclUploadProtocol = a})
+
+-- | OAuth access token.
+piclAccessToken :: Lens' ProjectsInstancesClustersList (Maybe Text)
+piclAccessToken
+  = lens _piclAccessToken
+      (\ s a -> s{_piclAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piclUploadType :: Lens' ProjectsInstancesClustersList (Maybe Text)
+piclUploadType
+  = lens _piclUploadType
+      (\ s a -> s{_piclUploadType = a})
+
+-- | DEPRECATED: This field is unused and ignored.
+piclPageToken :: Lens' ProjectsInstancesClustersList (Maybe Text)
+piclPageToken
+  = lens _piclPageToken
+      (\ s a -> s{_piclPageToken = a})
+
+-- | JSONP
+piclCallback :: Lens' ProjectsInstancesClustersList (Maybe Text)
+piclCallback
+  = lens _piclCallback (\ s a -> s{_piclCallback = a})
+
+instance GoogleRequest ProjectsInstancesClustersList
+         where
+        type Rs ProjectsInstancesClustersList =
+             ListClustersResponse
+        type Scopes ProjectsInstancesClustersList =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient ProjectsInstancesClustersList'{..}
+          = go _piclParent _piclXgafv _piclUploadProtocol
+              _piclAccessToken
+              _piclUploadType
+              _piclPageToken
+              _piclCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesClustersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Update.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Clusters/Update.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.BigtableAdmin.Projects.Instances.Clusters.Update
+-- 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)
+--
+-- Updates a cluster within an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.clusters.update@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Update
+    (
+    -- * REST Resource
+      ProjectsInstancesClustersUpdateResource
+
+    -- * Creating a Request
+    , projectsInstancesClustersUpdate
+    , ProjectsInstancesClustersUpdate
+
+    -- * Request Lenses
+    , picuXgafv
+    , picuUploadProtocol
+    , picuAccessToken
+    , picuUploadType
+    , picuPayload
+    , picuName
+    , picuCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.clusters.update@ method which the
+-- 'ProjectsInstancesClustersUpdate' request conforms to.
+type ProjectsInstancesClustersUpdateResource =
+     "v2" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Cluster :> Put '[JSON] Operation
+
+-- | Updates a cluster within an instance.
+--
+-- /See:/ 'projectsInstancesClustersUpdate' smart constructor.
+data ProjectsInstancesClustersUpdate = ProjectsInstancesClustersUpdate'
+    { _picuXgafv          :: !(Maybe Xgafv)
+    , _picuUploadProtocol :: !(Maybe Text)
+    , _picuAccessToken    :: !(Maybe Text)
+    , _picuUploadType     :: !(Maybe Text)
+    , _picuPayload        :: !Cluster
+    , _picuName           :: !Text
+    , _picuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesClustersUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'picuXgafv'
+--
+-- * 'picuUploadProtocol'
+--
+-- * 'picuAccessToken'
+--
+-- * 'picuUploadType'
+--
+-- * 'picuPayload'
+--
+-- * 'picuName'
+--
+-- * 'picuCallback'
+projectsInstancesClustersUpdate
+    :: Cluster -- ^ 'picuPayload'
+    -> Text -- ^ 'picuName'
+    -> ProjectsInstancesClustersUpdate
+projectsInstancesClustersUpdate pPicuPayload_ pPicuName_ =
+    ProjectsInstancesClustersUpdate'
+    { _picuXgafv = Nothing
+    , _picuUploadProtocol = Nothing
+    , _picuAccessToken = Nothing
+    , _picuUploadType = Nothing
+    , _picuPayload = pPicuPayload_
+    , _picuName = pPicuName_
+    , _picuCallback = Nothing
+    }
+
+-- | V1 error format.
+picuXgafv :: Lens' ProjectsInstancesClustersUpdate (Maybe Xgafv)
+picuXgafv
+  = lens _picuXgafv (\ s a -> s{_picuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+picuUploadProtocol :: Lens' ProjectsInstancesClustersUpdate (Maybe Text)
+picuUploadProtocol
+  = lens _picuUploadProtocol
+      (\ s a -> s{_picuUploadProtocol = a})
+
+-- | OAuth access token.
+picuAccessToken :: Lens' ProjectsInstancesClustersUpdate (Maybe Text)
+picuAccessToken
+  = lens _picuAccessToken
+      (\ s a -> s{_picuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+picuUploadType :: Lens' ProjectsInstancesClustersUpdate (Maybe Text)
+picuUploadType
+  = lens _picuUploadType
+      (\ s a -> s{_picuUploadType = a})
+
+-- | Multipart request metadata.
+picuPayload :: Lens' ProjectsInstancesClustersUpdate Cluster
+picuPayload
+  = lens _picuPayload (\ s a -> s{_picuPayload = a})
+
+-- | (\`OutputOnly\`) The unique name of the cluster. Values are of the form
+-- \`projects\/\/instances\/\/clusters\/a-z*\`.
+picuName :: Lens' ProjectsInstancesClustersUpdate Text
+picuName = lens _picuName (\ s a -> s{_picuName = a})
+
+-- | JSONP
+picuCallback :: Lens' ProjectsInstancesClustersUpdate (Maybe Text)
+picuCallback
+  = lens _picuCallback (\ s a -> s{_picuCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesClustersUpdate where
+        type Rs ProjectsInstancesClustersUpdate = Operation
+        type Scopes ProjectsInstancesClustersUpdate =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesClustersUpdate'{..}
+          = go _picuName _picuXgafv _picuUploadProtocol
+              _picuAccessToken
+              _picuUploadType
+              _picuCallback
+              (Just AltJSON)
+              _picuPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesClustersUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Create.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Create.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.BigtableAdmin.Projects.Instances.Create
+-- 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)
+--
+-- Create an instance within a project.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.create@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Create
+    (
+    -- * REST Resource
+      ProjectsInstancesCreateResource
+
+    -- * Creating a Request
+    , projectsInstancesCreate
+    , ProjectsInstancesCreate
+
+    -- * Request Lenses
+    , picParent
+    , picXgafv
+    , picUploadProtocol
+    , picAccessToken
+    , picUploadType
+    , picPayload
+    , picCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.create@ method which the
+-- 'ProjectsInstancesCreate' request conforms to.
+type ProjectsInstancesCreateResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "instances" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CreateInstanceRequest :>
+                         Post '[JSON] Operation
+
+-- | Create an instance within a project.
+--
+-- /See:/ 'projectsInstancesCreate' smart constructor.
+data ProjectsInstancesCreate = ProjectsInstancesCreate'
+    { _picParent         :: !Text
+    , _picXgafv          :: !(Maybe Xgafv)
+    , _picUploadProtocol :: !(Maybe Text)
+    , _picAccessToken    :: !(Maybe Text)
+    , _picUploadType     :: !(Maybe Text)
+    , _picPayload        :: !CreateInstanceRequest
+    , _picCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'picParent'
+--
+-- * 'picXgafv'
+--
+-- * 'picUploadProtocol'
+--
+-- * 'picAccessToken'
+--
+-- * 'picUploadType'
+--
+-- * 'picPayload'
+--
+-- * 'picCallback'
+projectsInstancesCreate
+    :: Text -- ^ 'picParent'
+    -> CreateInstanceRequest -- ^ 'picPayload'
+    -> ProjectsInstancesCreate
+projectsInstancesCreate pPicParent_ pPicPayload_ =
+    ProjectsInstancesCreate'
+    { _picParent = pPicParent_
+    , _picXgafv = Nothing
+    , _picUploadProtocol = Nothing
+    , _picAccessToken = Nothing
+    , _picUploadType = Nothing
+    , _picPayload = pPicPayload_
+    , _picCallback = Nothing
+    }
+
+-- | The unique name of the project in which to create the new instance.
+-- Values are of the form \`projects\/\`.
+picParent :: Lens' ProjectsInstancesCreate Text
+picParent
+  = lens _picParent (\ s a -> s{_picParent = a})
+
+-- | V1 error format.
+picXgafv :: Lens' ProjectsInstancesCreate (Maybe Xgafv)
+picXgafv = lens _picXgafv (\ s a -> s{_picXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+picUploadProtocol :: Lens' ProjectsInstancesCreate (Maybe Text)
+picUploadProtocol
+  = lens _picUploadProtocol
+      (\ s a -> s{_picUploadProtocol = a})
+
+-- | OAuth access token.
+picAccessToken :: Lens' ProjectsInstancesCreate (Maybe Text)
+picAccessToken
+  = lens _picAccessToken
+      (\ s a -> s{_picAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+picUploadType :: Lens' ProjectsInstancesCreate (Maybe Text)
+picUploadType
+  = lens _picUploadType
+      (\ s a -> s{_picUploadType = a})
+
+-- | Multipart request metadata.
+picPayload :: Lens' ProjectsInstancesCreate CreateInstanceRequest
+picPayload
+  = lens _picPayload (\ s a -> s{_picPayload = a})
+
+-- | JSONP
+picCallback :: Lens' ProjectsInstancesCreate (Maybe Text)
+picCallback
+  = lens _picCallback (\ s a -> s{_picCallback = a})
+
+instance GoogleRequest ProjectsInstancesCreate where
+        type Rs ProjectsInstancesCreate = Operation
+        type Scopes ProjectsInstancesCreate =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesCreate'{..}
+          = go _picParent _picXgafv _picUploadProtocol
+              _picAccessToken
+              _picUploadType
+              _picCallback
+              (Just AltJSON)
+              _picPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Delete.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Delete.hs
@@ -0,0 +1,150 @@
+{-# 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.BigtableAdmin.Projects.Instances.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)
+--
+-- Delete an instance from a project.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.delete@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Delete
+    (
+    -- * REST Resource
+      ProjectsInstancesDeleteResource
+
+    -- * Creating a Request
+    , projectsInstancesDelete
+    , ProjectsInstancesDelete
+
+    -- * Request Lenses
+    , pidXgafv
+    , pidUploadProtocol
+    , pidAccessToken
+    , pidUploadType
+    , pidName
+    , pidCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.delete@ method which the
+-- 'ProjectsInstancesDelete' request conforms to.
+type ProjectsInstancesDeleteResource =
+     "v2" :>
+       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
+
+-- | Delete an instance from a project.
+--
+-- /See:/ 'projectsInstancesDelete' smart constructor.
+data ProjectsInstancesDelete = ProjectsInstancesDelete'
+    { _pidXgafv          :: !(Maybe Xgafv)
+    , _pidUploadProtocol :: !(Maybe Text)
+    , _pidAccessToken    :: !(Maybe Text)
+    , _pidUploadType     :: !(Maybe Text)
+    , _pidName           :: !Text
+    , _pidCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pidXgafv'
+--
+-- * 'pidUploadProtocol'
+--
+-- * 'pidAccessToken'
+--
+-- * 'pidUploadType'
+--
+-- * 'pidName'
+--
+-- * 'pidCallback'
+projectsInstancesDelete
+    :: Text -- ^ 'pidName'
+    -> ProjectsInstancesDelete
+projectsInstancesDelete pPidName_ =
+    ProjectsInstancesDelete'
+    { _pidXgafv = Nothing
+    , _pidUploadProtocol = Nothing
+    , _pidAccessToken = Nothing
+    , _pidUploadType = Nothing
+    , _pidName = pPidName_
+    , _pidCallback = Nothing
+    }
+
+-- | V1 error format.
+pidXgafv :: Lens' ProjectsInstancesDelete (Maybe Xgafv)
+pidXgafv = lens _pidXgafv (\ s a -> s{_pidXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pidUploadProtocol :: Lens' ProjectsInstancesDelete (Maybe Text)
+pidUploadProtocol
+  = lens _pidUploadProtocol
+      (\ s a -> s{_pidUploadProtocol = a})
+
+-- | OAuth access token.
+pidAccessToken :: Lens' ProjectsInstancesDelete (Maybe Text)
+pidAccessToken
+  = lens _pidAccessToken
+      (\ s a -> s{_pidAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pidUploadType :: Lens' ProjectsInstancesDelete (Maybe Text)
+pidUploadType
+  = lens _pidUploadType
+      (\ s a -> s{_pidUploadType = a})
+
+-- | The unique name of the instance to be deleted. Values are of the form
+-- \`projects\/\/instances\/\`.
+pidName :: Lens' ProjectsInstancesDelete Text
+pidName = lens _pidName (\ s a -> s{_pidName = a})
+
+-- | JSONP
+pidCallback :: Lens' ProjectsInstancesDelete (Maybe Text)
+pidCallback
+  = lens _pidCallback (\ s a -> s{_pidCallback = a})
+
+instance GoogleRequest ProjectsInstancesDelete where
+        type Rs ProjectsInstancesDelete = Empty
+        type Scopes ProjectsInstancesDelete =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesDelete'{..}
+          = go _pidName _pidXgafv _pidUploadProtocol
+              _pidAccessToken
+              _pidUploadType
+              _pidCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Get.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/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.BigtableAdmin.Projects.Instances.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 information about an instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.get@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Get
+    (
+    -- * REST Resource
+      ProjectsInstancesGetResource
+
+    -- * Creating a Request
+    , projectsInstancesGet
+    , ProjectsInstancesGet
+
+    -- * Request Lenses
+    , pigXgafv
+    , pigUploadProtocol
+    , pigAccessToken
+    , pigUploadType
+    , pigName
+    , pigCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.get@ method which the
+-- 'ProjectsInstancesGet' request conforms to.
+type ProjectsInstancesGetResource =
+     "v2" :>
+       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] Instance
+
+-- | Gets information about an instance.
+--
+-- /See:/ 'projectsInstancesGet' smart constructor.
+data ProjectsInstancesGet = ProjectsInstancesGet'
+    { _pigXgafv          :: !(Maybe Xgafv)
+    , _pigUploadProtocol :: !(Maybe Text)
+    , _pigAccessToken    :: !(Maybe Text)
+    , _pigUploadType     :: !(Maybe Text)
+    , _pigName           :: !Text
+    , _pigCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesGet' 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'
+--
+-- * 'pigName'
+--
+-- * 'pigCallback'
+projectsInstancesGet
+    :: Text -- ^ 'pigName'
+    -> ProjectsInstancesGet
+projectsInstancesGet pPigName_ =
+    ProjectsInstancesGet'
+    { _pigXgafv = Nothing
+    , _pigUploadProtocol = Nothing
+    , _pigAccessToken = Nothing
+    , _pigUploadType = Nothing
+    , _pigName = pPigName_
+    , _pigCallback = Nothing
+    }
+
+-- | V1 error format.
+pigXgafv :: Lens' ProjectsInstancesGet (Maybe Xgafv)
+pigXgafv = lens _pigXgafv (\ s a -> s{_pigXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pigUploadProtocol :: Lens' ProjectsInstancesGet (Maybe Text)
+pigUploadProtocol
+  = lens _pigUploadProtocol
+      (\ s a -> s{_pigUploadProtocol = a})
+
+-- | OAuth access token.
+pigAccessToken :: Lens' ProjectsInstancesGet (Maybe Text)
+pigAccessToken
+  = lens _pigAccessToken
+      (\ s a -> s{_pigAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pigUploadType :: Lens' ProjectsInstancesGet (Maybe Text)
+pigUploadType
+  = lens _pigUploadType
+      (\ s a -> s{_pigUploadType = a})
+
+-- | The unique name of the requested instance. Values are of the form
+-- \`projects\/\/instances\/\`.
+pigName :: Lens' ProjectsInstancesGet Text
+pigName = lens _pigName (\ s a -> s{_pigName = a})
+
+-- | JSONP
+pigCallback :: Lens' ProjectsInstancesGet (Maybe Text)
+pigCallback
+  = lens _pigCallback (\ s a -> s{_pigCallback = a})
+
+instance GoogleRequest ProjectsInstancesGet where
+        type Rs ProjectsInstancesGet = Instance
+        type Scopes ProjectsInstancesGet =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient ProjectsInstancesGet'{..}
+          = go _pigName _pigXgafv _pigUploadProtocol
+              _pigAccessToken
+              _pigUploadType
+              _pigCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/GetIAMPolicy.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/GetIAMPolicy.hs
@@ -0,0 +1,172 @@
+{-# 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.BigtableAdmin.Projects.Instances.GetIAMPolicy
+-- 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 access control policy for an instance resource. Returns an
+-- empty policy if an instance exists but does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.getIamPolicy@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsInstancesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsInstancesGetIAMPolicy
+    , ProjectsInstancesGetIAMPolicy
+
+    -- * Request Lenses
+    , pigipXgafv
+    , pigipUploadProtocol
+    , pigipAccessToken
+    , pigipUploadType
+    , pigipPayload
+    , pigipResource
+    , pigipCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.getIamPolicy@ method which the
+-- 'ProjectsInstancesGetIAMPolicy' request conforms to.
+type ProjectsInstancesGetIAMPolicyResource =
+     "v2" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Gets the access control policy for an instance resource. Returns an
+-- empty policy if an instance exists but does not have a policy set.
+--
+-- /See:/ 'projectsInstancesGetIAMPolicy' smart constructor.
+data ProjectsInstancesGetIAMPolicy = ProjectsInstancesGetIAMPolicy'
+    { _pigipXgafv          :: !(Maybe Xgafv)
+    , _pigipUploadProtocol :: !(Maybe Text)
+    , _pigipAccessToken    :: !(Maybe Text)
+    , _pigipUploadType     :: !(Maybe Text)
+    , _pigipPayload        :: !GetIAMPolicyRequest
+    , _pigipResource       :: !Text
+    , _pigipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pigipXgafv'
+--
+-- * 'pigipUploadProtocol'
+--
+-- * 'pigipAccessToken'
+--
+-- * 'pigipUploadType'
+--
+-- * 'pigipPayload'
+--
+-- * 'pigipResource'
+--
+-- * 'pigipCallback'
+projectsInstancesGetIAMPolicy
+    :: GetIAMPolicyRequest -- ^ 'pigipPayload'
+    -> Text -- ^ 'pigipResource'
+    -> ProjectsInstancesGetIAMPolicy
+projectsInstancesGetIAMPolicy pPigipPayload_ pPigipResource_ =
+    ProjectsInstancesGetIAMPolicy'
+    { _pigipXgafv = Nothing
+    , _pigipUploadProtocol = Nothing
+    , _pigipAccessToken = Nothing
+    , _pigipUploadType = Nothing
+    , _pigipPayload = pPigipPayload_
+    , _pigipResource = pPigipResource_
+    , _pigipCallback = Nothing
+    }
+
+-- | V1 error format.
+pigipXgafv :: Lens' ProjectsInstancesGetIAMPolicy (Maybe Xgafv)
+pigipXgafv
+  = lens _pigipXgafv (\ s a -> s{_pigipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pigipUploadProtocol :: Lens' ProjectsInstancesGetIAMPolicy (Maybe Text)
+pigipUploadProtocol
+  = lens _pigipUploadProtocol
+      (\ s a -> s{_pigipUploadProtocol = a})
+
+-- | OAuth access token.
+pigipAccessToken :: Lens' ProjectsInstancesGetIAMPolicy (Maybe Text)
+pigipAccessToken
+  = lens _pigipAccessToken
+      (\ s a -> s{_pigipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pigipUploadType :: Lens' ProjectsInstancesGetIAMPolicy (Maybe Text)
+pigipUploadType
+  = lens _pigipUploadType
+      (\ s a -> s{_pigipUploadType = a})
+
+-- | Multipart request metadata.
+pigipPayload :: Lens' ProjectsInstancesGetIAMPolicy GetIAMPolicyRequest
+pigipPayload
+  = lens _pigipPayload (\ s a -> s{_pigipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+pigipResource :: Lens' ProjectsInstancesGetIAMPolicy Text
+pigipResource
+  = lens _pigipResource
+      (\ s a -> s{_pigipResource = a})
+
+-- | JSONP
+pigipCallback :: Lens' ProjectsInstancesGetIAMPolicy (Maybe Text)
+pigipCallback
+  = lens _pigipCallback
+      (\ s a -> s{_pigipCallback = a})
+
+instance GoogleRequest ProjectsInstancesGetIAMPolicy
+         where
+        type Rs ProjectsInstancesGetIAMPolicy = Policy
+        type Scopes ProjectsInstancesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesGetIAMPolicy'{..}
+          = go _pigipResource _pigipXgafv _pigipUploadProtocol
+              _pigipAccessToken
+              _pigipUploadType
+              _pigipCallback
+              (Just AltJSON)
+              _pigipPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/List.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/List.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.BigtableAdmin.Projects.Instances.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 information about instances in a project.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.list@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.List
+    (
+    -- * REST Resource
+      ProjectsInstancesListResource
+
+    -- * Creating a Request
+    , projectsInstancesList
+    , ProjectsInstancesList
+
+    -- * Request Lenses
+    , pilParent
+    , pilXgafv
+    , pilUploadProtocol
+    , pilAccessToken
+    , pilUploadType
+    , pilPageToken
+    , pilCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.list@ method which the
+-- 'ProjectsInstancesList' request conforms to.
+type ProjectsInstancesListResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "instances" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ListInstancesResponse
+
+-- | Lists information about instances in a project.
+--
+-- /See:/ 'projectsInstancesList' smart constructor.
+data ProjectsInstancesList = ProjectsInstancesList'
+    { _pilParent         :: !Text
+    , _pilXgafv          :: !(Maybe Xgafv)
+    , _pilUploadProtocol :: !(Maybe Text)
+    , _pilAccessToken    :: !(Maybe Text)
+    , _pilUploadType     :: !(Maybe Text)
+    , _pilPageToken      :: !(Maybe Text)
+    , _pilCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pilParent'
+--
+-- * 'pilXgafv'
+--
+-- * 'pilUploadProtocol'
+--
+-- * 'pilAccessToken'
+--
+-- * 'pilUploadType'
+--
+-- * 'pilPageToken'
+--
+-- * 'pilCallback'
+projectsInstancesList
+    :: Text -- ^ 'pilParent'
+    -> ProjectsInstancesList
+projectsInstancesList pPilParent_ =
+    ProjectsInstancesList'
+    { _pilParent = pPilParent_
+    , _pilXgafv = Nothing
+    , _pilUploadProtocol = Nothing
+    , _pilAccessToken = Nothing
+    , _pilUploadType = Nothing
+    , _pilPageToken = Nothing
+    , _pilCallback = Nothing
+    }
+
+-- | The unique name of the project for which a list of instances is
+-- requested. Values are of the form \`projects\/\`.
+pilParent :: Lens' ProjectsInstancesList Text
+pilParent
+  = lens _pilParent (\ s a -> s{_pilParent = a})
+
+-- | V1 error format.
+pilXgafv :: Lens' ProjectsInstancesList (Maybe Xgafv)
+pilXgafv = lens _pilXgafv (\ s a -> s{_pilXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pilUploadProtocol :: Lens' ProjectsInstancesList (Maybe Text)
+pilUploadProtocol
+  = lens _pilUploadProtocol
+      (\ s a -> s{_pilUploadProtocol = a})
+
+-- | OAuth access token.
+pilAccessToken :: Lens' ProjectsInstancesList (Maybe Text)
+pilAccessToken
+  = lens _pilAccessToken
+      (\ s a -> s{_pilAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pilUploadType :: Lens' ProjectsInstancesList (Maybe Text)
+pilUploadType
+  = lens _pilUploadType
+      (\ s a -> s{_pilUploadType = a})
+
+-- | DEPRECATED: This field is unused and ignored.
+pilPageToken :: Lens' ProjectsInstancesList (Maybe Text)
+pilPageToken
+  = lens _pilPageToken (\ s a -> s{_pilPageToken = a})
+
+-- | JSONP
+pilCallback :: Lens' ProjectsInstancesList (Maybe Text)
+pilCallback
+  = lens _pilCallback (\ s a -> s{_pilCallback = a})
+
+instance GoogleRequest ProjectsInstancesList where
+        type Rs ProjectsInstancesList = ListInstancesResponse
+        type Scopes ProjectsInstancesList =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient ProjectsInstancesList'{..}
+          = go _pilParent _pilXgafv _pilUploadProtocol
+              _pilAccessToken
+              _pilUploadType
+              _pilPageToken
+              _pilCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/PartialUpdateInstance.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/PartialUpdateInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/PartialUpdateInstance.hs
@@ -0,0 +1,188 @@
+{-# 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.BigtableAdmin.Projects.Instances.PartialUpdateInstance
+-- 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)
+--
+-- Partially updates an instance within a project. This method can modify
+-- all fields of an Instance and is the preferred way to update an
+-- Instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.partialUpdateInstance@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.PartialUpdateInstance
+    (
+    -- * REST Resource
+      ProjectsInstancesPartialUpdateInstanceResource
+
+    -- * Creating a Request
+    , projectsInstancesPartialUpdateInstance
+    , ProjectsInstancesPartialUpdateInstance
+
+    -- * Request Lenses
+    , pipuiXgafv
+    , pipuiUploadProtocol
+    , pipuiUpdateMask
+    , pipuiAccessToken
+    , pipuiUploadType
+    , pipuiPayload
+    , pipuiName
+    , pipuiCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.partialUpdateInstance@ method which the
+-- 'ProjectsInstancesPartialUpdateInstance' request conforms to.
+type ProjectsInstancesPartialUpdateInstanceResource =
+     "v2" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "updateMask" GFieldMask :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Instance :> Patch '[JSON] Operation
+
+-- | Partially updates an instance within a project. This method can modify
+-- all fields of an Instance and is the preferred way to update an
+-- Instance.
+--
+-- /See:/ 'projectsInstancesPartialUpdateInstance' smart constructor.
+data ProjectsInstancesPartialUpdateInstance = ProjectsInstancesPartialUpdateInstance'
+    { _pipuiXgafv          :: !(Maybe Xgafv)
+    , _pipuiUploadProtocol :: !(Maybe Text)
+    , _pipuiUpdateMask     :: !(Maybe GFieldMask)
+    , _pipuiAccessToken    :: !(Maybe Text)
+    , _pipuiUploadType     :: !(Maybe Text)
+    , _pipuiPayload        :: !Instance
+    , _pipuiName           :: !Text
+    , _pipuiCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesPartialUpdateInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pipuiXgafv'
+--
+-- * 'pipuiUploadProtocol'
+--
+-- * 'pipuiUpdateMask'
+--
+-- * 'pipuiAccessToken'
+--
+-- * 'pipuiUploadType'
+--
+-- * 'pipuiPayload'
+--
+-- * 'pipuiName'
+--
+-- * 'pipuiCallback'
+projectsInstancesPartialUpdateInstance
+    :: Instance -- ^ 'pipuiPayload'
+    -> Text -- ^ 'pipuiName'
+    -> ProjectsInstancesPartialUpdateInstance
+projectsInstancesPartialUpdateInstance pPipuiPayload_ pPipuiName_ =
+    ProjectsInstancesPartialUpdateInstance'
+    { _pipuiXgafv = Nothing
+    , _pipuiUploadProtocol = Nothing
+    , _pipuiUpdateMask = Nothing
+    , _pipuiAccessToken = Nothing
+    , _pipuiUploadType = Nothing
+    , _pipuiPayload = pPipuiPayload_
+    , _pipuiName = pPipuiName_
+    , _pipuiCallback = Nothing
+    }
+
+-- | V1 error format.
+pipuiXgafv :: Lens' ProjectsInstancesPartialUpdateInstance (Maybe Xgafv)
+pipuiXgafv
+  = lens _pipuiXgafv (\ s a -> s{_pipuiXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pipuiUploadProtocol :: Lens' ProjectsInstancesPartialUpdateInstance (Maybe Text)
+pipuiUploadProtocol
+  = lens _pipuiUploadProtocol
+      (\ s a -> s{_pipuiUploadProtocol = a})
+
+-- | The subset of Instance fields which should be replaced. Must be
+-- explicitly set.
+pipuiUpdateMask :: Lens' ProjectsInstancesPartialUpdateInstance (Maybe GFieldMask)
+pipuiUpdateMask
+  = lens _pipuiUpdateMask
+      (\ s a -> s{_pipuiUpdateMask = a})
+
+-- | OAuth access token.
+pipuiAccessToken :: Lens' ProjectsInstancesPartialUpdateInstance (Maybe Text)
+pipuiAccessToken
+  = lens _pipuiAccessToken
+      (\ s a -> s{_pipuiAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pipuiUploadType :: Lens' ProjectsInstancesPartialUpdateInstance (Maybe Text)
+pipuiUploadType
+  = lens _pipuiUploadType
+      (\ s a -> s{_pipuiUploadType = a})
+
+-- | Multipart request metadata.
+pipuiPayload :: Lens' ProjectsInstancesPartialUpdateInstance Instance
+pipuiPayload
+  = lens _pipuiPayload (\ s a -> s{_pipuiPayload = a})
+
+-- | (\`OutputOnly\`) The unique name of the instance. Values are of the form
+-- \`projects\/\/instances\/a-z+[a-z0-9]\`.
+pipuiName :: Lens' ProjectsInstancesPartialUpdateInstance Text
+pipuiName
+  = lens _pipuiName (\ s a -> s{_pipuiName = a})
+
+-- | JSONP
+pipuiCallback :: Lens' ProjectsInstancesPartialUpdateInstance (Maybe Text)
+pipuiCallback
+  = lens _pipuiCallback
+      (\ s a -> s{_pipuiCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesPartialUpdateInstance where
+        type Rs ProjectsInstancesPartialUpdateInstance =
+             Operation
+        type Scopes ProjectsInstancesPartialUpdateInstance =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsInstancesPartialUpdateInstance'{..}
+          = go _pipuiName _pipuiXgafv _pipuiUploadProtocol
+              _pipuiUpdateMask
+              _pipuiAccessToken
+              _pipuiUploadType
+              _pipuiCallback
+              (Just AltJSON)
+              _pipuiPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesPartialUpdateInstanceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/SetIAMPolicy.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/SetIAMPolicy.hs
@@ -0,0 +1,172 @@
+{-# 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.BigtableAdmin.Projects.Instances.SetIAMPolicy
+-- 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)
+--
+-- Sets the access control policy on an instance resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.setIamPolicy@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsInstancesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsInstancesSetIAMPolicy
+    , ProjectsInstancesSetIAMPolicy
+
+    -- * Request Lenses
+    , pisipXgafv
+    , pisipUploadProtocol
+    , pisipAccessToken
+    , pisipUploadType
+    , pisipPayload
+    , pisipResource
+    , pisipCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.setIamPolicy@ method which the
+-- 'ProjectsInstancesSetIAMPolicy' request conforms to.
+type ProjectsInstancesSetIAMPolicyResource =
+     "v2" :>
+       CaptureMode "resource" "setIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetIAMPolicyRequest :>
+                       Post '[JSON] Policy
+
+-- | Sets the access control policy on an instance resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsInstancesSetIAMPolicy' smart constructor.
+data ProjectsInstancesSetIAMPolicy = ProjectsInstancesSetIAMPolicy'
+    { _pisipXgafv          :: !(Maybe Xgafv)
+    , _pisipUploadProtocol :: !(Maybe Text)
+    , _pisipAccessToken    :: !(Maybe Text)
+    , _pisipUploadType     :: !(Maybe Text)
+    , _pisipPayload        :: !SetIAMPolicyRequest
+    , _pisipResource       :: !Text
+    , _pisipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pisipXgafv'
+--
+-- * 'pisipUploadProtocol'
+--
+-- * 'pisipAccessToken'
+--
+-- * 'pisipUploadType'
+--
+-- * 'pisipPayload'
+--
+-- * 'pisipResource'
+--
+-- * 'pisipCallback'
+projectsInstancesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'pisipPayload'
+    -> Text -- ^ 'pisipResource'
+    -> ProjectsInstancesSetIAMPolicy
+projectsInstancesSetIAMPolicy pPisipPayload_ pPisipResource_ =
+    ProjectsInstancesSetIAMPolicy'
+    { _pisipXgafv = Nothing
+    , _pisipUploadProtocol = Nothing
+    , _pisipAccessToken = Nothing
+    , _pisipUploadType = Nothing
+    , _pisipPayload = pPisipPayload_
+    , _pisipResource = pPisipResource_
+    , _pisipCallback = Nothing
+    }
+
+-- | V1 error format.
+pisipXgafv :: Lens' ProjectsInstancesSetIAMPolicy (Maybe Xgafv)
+pisipXgafv
+  = lens _pisipXgafv (\ s a -> s{_pisipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pisipUploadProtocol :: Lens' ProjectsInstancesSetIAMPolicy (Maybe Text)
+pisipUploadProtocol
+  = lens _pisipUploadProtocol
+      (\ s a -> s{_pisipUploadProtocol = a})
+
+-- | OAuth access token.
+pisipAccessToken :: Lens' ProjectsInstancesSetIAMPolicy (Maybe Text)
+pisipAccessToken
+  = lens _pisipAccessToken
+      (\ s a -> s{_pisipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pisipUploadType :: Lens' ProjectsInstancesSetIAMPolicy (Maybe Text)
+pisipUploadType
+  = lens _pisipUploadType
+      (\ s a -> s{_pisipUploadType = a})
+
+-- | Multipart request metadata.
+pisipPayload :: Lens' ProjectsInstancesSetIAMPolicy SetIAMPolicyRequest
+pisipPayload
+  = lens _pisipPayload (\ s a -> s{_pisipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+pisipResource :: Lens' ProjectsInstancesSetIAMPolicy Text
+pisipResource
+  = lens _pisipResource
+      (\ s a -> s{_pisipResource = a})
+
+-- | JSONP
+pisipCallback :: Lens' ProjectsInstancesSetIAMPolicy (Maybe Text)
+pisipCallback
+  = lens _pisipCallback
+      (\ s a -> s{_pisipCallback = a})
+
+instance GoogleRequest ProjectsInstancesSetIAMPolicy
+         where
+        type Rs ProjectsInstancesSetIAMPolicy = Policy
+        type Scopes ProjectsInstancesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesSetIAMPolicy'{..}
+          = go _pisipResource _pisipXgafv _pisipUploadProtocol
+              _pisipAccessToken
+              _pisipUploadType
+              _pisipCallback
+              (Just AltJSON)
+              _pisipPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/CheckConsistency.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/CheckConsistency.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/CheckConsistency.hs
@@ -0,0 +1,177 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.CheckConsistency
+-- 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)
+--
+-- Checks replication consistency based on a consistency token, that is, if
+-- replication has caught up based on the conditions specified in the token
+-- and the check request.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.checkConsistency@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.CheckConsistency
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesCheckConsistencyResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesCheckConsistency
+    , ProjectsInstancesTablesCheckConsistency
+
+    -- * Request Lenses
+    , pitccXgafv
+    , pitccUploadProtocol
+    , pitccAccessToken
+    , pitccUploadType
+    , pitccPayload
+    , pitccName
+    , pitccCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.checkConsistency@ method which the
+-- 'ProjectsInstancesTablesCheckConsistency' request conforms to.
+type ProjectsInstancesTablesCheckConsistencyResource
+     =
+     "v2" :>
+       CaptureMode "name" "checkConsistency" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] CheckConsistencyRequest :>
+                       Post '[JSON] CheckConsistencyResponse
+
+-- | Checks replication consistency based on a consistency token, that is, if
+-- replication has caught up based on the conditions specified in the token
+-- and the check request.
+--
+-- /See:/ 'projectsInstancesTablesCheckConsistency' smart constructor.
+data ProjectsInstancesTablesCheckConsistency = ProjectsInstancesTablesCheckConsistency'
+    { _pitccXgafv          :: !(Maybe Xgafv)
+    , _pitccUploadProtocol :: !(Maybe Text)
+    , _pitccAccessToken    :: !(Maybe Text)
+    , _pitccUploadType     :: !(Maybe Text)
+    , _pitccPayload        :: !CheckConsistencyRequest
+    , _pitccName           :: !Text
+    , _pitccCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesCheckConsistency' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitccXgafv'
+--
+-- * 'pitccUploadProtocol'
+--
+-- * 'pitccAccessToken'
+--
+-- * 'pitccUploadType'
+--
+-- * 'pitccPayload'
+--
+-- * 'pitccName'
+--
+-- * 'pitccCallback'
+projectsInstancesTablesCheckConsistency
+    :: CheckConsistencyRequest -- ^ 'pitccPayload'
+    -> Text -- ^ 'pitccName'
+    -> ProjectsInstancesTablesCheckConsistency
+projectsInstancesTablesCheckConsistency pPitccPayload_ pPitccName_ =
+    ProjectsInstancesTablesCheckConsistency'
+    { _pitccXgafv = Nothing
+    , _pitccUploadProtocol = Nothing
+    , _pitccAccessToken = Nothing
+    , _pitccUploadType = Nothing
+    , _pitccPayload = pPitccPayload_
+    , _pitccName = pPitccName_
+    , _pitccCallback = Nothing
+    }
+
+-- | V1 error format.
+pitccXgafv :: Lens' ProjectsInstancesTablesCheckConsistency (Maybe Xgafv)
+pitccXgafv
+  = lens _pitccXgafv (\ s a -> s{_pitccXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitccUploadProtocol :: Lens' ProjectsInstancesTablesCheckConsistency (Maybe Text)
+pitccUploadProtocol
+  = lens _pitccUploadProtocol
+      (\ s a -> s{_pitccUploadProtocol = a})
+
+-- | OAuth access token.
+pitccAccessToken :: Lens' ProjectsInstancesTablesCheckConsistency (Maybe Text)
+pitccAccessToken
+  = lens _pitccAccessToken
+      (\ s a -> s{_pitccAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitccUploadType :: Lens' ProjectsInstancesTablesCheckConsistency (Maybe Text)
+pitccUploadType
+  = lens _pitccUploadType
+      (\ s a -> s{_pitccUploadType = a})
+
+-- | Multipart request metadata.
+pitccPayload :: Lens' ProjectsInstancesTablesCheckConsistency CheckConsistencyRequest
+pitccPayload
+  = lens _pitccPayload (\ s a -> s{_pitccPayload = a})
+
+-- | The unique name of the Table for which to check replication consistency.
+-- Values are of the form \`projects\/\/instances\/\/tables\/
+-- \`.
+pitccName :: Lens' ProjectsInstancesTablesCheckConsistency Text
+pitccName
+  = lens _pitccName (\ s a -> s{_pitccName = a})
+
+-- | JSONP
+pitccCallback :: Lens' ProjectsInstancesTablesCheckConsistency (Maybe Text)
+pitccCallback
+  = lens _pitccCallback
+      (\ s a -> s{_pitccCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesTablesCheckConsistency where
+        type Rs ProjectsInstancesTablesCheckConsistency =
+             CheckConsistencyResponse
+        type Scopes ProjectsInstancesTablesCheckConsistency =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsInstancesTablesCheckConsistency'{..}
+          = go _pitccName _pitccXgafv _pitccUploadProtocol
+              _pitccAccessToken
+              _pitccUploadType
+              _pitccCallback
+              (Just AltJSON)
+              _pitccPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsInstancesTablesCheckConsistencyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Create.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Create.hs
@@ -0,0 +1,170 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.Create
+-- 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)
+--
+-- Creates a new table in the specified instance. The table can be created
+-- with a full set of initial column families, specified in the request.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.create@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Create
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesCreateResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesCreate
+    , ProjectsInstancesTablesCreate
+
+    -- * Request Lenses
+    , pitcParent
+    , pitcXgafv
+    , pitcUploadProtocol
+    , pitcAccessToken
+    , pitcUploadType
+    , pitcPayload
+    , pitcCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.create@ method which the
+-- 'ProjectsInstancesTablesCreate' request conforms to.
+type ProjectsInstancesTablesCreateResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "tables" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CreateTableRequest :>
+                         Post '[JSON] Table
+
+-- | Creates a new table in the specified instance. The table can be created
+-- with a full set of initial column families, specified in the request.
+--
+-- /See:/ 'projectsInstancesTablesCreate' smart constructor.
+data ProjectsInstancesTablesCreate = ProjectsInstancesTablesCreate'
+    { _pitcParent         :: !Text
+    , _pitcXgafv          :: !(Maybe Xgafv)
+    , _pitcUploadProtocol :: !(Maybe Text)
+    , _pitcAccessToken    :: !(Maybe Text)
+    , _pitcUploadType     :: !(Maybe Text)
+    , _pitcPayload        :: !CreateTableRequest
+    , _pitcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitcParent'
+--
+-- * 'pitcXgafv'
+--
+-- * 'pitcUploadProtocol'
+--
+-- * 'pitcAccessToken'
+--
+-- * 'pitcUploadType'
+--
+-- * 'pitcPayload'
+--
+-- * 'pitcCallback'
+projectsInstancesTablesCreate
+    :: Text -- ^ 'pitcParent'
+    -> CreateTableRequest -- ^ 'pitcPayload'
+    -> ProjectsInstancesTablesCreate
+projectsInstancesTablesCreate pPitcParent_ pPitcPayload_ =
+    ProjectsInstancesTablesCreate'
+    { _pitcParent = pPitcParent_
+    , _pitcXgafv = Nothing
+    , _pitcUploadProtocol = Nothing
+    , _pitcAccessToken = Nothing
+    , _pitcUploadType = Nothing
+    , _pitcPayload = pPitcPayload_
+    , _pitcCallback = Nothing
+    }
+
+-- | The unique name of the instance in which to create the table. Values are
+-- of the form \`projects\/\/instances\/\`.
+pitcParent :: Lens' ProjectsInstancesTablesCreate Text
+pitcParent
+  = lens _pitcParent (\ s a -> s{_pitcParent = a})
+
+-- | V1 error format.
+pitcXgafv :: Lens' ProjectsInstancesTablesCreate (Maybe Xgafv)
+pitcXgafv
+  = lens _pitcXgafv (\ s a -> s{_pitcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitcUploadProtocol :: Lens' ProjectsInstancesTablesCreate (Maybe Text)
+pitcUploadProtocol
+  = lens _pitcUploadProtocol
+      (\ s a -> s{_pitcUploadProtocol = a})
+
+-- | OAuth access token.
+pitcAccessToken :: Lens' ProjectsInstancesTablesCreate (Maybe Text)
+pitcAccessToken
+  = lens _pitcAccessToken
+      (\ s a -> s{_pitcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitcUploadType :: Lens' ProjectsInstancesTablesCreate (Maybe Text)
+pitcUploadType
+  = lens _pitcUploadType
+      (\ s a -> s{_pitcUploadType = a})
+
+-- | Multipart request metadata.
+pitcPayload :: Lens' ProjectsInstancesTablesCreate CreateTableRequest
+pitcPayload
+  = lens _pitcPayload (\ s a -> s{_pitcPayload = a})
+
+-- | JSONP
+pitcCallback :: Lens' ProjectsInstancesTablesCreate (Maybe Text)
+pitcCallback
+  = lens _pitcCallback (\ s a -> s{_pitcCallback = a})
+
+instance GoogleRequest ProjectsInstancesTablesCreate
+         where
+        type Rs ProjectsInstancesTablesCreate = Table
+        type Scopes ProjectsInstancesTablesCreate =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesTablesCreate'{..}
+          = go _pitcParent _pitcXgafv _pitcUploadProtocol
+              _pitcAccessToken
+              _pitcUploadType
+              _pitcCallback
+              (Just AltJSON)
+              _pitcPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesTablesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Delete.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Delete.hs
@@ -0,0 +1,153 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.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)
+--
+-- Permanently deletes a specified table and all of its data.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.delete@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Delete
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesDeleteResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesDelete
+    , ProjectsInstancesTablesDelete
+
+    -- * Request Lenses
+    , pitdXgafv
+    , pitdUploadProtocol
+    , pitdAccessToken
+    , pitdUploadType
+    , pitdName
+    , pitdCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.delete@ method which the
+-- 'ProjectsInstancesTablesDelete' request conforms to.
+type ProjectsInstancesTablesDeleteResource =
+     "v2" :>
+       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
+
+-- | Permanently deletes a specified table and all of its data.
+--
+-- /See:/ 'projectsInstancesTablesDelete' smart constructor.
+data ProjectsInstancesTablesDelete = ProjectsInstancesTablesDelete'
+    { _pitdXgafv          :: !(Maybe Xgafv)
+    , _pitdUploadProtocol :: !(Maybe Text)
+    , _pitdAccessToken    :: !(Maybe Text)
+    , _pitdUploadType     :: !(Maybe Text)
+    , _pitdName           :: !Text
+    , _pitdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitdXgafv'
+--
+-- * 'pitdUploadProtocol'
+--
+-- * 'pitdAccessToken'
+--
+-- * 'pitdUploadType'
+--
+-- * 'pitdName'
+--
+-- * 'pitdCallback'
+projectsInstancesTablesDelete
+    :: Text -- ^ 'pitdName'
+    -> ProjectsInstancesTablesDelete
+projectsInstancesTablesDelete pPitdName_ =
+    ProjectsInstancesTablesDelete'
+    { _pitdXgafv = Nothing
+    , _pitdUploadProtocol = Nothing
+    , _pitdAccessToken = Nothing
+    , _pitdUploadType = Nothing
+    , _pitdName = pPitdName_
+    , _pitdCallback = Nothing
+    }
+
+-- | V1 error format.
+pitdXgafv :: Lens' ProjectsInstancesTablesDelete (Maybe Xgafv)
+pitdXgafv
+  = lens _pitdXgafv (\ s a -> s{_pitdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitdUploadProtocol :: Lens' ProjectsInstancesTablesDelete (Maybe Text)
+pitdUploadProtocol
+  = lens _pitdUploadProtocol
+      (\ s a -> s{_pitdUploadProtocol = a})
+
+-- | OAuth access token.
+pitdAccessToken :: Lens' ProjectsInstancesTablesDelete (Maybe Text)
+pitdAccessToken
+  = lens _pitdAccessToken
+      (\ s a -> s{_pitdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitdUploadType :: Lens' ProjectsInstancesTablesDelete (Maybe Text)
+pitdUploadType
+  = lens _pitdUploadType
+      (\ s a -> s{_pitdUploadType = a})
+
+-- | The unique name of the table to be deleted. Values are of the form
+-- \`projects\/\/instances\/\/tables\/
+-- \`.
+pitdName :: Lens' ProjectsInstancesTablesDelete Text
+pitdName = lens _pitdName (\ s a -> s{_pitdName = a})
+
+-- | JSONP
+pitdCallback :: Lens' ProjectsInstancesTablesDelete (Maybe Text)
+pitdCallback
+  = lens _pitdCallback (\ s a -> s{_pitdCallback = a})
+
+instance GoogleRequest ProjectsInstancesTablesDelete
+         where
+        type Rs ProjectsInstancesTablesDelete = Empty
+        type Scopes ProjectsInstancesTablesDelete =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesTablesDelete'{..}
+          = go _pitdName _pitdXgafv _pitdUploadProtocol
+              _pitdAccessToken
+              _pitdUploadType
+              _pitdCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesTablesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/DropRowRange.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/DropRowRange.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/DropRowRange.hs
@@ -0,0 +1,175 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.DropRowRange
+-- 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)
+--
+-- Permanently drop\/delete a row range from a specified table. The request
+-- can specify whether to delete all rows in a table, or only those that
+-- match a particular prefix.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.dropRowRange@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.DropRowRange
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesDropRowRangeResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesDropRowRange
+    , ProjectsInstancesTablesDropRowRange
+
+    -- * Request Lenses
+    , pitdrrXgafv
+    , pitdrrUploadProtocol
+    , pitdrrAccessToken
+    , pitdrrUploadType
+    , pitdrrPayload
+    , pitdrrName
+    , pitdrrCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.dropRowRange@ method which the
+-- 'ProjectsInstancesTablesDropRowRange' request conforms to.
+type ProjectsInstancesTablesDropRowRangeResource =
+     "v2" :>
+       CaptureMode "name" "dropRowRange" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] DropRowRangeRequest :>
+                       Post '[JSON] Empty
+
+-- | Permanently drop\/delete a row range from a specified table. The request
+-- can specify whether to delete all rows in a table, or only those that
+-- match a particular prefix.
+--
+-- /See:/ 'projectsInstancesTablesDropRowRange' smart constructor.
+data ProjectsInstancesTablesDropRowRange = ProjectsInstancesTablesDropRowRange'
+    { _pitdrrXgafv          :: !(Maybe Xgafv)
+    , _pitdrrUploadProtocol :: !(Maybe Text)
+    , _pitdrrAccessToken    :: !(Maybe Text)
+    , _pitdrrUploadType     :: !(Maybe Text)
+    , _pitdrrPayload        :: !DropRowRangeRequest
+    , _pitdrrName           :: !Text
+    , _pitdrrCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesDropRowRange' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitdrrXgafv'
+--
+-- * 'pitdrrUploadProtocol'
+--
+-- * 'pitdrrAccessToken'
+--
+-- * 'pitdrrUploadType'
+--
+-- * 'pitdrrPayload'
+--
+-- * 'pitdrrName'
+--
+-- * 'pitdrrCallback'
+projectsInstancesTablesDropRowRange
+    :: DropRowRangeRequest -- ^ 'pitdrrPayload'
+    -> Text -- ^ 'pitdrrName'
+    -> ProjectsInstancesTablesDropRowRange
+projectsInstancesTablesDropRowRange pPitdrrPayload_ pPitdrrName_ =
+    ProjectsInstancesTablesDropRowRange'
+    { _pitdrrXgafv = Nothing
+    , _pitdrrUploadProtocol = Nothing
+    , _pitdrrAccessToken = Nothing
+    , _pitdrrUploadType = Nothing
+    , _pitdrrPayload = pPitdrrPayload_
+    , _pitdrrName = pPitdrrName_
+    , _pitdrrCallback = Nothing
+    }
+
+-- | V1 error format.
+pitdrrXgafv :: Lens' ProjectsInstancesTablesDropRowRange (Maybe Xgafv)
+pitdrrXgafv
+  = lens _pitdrrXgafv (\ s a -> s{_pitdrrXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitdrrUploadProtocol :: Lens' ProjectsInstancesTablesDropRowRange (Maybe Text)
+pitdrrUploadProtocol
+  = lens _pitdrrUploadProtocol
+      (\ s a -> s{_pitdrrUploadProtocol = a})
+
+-- | OAuth access token.
+pitdrrAccessToken :: Lens' ProjectsInstancesTablesDropRowRange (Maybe Text)
+pitdrrAccessToken
+  = lens _pitdrrAccessToken
+      (\ s a -> s{_pitdrrAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitdrrUploadType :: Lens' ProjectsInstancesTablesDropRowRange (Maybe Text)
+pitdrrUploadType
+  = lens _pitdrrUploadType
+      (\ s a -> s{_pitdrrUploadType = a})
+
+-- | Multipart request metadata.
+pitdrrPayload :: Lens' ProjectsInstancesTablesDropRowRange DropRowRangeRequest
+pitdrrPayload
+  = lens _pitdrrPayload
+      (\ s a -> s{_pitdrrPayload = a})
+
+-- | The unique name of the table on which to drop a range of rows. Values
+-- are of the form \`projects\/\/instances\/\/tables\/
+-- \`.
+pitdrrName :: Lens' ProjectsInstancesTablesDropRowRange Text
+pitdrrName
+  = lens _pitdrrName (\ s a -> s{_pitdrrName = a})
+
+-- | JSONP
+pitdrrCallback :: Lens' ProjectsInstancesTablesDropRowRange (Maybe Text)
+pitdrrCallback
+  = lens _pitdrrCallback
+      (\ s a -> s{_pitdrrCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesTablesDropRowRange where
+        type Rs ProjectsInstancesTablesDropRowRange = Empty
+        type Scopes ProjectsInstancesTablesDropRowRange =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsInstancesTablesDropRowRange'{..}
+          = go _pitdrrName _pitdrrXgafv _pitdrrUploadProtocol
+              _pitdrrAccessToken
+              _pitdrrUploadType
+              _pitdrrCallback
+              (Just AltJSON)
+              _pitdrrPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesTablesDropRowRangeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/GenerateConsistencyToken.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/GenerateConsistencyToken.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/GenerateConsistencyToken.hs
@@ -0,0 +1,183 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.GenerateConsistencyToken
+-- 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)
+--
+-- Generates a consistency token for a Table, which can be used in
+-- CheckConsistency to check whether mutations to the table that finished
+-- before this call started have been replicated. The tokens will be
+-- available for 90 days.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.generateConsistencyToken@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.GenerateConsistencyToken
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesGenerateConsistencyTokenResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesGenerateConsistencyToken
+    , ProjectsInstancesTablesGenerateConsistencyToken
+
+    -- * Request Lenses
+    , pitgctXgafv
+    , pitgctUploadProtocol
+    , pitgctAccessToken
+    , pitgctUploadType
+    , pitgctPayload
+    , pitgctName
+    , pitgctCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.generateConsistencyToken@ method which the
+-- 'ProjectsInstancesTablesGenerateConsistencyToken' request conforms to.
+type ProjectsInstancesTablesGenerateConsistencyTokenResource
+     =
+     "v2" :>
+       CaptureMode "name" "generateConsistencyToken" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] GenerateConsistencyTokenRequest :>
+                       Post '[JSON] GenerateConsistencyTokenResponse
+
+-- | Generates a consistency token for a Table, which can be used in
+-- CheckConsistency to check whether mutations to the table that finished
+-- before this call started have been replicated. The tokens will be
+-- available for 90 days.
+--
+-- /See:/ 'projectsInstancesTablesGenerateConsistencyToken' smart constructor.
+data ProjectsInstancesTablesGenerateConsistencyToken = ProjectsInstancesTablesGenerateConsistencyToken'
+    { _pitgctXgafv          :: !(Maybe Xgafv)
+    , _pitgctUploadProtocol :: !(Maybe Text)
+    , _pitgctAccessToken    :: !(Maybe Text)
+    , _pitgctUploadType     :: !(Maybe Text)
+    , _pitgctPayload        :: !GenerateConsistencyTokenRequest
+    , _pitgctName           :: !Text
+    , _pitgctCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesGenerateConsistencyToken' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitgctXgafv'
+--
+-- * 'pitgctUploadProtocol'
+--
+-- * 'pitgctAccessToken'
+--
+-- * 'pitgctUploadType'
+--
+-- * 'pitgctPayload'
+--
+-- * 'pitgctName'
+--
+-- * 'pitgctCallback'
+projectsInstancesTablesGenerateConsistencyToken
+    :: GenerateConsistencyTokenRequest -- ^ 'pitgctPayload'
+    -> Text -- ^ 'pitgctName'
+    -> ProjectsInstancesTablesGenerateConsistencyToken
+projectsInstancesTablesGenerateConsistencyToken pPitgctPayload_ pPitgctName_ =
+    ProjectsInstancesTablesGenerateConsistencyToken'
+    { _pitgctXgafv = Nothing
+    , _pitgctUploadProtocol = Nothing
+    , _pitgctAccessToken = Nothing
+    , _pitgctUploadType = Nothing
+    , _pitgctPayload = pPitgctPayload_
+    , _pitgctName = pPitgctName_
+    , _pitgctCallback = Nothing
+    }
+
+-- | V1 error format.
+pitgctXgafv :: Lens' ProjectsInstancesTablesGenerateConsistencyToken (Maybe Xgafv)
+pitgctXgafv
+  = lens _pitgctXgafv (\ s a -> s{_pitgctXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitgctUploadProtocol :: Lens' ProjectsInstancesTablesGenerateConsistencyToken (Maybe Text)
+pitgctUploadProtocol
+  = lens _pitgctUploadProtocol
+      (\ s a -> s{_pitgctUploadProtocol = a})
+
+-- | OAuth access token.
+pitgctAccessToken :: Lens' ProjectsInstancesTablesGenerateConsistencyToken (Maybe Text)
+pitgctAccessToken
+  = lens _pitgctAccessToken
+      (\ s a -> s{_pitgctAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitgctUploadType :: Lens' ProjectsInstancesTablesGenerateConsistencyToken (Maybe Text)
+pitgctUploadType
+  = lens _pitgctUploadType
+      (\ s a -> s{_pitgctUploadType = a})
+
+-- | Multipart request metadata.
+pitgctPayload :: Lens' ProjectsInstancesTablesGenerateConsistencyToken GenerateConsistencyTokenRequest
+pitgctPayload
+  = lens _pitgctPayload
+      (\ s a -> s{_pitgctPayload = a})
+
+-- | The unique name of the Table for which to create a consistency token.
+-- Values are of the form \`projects\/\/instances\/\/tables\/
+-- \`.
+pitgctName :: Lens' ProjectsInstancesTablesGenerateConsistencyToken Text
+pitgctName
+  = lens _pitgctName (\ s a -> s{_pitgctName = a})
+
+-- | JSONP
+pitgctCallback :: Lens' ProjectsInstancesTablesGenerateConsistencyToken (Maybe Text)
+pitgctCallback
+  = lens _pitgctCallback
+      (\ s a -> s{_pitgctCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesTablesGenerateConsistencyToken where
+        type Rs
+               ProjectsInstancesTablesGenerateConsistencyToken
+             = GenerateConsistencyTokenResponse
+        type Scopes
+               ProjectsInstancesTablesGenerateConsistencyToken
+             =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsInstancesTablesGenerateConsistencyToken'{..}
+          = go _pitgctName _pitgctXgafv _pitgctUploadProtocol
+              _pitgctAccessToken
+              _pitgctUploadType
+              _pitgctCallback
+              (Just AltJSON)
+              _pitgctPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsInstancesTablesGenerateConsistencyTokenResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Get.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/Get.hs
@@ -0,0 +1,165 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.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 metadata information about the specified table.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.get@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Get
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesGetResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesGet
+    , ProjectsInstancesTablesGet
+
+    -- * Request Lenses
+    , pitgXgafv
+    , pitgUploadProtocol
+    , pitgAccessToken
+    , pitgUploadType
+    , pitgName
+    , pitgView
+    , pitgCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.get@ method which the
+-- 'ProjectsInstancesTablesGet' request conforms to.
+type ProjectsInstancesTablesGetResource =
+     "v2" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "view" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Table
+
+-- | Gets metadata information about the specified table.
+--
+-- /See:/ 'projectsInstancesTablesGet' smart constructor.
+data ProjectsInstancesTablesGet = ProjectsInstancesTablesGet'
+    { _pitgXgafv          :: !(Maybe Xgafv)
+    , _pitgUploadProtocol :: !(Maybe Text)
+    , _pitgAccessToken    :: !(Maybe Text)
+    , _pitgUploadType     :: !(Maybe Text)
+    , _pitgName           :: !Text
+    , _pitgView           :: !(Maybe Text)
+    , _pitgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitgXgafv'
+--
+-- * 'pitgUploadProtocol'
+--
+-- * 'pitgAccessToken'
+--
+-- * 'pitgUploadType'
+--
+-- * 'pitgName'
+--
+-- * 'pitgView'
+--
+-- * 'pitgCallback'
+projectsInstancesTablesGet
+    :: Text -- ^ 'pitgName'
+    -> ProjectsInstancesTablesGet
+projectsInstancesTablesGet pPitgName_ =
+    ProjectsInstancesTablesGet'
+    { _pitgXgafv = Nothing
+    , _pitgUploadProtocol = Nothing
+    , _pitgAccessToken = Nothing
+    , _pitgUploadType = Nothing
+    , _pitgName = pPitgName_
+    , _pitgView = Nothing
+    , _pitgCallback = Nothing
+    }
+
+-- | V1 error format.
+pitgXgafv :: Lens' ProjectsInstancesTablesGet (Maybe Xgafv)
+pitgXgafv
+  = lens _pitgXgafv (\ s a -> s{_pitgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitgUploadProtocol :: Lens' ProjectsInstancesTablesGet (Maybe Text)
+pitgUploadProtocol
+  = lens _pitgUploadProtocol
+      (\ s a -> s{_pitgUploadProtocol = a})
+
+-- | OAuth access token.
+pitgAccessToken :: Lens' ProjectsInstancesTablesGet (Maybe Text)
+pitgAccessToken
+  = lens _pitgAccessToken
+      (\ s a -> s{_pitgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitgUploadType :: Lens' ProjectsInstancesTablesGet (Maybe Text)
+pitgUploadType
+  = lens _pitgUploadType
+      (\ s a -> s{_pitgUploadType = a})
+
+-- | The unique name of the requested table. Values are of the form
+-- \`projects\/\/instances\/\/tables\/
+-- \`.
+pitgName :: Lens' ProjectsInstancesTablesGet Text
+pitgName = lens _pitgName (\ s a -> s{_pitgName = a})
+
+-- | The view to be applied to the returned table\'s fields. Defaults to
+-- \`SCHEMA_VIEW\` if unspecified.
+pitgView :: Lens' ProjectsInstancesTablesGet (Maybe Text)
+pitgView = lens _pitgView (\ s a -> s{_pitgView = a})
+
+-- | JSONP
+pitgCallback :: Lens' ProjectsInstancesTablesGet (Maybe Text)
+pitgCallback
+  = lens _pitgCallback (\ s a -> s{_pitgCallback = a})
+
+instance GoogleRequest ProjectsInstancesTablesGet
+         where
+        type Rs ProjectsInstancesTablesGet = Table
+        type Scopes ProjectsInstancesTablesGet =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient ProjectsInstancesTablesGet'{..}
+          = go _pitgName _pitgXgafv _pitgUploadProtocol
+              _pitgAccessToken
+              _pitgUploadType
+              _pitgView
+              _pitgCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesTablesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/List.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/List.hs
@@ -0,0 +1,194 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.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 all tables served from a specified instance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.list@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.List
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesListResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesList
+    , ProjectsInstancesTablesList
+
+    -- * Request Lenses
+    , pitlParent
+    , pitlXgafv
+    , pitlUploadProtocol
+    , pitlAccessToken
+    , pitlUploadType
+    , pitlView
+    , pitlPageToken
+    , pitlPageSize
+    , pitlCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.list@ method which the
+-- 'ProjectsInstancesTablesList' request conforms to.
+type ProjectsInstancesTablesListResource =
+     "v2" :>
+       Capture "parent" Text :>
+         "tables" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "view" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "pageSize" (Textual Int32) :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListTablesResponse
+
+-- | Lists all tables served from a specified instance.
+--
+-- /See:/ 'projectsInstancesTablesList' smart constructor.
+data ProjectsInstancesTablesList = ProjectsInstancesTablesList'
+    { _pitlParent         :: !Text
+    , _pitlXgafv          :: !(Maybe Xgafv)
+    , _pitlUploadProtocol :: !(Maybe Text)
+    , _pitlAccessToken    :: !(Maybe Text)
+    , _pitlUploadType     :: !(Maybe Text)
+    , _pitlView           :: !(Maybe Text)
+    , _pitlPageToken      :: !(Maybe Text)
+    , _pitlPageSize       :: !(Maybe (Textual Int32))
+    , _pitlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitlParent'
+--
+-- * 'pitlXgafv'
+--
+-- * 'pitlUploadProtocol'
+--
+-- * 'pitlAccessToken'
+--
+-- * 'pitlUploadType'
+--
+-- * 'pitlView'
+--
+-- * 'pitlPageToken'
+--
+-- * 'pitlPageSize'
+--
+-- * 'pitlCallback'
+projectsInstancesTablesList
+    :: Text -- ^ 'pitlParent'
+    -> ProjectsInstancesTablesList
+projectsInstancesTablesList pPitlParent_ =
+    ProjectsInstancesTablesList'
+    { _pitlParent = pPitlParent_
+    , _pitlXgafv = Nothing
+    , _pitlUploadProtocol = Nothing
+    , _pitlAccessToken = Nothing
+    , _pitlUploadType = Nothing
+    , _pitlView = Nothing
+    , _pitlPageToken = Nothing
+    , _pitlPageSize = Nothing
+    , _pitlCallback = Nothing
+    }
+
+-- | The unique name of the instance for which tables should be listed.
+-- Values are of the form \`projects\/\/instances\/\`.
+pitlParent :: Lens' ProjectsInstancesTablesList Text
+pitlParent
+  = lens _pitlParent (\ s a -> s{_pitlParent = a})
+
+-- | V1 error format.
+pitlXgafv :: Lens' ProjectsInstancesTablesList (Maybe Xgafv)
+pitlXgafv
+  = lens _pitlXgafv (\ s a -> s{_pitlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitlUploadProtocol :: Lens' ProjectsInstancesTablesList (Maybe Text)
+pitlUploadProtocol
+  = lens _pitlUploadProtocol
+      (\ s a -> s{_pitlUploadProtocol = a})
+
+-- | OAuth access token.
+pitlAccessToken :: Lens' ProjectsInstancesTablesList (Maybe Text)
+pitlAccessToken
+  = lens _pitlAccessToken
+      (\ s a -> s{_pitlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitlUploadType :: Lens' ProjectsInstancesTablesList (Maybe Text)
+pitlUploadType
+  = lens _pitlUploadType
+      (\ s a -> s{_pitlUploadType = a})
+
+-- | The view to be applied to the returned tables\' fields. Defaults to
+-- \`NAME_ONLY\` if unspecified; no others are currently supported.
+pitlView :: Lens' ProjectsInstancesTablesList (Maybe Text)
+pitlView = lens _pitlView (\ s a -> s{_pitlView = a})
+
+-- | The value of \`next_page_token\` returned by a previous call.
+pitlPageToken :: Lens' ProjectsInstancesTablesList (Maybe Text)
+pitlPageToken
+  = lens _pitlPageToken
+      (\ s a -> s{_pitlPageToken = a})
+
+-- | Maximum number of results per page. CURRENTLY UNIMPLEMENTED AND IGNORED.
+pitlPageSize :: Lens' ProjectsInstancesTablesList (Maybe Int32)
+pitlPageSize
+  = lens _pitlPageSize (\ s a -> s{_pitlPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+pitlCallback :: Lens' ProjectsInstancesTablesList (Maybe Text)
+pitlCallback
+  = lens _pitlCallback (\ s a -> s{_pitlCallback = a})
+
+instance GoogleRequest ProjectsInstancesTablesList
+         where
+        type Rs ProjectsInstancesTablesList =
+             ListTablesResponse
+        type Scopes ProjectsInstancesTablesList =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform",
+               "https://www.googleapis.com/auth/cloud-platform.read-only"]
+        requestClient ProjectsInstancesTablesList'{..}
+          = go _pitlParent _pitlXgafv _pitlUploadProtocol
+              _pitlAccessToken
+              _pitlUploadType
+              _pitlView
+              _pitlPageToken
+              _pitlPageSize
+              _pitlCallback
+              (Just AltJSON)
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesTablesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/ModifyColumnFamilies.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/ModifyColumnFamilies.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Tables/ModifyColumnFamilies.hs
@@ -0,0 +1,182 @@
+{-# 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.BigtableAdmin.Projects.Instances.Tables.ModifyColumnFamilies
+-- 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)
+--
+-- Performs a series of column family modifications on the specified table.
+-- Either all or none of the modifications will occur before this method
+-- returns, but data requests received prior to that point may see a table
+-- where only some modifications have taken effect.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.tables.modifyColumnFamilies@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.ModifyColumnFamilies
+    (
+    -- * REST Resource
+      ProjectsInstancesTablesModifyColumnFamiliesResource
+
+    -- * Creating a Request
+    , projectsInstancesTablesModifyColumnFamilies
+    , ProjectsInstancesTablesModifyColumnFamilies
+
+    -- * Request Lenses
+    , pitmcfXgafv
+    , pitmcfUploadProtocol
+    , pitmcfAccessToken
+    , pitmcfUploadType
+    , pitmcfPayload
+    , pitmcfName
+    , pitmcfCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.tables.modifyColumnFamilies@ method which the
+-- 'ProjectsInstancesTablesModifyColumnFamilies' request conforms to.
+type ProjectsInstancesTablesModifyColumnFamiliesResource
+     =
+     "v2" :>
+       CaptureMode "name" "modifyColumnFamilies" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ModifyColumnFamiliesRequest :>
+                       Post '[JSON] Table
+
+-- | Performs a series of column family modifications on the specified table.
+-- Either all or none of the modifications will occur before this method
+-- returns, but data requests received prior to that point may see a table
+-- where only some modifications have taken effect.
+--
+-- /See:/ 'projectsInstancesTablesModifyColumnFamilies' smart constructor.
+data ProjectsInstancesTablesModifyColumnFamilies = ProjectsInstancesTablesModifyColumnFamilies'
+    { _pitmcfXgafv          :: !(Maybe Xgafv)
+    , _pitmcfUploadProtocol :: !(Maybe Text)
+    , _pitmcfAccessToken    :: !(Maybe Text)
+    , _pitmcfUploadType     :: !(Maybe Text)
+    , _pitmcfPayload        :: !ModifyColumnFamiliesRequest
+    , _pitmcfName           :: !Text
+    , _pitmcfCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTablesModifyColumnFamilies' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitmcfXgafv'
+--
+-- * 'pitmcfUploadProtocol'
+--
+-- * 'pitmcfAccessToken'
+--
+-- * 'pitmcfUploadType'
+--
+-- * 'pitmcfPayload'
+--
+-- * 'pitmcfName'
+--
+-- * 'pitmcfCallback'
+projectsInstancesTablesModifyColumnFamilies
+    :: ModifyColumnFamiliesRequest -- ^ 'pitmcfPayload'
+    -> Text -- ^ 'pitmcfName'
+    -> ProjectsInstancesTablesModifyColumnFamilies
+projectsInstancesTablesModifyColumnFamilies pPitmcfPayload_ pPitmcfName_ =
+    ProjectsInstancesTablesModifyColumnFamilies'
+    { _pitmcfXgafv = Nothing
+    , _pitmcfUploadProtocol = Nothing
+    , _pitmcfAccessToken = Nothing
+    , _pitmcfUploadType = Nothing
+    , _pitmcfPayload = pPitmcfPayload_
+    , _pitmcfName = pPitmcfName_
+    , _pitmcfCallback = Nothing
+    }
+
+-- | V1 error format.
+pitmcfXgafv :: Lens' ProjectsInstancesTablesModifyColumnFamilies (Maybe Xgafv)
+pitmcfXgafv
+  = lens _pitmcfXgafv (\ s a -> s{_pitmcfXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitmcfUploadProtocol :: Lens' ProjectsInstancesTablesModifyColumnFamilies (Maybe Text)
+pitmcfUploadProtocol
+  = lens _pitmcfUploadProtocol
+      (\ s a -> s{_pitmcfUploadProtocol = a})
+
+-- | OAuth access token.
+pitmcfAccessToken :: Lens' ProjectsInstancesTablesModifyColumnFamilies (Maybe Text)
+pitmcfAccessToken
+  = lens _pitmcfAccessToken
+      (\ s a -> s{_pitmcfAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitmcfUploadType :: Lens' ProjectsInstancesTablesModifyColumnFamilies (Maybe Text)
+pitmcfUploadType
+  = lens _pitmcfUploadType
+      (\ s a -> s{_pitmcfUploadType = a})
+
+-- | Multipart request metadata.
+pitmcfPayload :: Lens' ProjectsInstancesTablesModifyColumnFamilies ModifyColumnFamiliesRequest
+pitmcfPayload
+  = lens _pitmcfPayload
+      (\ s a -> s{_pitmcfPayload = a})
+
+-- | The unique name of the table whose families should be modified. Values
+-- are of the form \`projects\/\/instances\/\/tables\/
+-- \`.
+pitmcfName :: Lens' ProjectsInstancesTablesModifyColumnFamilies Text
+pitmcfName
+  = lens _pitmcfName (\ s a -> s{_pitmcfName = a})
+
+-- | JSONP
+pitmcfCallback :: Lens' ProjectsInstancesTablesModifyColumnFamilies (Maybe Text)
+pitmcfCallback
+  = lens _pitmcfCallback
+      (\ s a -> s{_pitmcfCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesTablesModifyColumnFamilies where
+        type Rs ProjectsInstancesTablesModifyColumnFamilies =
+             Table
+        type Scopes
+               ProjectsInstancesTablesModifyColumnFamilies
+             =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.table",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsInstancesTablesModifyColumnFamilies'{..}
+          = go _pitmcfName _pitmcfXgafv _pitmcfUploadProtocol
+              _pitmcfAccessToken
+              _pitmcfUploadType
+              _pitmcfCallback
+              (Just AltJSON)
+              _pitmcfPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsInstancesTablesModifyColumnFamiliesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/TestIAMPermissions.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/TestIAMPermissions.hs
@@ -0,0 +1,175 @@
+{-# 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.BigtableAdmin.Projects.Instances.TestIAMPermissions
+-- 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)
+--
+-- Returns permissions that the caller has on the specified instance
+-- resource.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.testIamPermissions@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsInstancesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsInstancesTestIAMPermissions
+    , ProjectsInstancesTestIAMPermissions
+
+    -- * Request Lenses
+    , pitipXgafv
+    , pitipUploadProtocol
+    , pitipAccessToken
+    , pitipUploadType
+    , pitipPayload
+    , pitipResource
+    , pitipCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.testIamPermissions@ method which the
+-- 'ProjectsInstancesTestIAMPermissions' request conforms to.
+type ProjectsInstancesTestIAMPermissionsResource =
+     "v2" :>
+       CaptureMode "resource" "testIamPermissions" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TestIAMPermissionsRequest :>
+                       Post '[JSON] TestIAMPermissionsResponse
+
+-- | Returns permissions that the caller has on the specified instance
+-- resource.
+--
+-- /See:/ 'projectsInstancesTestIAMPermissions' smart constructor.
+data ProjectsInstancesTestIAMPermissions = ProjectsInstancesTestIAMPermissions'
+    { _pitipXgafv          :: !(Maybe Xgafv)
+    , _pitipUploadProtocol :: !(Maybe Text)
+    , _pitipAccessToken    :: !(Maybe Text)
+    , _pitipUploadType     :: !(Maybe Text)
+    , _pitipPayload        :: !TestIAMPermissionsRequest
+    , _pitipResource       :: !Text
+    , _pitipCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pitipXgafv'
+--
+-- * 'pitipUploadProtocol'
+--
+-- * 'pitipAccessToken'
+--
+-- * 'pitipUploadType'
+--
+-- * 'pitipPayload'
+--
+-- * 'pitipResource'
+--
+-- * 'pitipCallback'
+projectsInstancesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'pitipPayload'
+    -> Text -- ^ 'pitipResource'
+    -> ProjectsInstancesTestIAMPermissions
+projectsInstancesTestIAMPermissions pPitipPayload_ pPitipResource_ =
+    ProjectsInstancesTestIAMPermissions'
+    { _pitipXgafv = Nothing
+    , _pitipUploadProtocol = Nothing
+    , _pitipAccessToken = Nothing
+    , _pitipUploadType = Nothing
+    , _pitipPayload = pPitipPayload_
+    , _pitipResource = pPitipResource_
+    , _pitipCallback = Nothing
+    }
+
+-- | V1 error format.
+pitipXgafv :: Lens' ProjectsInstancesTestIAMPermissions (Maybe Xgafv)
+pitipXgafv
+  = lens _pitipXgafv (\ s a -> s{_pitipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pitipUploadProtocol :: Lens' ProjectsInstancesTestIAMPermissions (Maybe Text)
+pitipUploadProtocol
+  = lens _pitipUploadProtocol
+      (\ s a -> s{_pitipUploadProtocol = a})
+
+-- | OAuth access token.
+pitipAccessToken :: Lens' ProjectsInstancesTestIAMPermissions (Maybe Text)
+pitipAccessToken
+  = lens _pitipAccessToken
+      (\ s a -> s{_pitipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pitipUploadType :: Lens' ProjectsInstancesTestIAMPermissions (Maybe Text)
+pitipUploadType
+  = lens _pitipUploadType
+      (\ s a -> s{_pitipUploadType = a})
+
+-- | Multipart request metadata.
+pitipPayload :: Lens' ProjectsInstancesTestIAMPermissions TestIAMPermissionsRequest
+pitipPayload
+  = lens _pitipPayload (\ s a -> s{_pitipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+pitipResource :: Lens' ProjectsInstancesTestIAMPermissions Text
+pitipResource
+  = lens _pitipResource
+      (\ s a -> s{_pitipResource = a})
+
+-- | JSONP
+pitipCallback :: Lens' ProjectsInstancesTestIAMPermissions (Maybe Text)
+pitipCallback
+  = lens _pitipCallback
+      (\ s a -> s{_pitipCallback = a})
+
+instance GoogleRequest
+         ProjectsInstancesTestIAMPermissions where
+        type Rs ProjectsInstancesTestIAMPermissions =
+             TestIAMPermissionsResponse
+        type Scopes ProjectsInstancesTestIAMPermissions =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsInstancesTestIAMPermissions'{..}
+          = go _pitipResource _pitipXgafv _pitipUploadProtocol
+              _pitipAccessToken
+              _pitipUploadType
+              _pitipCallback
+              (Just AltJSON)
+              _pitipPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsInstancesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Update.hs b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/BigtableAdmin/Projects/Instances/Update.hs
@@ -0,0 +1,167 @@
+{-# 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.BigtableAdmin.Projects.Instances.Update
+-- 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)
+--
+-- Updates an instance within a project. This method updates only the
+-- display name and type for an Instance. To update other Instance
+-- properties, such as labels, use PartialUpdateInstance.
+--
+-- /See:/ <https://cloud.google.com/bigtable/ Cloud Bigtable Admin API Reference> for @bigtableadmin.projects.instances.update@.
+module Network.Google.Resource.BigtableAdmin.Projects.Instances.Update
+    (
+    -- * REST Resource
+      ProjectsInstancesUpdateResource
+
+    -- * Creating a Request
+    , projectsInstancesUpdate
+    , ProjectsInstancesUpdate
+
+    -- * Request Lenses
+    , piuXgafv
+    , piuUploadProtocol
+    , piuAccessToken
+    , piuUploadType
+    , piuPayload
+    , piuName
+    , piuCallback
+    ) where
+
+import           Network.Google.BigtableAdmin.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @bigtableadmin.projects.instances.update@ method which the
+-- 'ProjectsInstancesUpdate' request conforms to.
+type ProjectsInstancesUpdateResource =
+     "v2" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Instance :> Put '[JSON] Instance
+
+-- | Updates an instance within a project. This method updates only the
+-- display name and type for an Instance. To update other Instance
+-- properties, such as labels, use PartialUpdateInstance.
+--
+-- /See:/ 'projectsInstancesUpdate' smart constructor.
+data ProjectsInstancesUpdate = ProjectsInstancesUpdate'
+    { _piuXgafv          :: !(Maybe Xgafv)
+    , _piuUploadProtocol :: !(Maybe Text)
+    , _piuAccessToken    :: !(Maybe Text)
+    , _piuUploadType     :: !(Maybe Text)
+    , _piuPayload        :: !Instance
+    , _piuName           :: !Text
+    , _piuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsInstancesUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'piuXgafv'
+--
+-- * 'piuUploadProtocol'
+--
+-- * 'piuAccessToken'
+--
+-- * 'piuUploadType'
+--
+-- * 'piuPayload'
+--
+-- * 'piuName'
+--
+-- * 'piuCallback'
+projectsInstancesUpdate
+    :: Instance -- ^ 'piuPayload'
+    -> Text -- ^ 'piuName'
+    -> ProjectsInstancesUpdate
+projectsInstancesUpdate pPiuPayload_ pPiuName_ =
+    ProjectsInstancesUpdate'
+    { _piuXgafv = Nothing
+    , _piuUploadProtocol = Nothing
+    , _piuAccessToken = Nothing
+    , _piuUploadType = Nothing
+    , _piuPayload = pPiuPayload_
+    , _piuName = pPiuName_
+    , _piuCallback = Nothing
+    }
+
+-- | V1 error format.
+piuXgafv :: Lens' ProjectsInstancesUpdate (Maybe Xgafv)
+piuXgafv = lens _piuXgafv (\ s a -> s{_piuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+piuUploadProtocol :: Lens' ProjectsInstancesUpdate (Maybe Text)
+piuUploadProtocol
+  = lens _piuUploadProtocol
+      (\ s a -> s{_piuUploadProtocol = a})
+
+-- | OAuth access token.
+piuAccessToken :: Lens' ProjectsInstancesUpdate (Maybe Text)
+piuAccessToken
+  = lens _piuAccessToken
+      (\ s a -> s{_piuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+piuUploadType :: Lens' ProjectsInstancesUpdate (Maybe Text)
+piuUploadType
+  = lens _piuUploadType
+      (\ s a -> s{_piuUploadType = a})
+
+-- | Multipart request metadata.
+piuPayload :: Lens' ProjectsInstancesUpdate Instance
+piuPayload
+  = lens _piuPayload (\ s a -> s{_piuPayload = a})
+
+-- | (\`OutputOnly\`) The unique name of the instance. Values are of the form
+-- \`projects\/\/instances\/a-z+[a-z0-9]\`.
+piuName :: Lens' ProjectsInstancesUpdate Text
+piuName = lens _piuName (\ s a -> s{_piuName = a})
+
+-- | JSONP
+piuCallback :: Lens' ProjectsInstancesUpdate (Maybe Text)
+piuCallback
+  = lens _piuCallback (\ s a -> s{_piuCallback = a})
+
+instance GoogleRequest ProjectsInstancesUpdate where
+        type Rs ProjectsInstancesUpdate = Instance
+        type Scopes ProjectsInstancesUpdate =
+             '["https://www.googleapis.com/auth/bigtable.admin",
+               "https://www.googleapis.com/auth/bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/bigtable.admin.instance",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin",
+               "https://www.googleapis.com/auth/cloud-bigtable.admin.cluster",
+               "https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsInstancesUpdate'{..}
+          = go _piuName _piuXgafv _piuUploadProtocol
+              _piuAccessToken
+              _piuUploadType
+              _piuCallback
+              (Just AltJSON)
+              _piuPayload
+              bigtableAdminService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsInstancesUpdateResource)
+                      mempty
diff --git a/gogol-bigtableadmin.cabal b/gogol-bigtableadmin.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-bigtableadmin.cabal
@@ -0,0 +1,76 @@
+name:                  gogol-bigtableadmin
+version:               0.4.0
+synopsis:              Google Cloud Bigtable Admin SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015-2016 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md src/.gitkeep
+
+description:
+
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @v2@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.BigtableAdmin
+        , Network.Google.BigtableAdmin.Types
+        , Network.Google.Resource.BigtableAdmin.Operations.Cancel
+        , Network.Google.Resource.BigtableAdmin.Operations.Delete
+        , Network.Google.Resource.BigtableAdmin.Operations.Get
+        , Network.Google.Resource.BigtableAdmin.Operations.Projects.Operations.List
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Create
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Delete
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Get
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.List
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.AppProFiles.Patch
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Create
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Delete
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Get
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.List
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Clusters.Update
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Create
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Delete
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Get
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.GetIAMPolicy
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.List
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.PartialUpdateInstance
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.SetIAMPolicy
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.CheckConsistency
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Create
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Delete
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.DropRowRange
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.GenerateConsistencyToken
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.Get
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.List
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Tables.ModifyColumnFamilies
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.TestIAMPermissions
+        , Network.Google.Resource.BigtableAdmin.Projects.Instances.Update
+
+    other-modules:
+          Network.Google.BigtableAdmin.Types.Product
+        , Network.Google.BigtableAdmin.Types.Sum
+
+    build-depends:
+          gogol-core == 0.4.0.*
+        , base       >= 4.7 && < 5
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
