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-datafusion
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.5.0`
+
+
+## Description
+
+A client library for the Google Cloud Data Fusion.
+
+
+## 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-datafusion` 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/DataFusion.hs b/gen/Network/Google/DataFusion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DataFusion.hs
@@ -0,0 +1,400 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.DataFusion
+-- 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)
+--
+-- Cloud Data Fusion is a fully-managed, cloud native, enterprise data
+-- integration service for quickly building and managing data pipelines. It
+-- provides a graphical interface to increase time efficiency and reduce
+-- complexity, and allows business users, developers, and data scientists
+-- to easily and reliably build scalable data integration solutions to
+-- cleanse, prepare, blend, transfer and transform data without having to
+-- wrestle with infrastructure.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference>
+module Network.Google.DataFusion
+    (
+    -- * Service Configuration
+      dataFusionService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * API Declaration
+    , DataFusionAPI
+
+    -- * Resources
+
+    -- ** datafusion.projects.locations.get
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Get
+
+    -- ** datafusion.projects.locations.instances.create
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Create
+
+    -- ** datafusion.projects.locations.instances.delete
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Delete
+
+    -- ** datafusion.projects.locations.instances.get
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Get
+
+    -- ** datafusion.projects.locations.instances.getIamPolicy
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.GetIAMPolicy
+
+    -- ** datafusion.projects.locations.instances.list
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.List
+
+    -- ** datafusion.projects.locations.instances.patch
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Patch
+
+    -- ** datafusion.projects.locations.instances.restart
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Restart
+
+    -- ** datafusion.projects.locations.instances.setIamPolicy
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.SetIAMPolicy
+
+    -- ** datafusion.projects.locations.instances.testIamPermissions
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.TestIAMPermissions
+
+    -- ** datafusion.projects.locations.instances.upgrade
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Upgrade
+
+    -- ** datafusion.projects.locations.list
+    , module Network.Google.Resource.DataFusion.Projects.Locations.List
+
+    -- ** datafusion.projects.locations.operations.cancel
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Operations.Cancel
+
+    -- ** datafusion.projects.locations.operations.delete
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Operations.Delete
+
+    -- ** datafusion.projects.locations.operations.get
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Operations.Get
+
+    -- ** datafusion.projects.locations.operations.list
+    , module Network.Google.Resource.DataFusion.Projects.Locations.Operations.List
+
+    -- * Types
+
+    -- ** InstanceLabels
+    , InstanceLabels
+    , instanceLabels
+    , ilAddtional
+
+    -- ** Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- ** OperationSchema
+    , OperationSchema
+    , operationSchema
+    , osAddtional
+
+    -- ** CounterOptions
+    , CounterOptions
+    , counterOptions
+    , coField
+    , coMetric
+
+    -- ** AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+    , acExemptedMembers
+
+    -- ** CloudAuditOptionsLogName
+    , CloudAuditOptionsLogName (..)
+
+    -- ** Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- ** ListLocationsResponse
+    , ListLocationsResponse
+    , listLocationsResponse
+    , llrNextPageToken
+    , llrLocations
+
+    -- ** ListOperationsResponse
+    , ListOperationsResponse
+    , listOperationsResponse
+    , lorNextPageToken
+    , lorOperations
+
+    -- ** CancelOperationRequest
+    , CancelOperationRequest
+    , cancelOperationRequest
+
+    -- ** ConditionSys
+    , ConditionSys (..)
+
+    -- ** Location
+    , Location
+    , location
+    , lName
+    , lMetadata
+    , lDisplayName
+    , lLabels
+    , lLocationId
+
+    -- ** Operation
+    , Operation
+    , operation
+    , oDone
+    , oError
+    , oResponse
+    , oName
+    , oMetadata
+
+    -- ** Empty
+    , Empty
+    , empty
+
+    -- ** RuleAction
+    , RuleAction (..)
+
+    -- ** StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- ** Rule
+    , Rule
+    , rule
+    , rAction
+    , rIn
+    , rNotIn
+    , rConditions
+    , rPermissions
+    , rLogConfig
+    , rDescription
+
+    -- ** SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
+    -- ** InstanceType
+    , InstanceType (..)
+
+    -- ** NetworkConfig
+    , NetworkConfig
+    , networkConfig
+    , ncNetwork
+    , ncIPAllocation
+
+    -- ** CloudAuditOptions
+    , CloudAuditOptions
+    , cloudAuditOptions
+    , caoAuthorizationLoggingOptions
+    , caoLogName
+
+    -- ** ConditionOp
+    , ConditionOp (..)
+
+    -- ** DataAccessOptions
+    , DataAccessOptions
+    , dataAccessOptions
+    , daoLogMode
+
+    -- ** RestartInstanceRequest
+    , RestartInstanceRequest
+    , restartInstanceRequest
+
+    -- ** AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- ** TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- ** UpgradeInstanceRequest
+    , UpgradeInstanceRequest
+    , upgradeInstanceRequest
+
+    -- ** AuthorizationLoggingOptions
+    , AuthorizationLoggingOptions
+    , authorizationLoggingOptions
+    , aloPermissionType
+
+    -- ** Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pRules
+    , pVersion
+    , pBindings
+    , pIAMOwned
+
+    -- ** LocationLabels
+    , LocationLabels
+    , locationLabels
+    , llAddtional
+
+    -- ** LocationMetadata
+    , LocationMetadata
+    , locationMetadata
+    , lmAddtional
+
+    -- ** OperationMetadata
+    , OperationMetadata
+    , operationMetadata
+    , omAPIVersion
+    , omRequestedCancellation
+    , omEndTime
+    , omStatusDetail
+    , omVerb
+    , omTarget
+    , omCreateTime
+
+    -- ** DataAccessOptionsLogMode
+    , DataAccessOptionsLogMode (..)
+
+    -- ** AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- ** ListInstancesResponse
+    , ListInstancesResponse
+    , listInstancesResponse
+    , lirNextPageToken
+    , lirUnreachable
+    , lirInstances
+
+    -- ** AuthorizationLoggingOptionsPermissionType
+    , AuthorizationLoggingOptionsPermissionType (..)
+
+    -- ** Condition
+    , Condition
+    , condition
+    , cOp
+    , cIAM
+    , cValues
+    , cSys
+    , cSvc
+
+    -- ** InstanceState
+    , InstanceState (..)
+
+    -- ** ConditionIAM
+    , ConditionIAM (..)
+
+    -- ** OperationResponse
+    , OperationResponse
+    , operationResponse
+    , orAddtional
+
+    -- ** LogConfig
+    , LogConfig
+    , logConfig
+    , lcCloudAudit
+    , lcDataAccess
+    , lcCounter
+
+    -- ** InstanceOptions
+    , InstanceOptions
+    , instanceOptions
+    , ioAddtional
+
+    -- ** Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , iStateMessage
+    , iState
+    , iEnableStackdriverLogging
+    , iServiceEndpoint
+    , iZone
+    , iServiceAccount
+    , iNetworkConfig
+    , iUpdateTime
+    , iPrivateInstance
+    , iName
+    , iVersion
+    , iDisplayName
+    , iEnableStackdriverMonitoring
+    , iLabels
+    , iOptions
+    , iType
+    , iDescription
+    , iCreateTime
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.DataFusion.Projects.Locations.Get
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.Create
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.Delete
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.Get
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.GetIAMPolicy
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.List
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.Patch
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.Restart
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.SetIAMPolicy
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.TestIAMPermissions
+import           Network.Google.Resource.DataFusion.Projects.Locations.Instances.Upgrade
+import           Network.Google.Resource.DataFusion.Projects.Locations.List
+import           Network.Google.Resource.DataFusion.Projects.Locations.Operations.Cancel
+import           Network.Google.Resource.DataFusion.Projects.Locations.Operations.Delete
+import           Network.Google.Resource.DataFusion.Projects.Locations.Operations.Get
+import           Network.Google.Resource.DataFusion.Projects.Locations.Operations.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Cloud Data Fusion API service.
+type DataFusionAPI =
+     ProjectsLocationsInstancesListResource :<|>
+       ProjectsLocationsInstancesUpgradeResource
+       :<|> ProjectsLocationsInstancesGetIAMPolicyResource
+       :<|> ProjectsLocationsInstancesPatchResource
+       :<|> ProjectsLocationsInstancesGetResource
+       :<|> ProjectsLocationsInstancesCreateResource
+       :<|> ProjectsLocationsInstancesSetIAMPolicyResource
+       :<|> ProjectsLocationsInstancesRestartResource
+       :<|>
+       ProjectsLocationsInstancesTestIAMPermissionsResource
+       :<|> ProjectsLocationsInstancesDeleteResource
+       :<|> ProjectsLocationsOperationsListResource
+       :<|> ProjectsLocationsOperationsGetResource
+       :<|> ProjectsLocationsOperationsCancelResource
+       :<|> ProjectsLocationsOperationsDeleteResource
+       :<|> ProjectsLocationsListResource
+       :<|> ProjectsLocationsGetResource
diff --git a/gen/Network/Google/DataFusion/Types.hs b/gen/Network/Google/DataFusion/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DataFusion/Types.hs
@@ -0,0 +1,308 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.DataFusion.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.DataFusion.Types
+    (
+    -- * Service Configuration
+      dataFusionService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * InstanceLabels
+    , InstanceLabels
+    , instanceLabels
+    , ilAddtional
+
+    -- * Status
+    , Status
+    , status
+    , sDetails
+    , sCode
+    , sMessage
+
+    -- * OperationSchema
+    , OperationSchema
+    , operationSchema
+    , osAddtional
+
+    -- * CounterOptions
+    , CounterOptions
+    , counterOptions
+    , coField
+    , coMetric
+
+    -- * AuditConfig
+    , AuditConfig
+    , auditConfig
+    , acService
+    , acAuditLogConfigs
+    , acExemptedMembers
+
+    -- * CloudAuditOptionsLogName
+    , CloudAuditOptionsLogName (..)
+
+    -- * Expr
+    , Expr
+    , expr
+    , eLocation
+    , eExpression
+    , eTitle
+    , eDescription
+
+    -- * ListLocationsResponse
+    , ListLocationsResponse
+    , listLocationsResponse
+    , llrNextPageToken
+    , llrLocations
+
+    -- * ListOperationsResponse
+    , ListOperationsResponse
+    , listOperationsResponse
+    , lorNextPageToken
+    , lorOperations
+
+    -- * CancelOperationRequest
+    , CancelOperationRequest
+    , cancelOperationRequest
+
+    -- * ConditionSys
+    , ConditionSys (..)
+
+    -- * Location
+    , Location
+    , location
+    , lName
+    , lMetadata
+    , lDisplayName
+    , lLabels
+    , lLocationId
+
+    -- * Operation
+    , Operation
+    , operation
+    , oDone
+    , oError
+    , oResponse
+    , oName
+    , oMetadata
+
+    -- * Empty
+    , Empty
+    , empty
+
+    -- * RuleAction
+    , RuleAction (..)
+
+    -- * StatusDetailsItem
+    , StatusDetailsItem
+    , statusDetailsItem
+    , sdiAddtional
+
+    -- * Rule
+    , Rule
+    , rule
+    , rAction
+    , rIn
+    , rNotIn
+    , rConditions
+    , rPermissions
+    , rLogConfig
+    , rDescription
+
+    -- * SetIAMPolicyRequest
+    , SetIAMPolicyRequest
+    , setIAMPolicyRequest
+    , siprUpdateMask
+    , siprPolicy
+
+    -- * InstanceType
+    , InstanceType (..)
+
+    -- * NetworkConfig
+    , NetworkConfig
+    , networkConfig
+    , ncNetwork
+    , ncIPAllocation
+
+    -- * CloudAuditOptions
+    , CloudAuditOptions
+    , cloudAuditOptions
+    , caoAuthorizationLoggingOptions
+    , caoLogName
+
+    -- * ConditionOp
+    , ConditionOp (..)
+
+    -- * DataAccessOptions
+    , DataAccessOptions
+    , dataAccessOptions
+    , daoLogMode
+
+    -- * RestartInstanceRequest
+    , RestartInstanceRequest
+    , restartInstanceRequest
+
+    -- * AuditLogConfigLogType
+    , AuditLogConfigLogType (..)
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * TestIAMPermissionsRequest
+    , TestIAMPermissionsRequest
+    , testIAMPermissionsRequest
+    , tiprPermissions
+
+    -- * TestIAMPermissionsResponse
+    , TestIAMPermissionsResponse
+    , testIAMPermissionsResponse
+    , tiamprPermissions
+
+    -- * UpgradeInstanceRequest
+    , UpgradeInstanceRequest
+    , upgradeInstanceRequest
+
+    -- * AuthorizationLoggingOptions
+    , AuthorizationLoggingOptions
+    , authorizationLoggingOptions
+    , aloPermissionType
+
+    -- * Policy
+    , Policy
+    , policy
+    , pAuditConfigs
+    , pEtag
+    , pRules
+    , pVersion
+    , pBindings
+    , pIAMOwned
+
+    -- * LocationLabels
+    , LocationLabels
+    , locationLabels
+    , llAddtional
+
+    -- * LocationMetadata
+    , LocationMetadata
+    , locationMetadata
+    , lmAddtional
+
+    -- * OperationMetadata
+    , OperationMetadata
+    , operationMetadata
+    , omAPIVersion
+    , omRequestedCancellation
+    , omEndTime
+    , omStatusDetail
+    , omVerb
+    , omTarget
+    , omCreateTime
+
+    -- * DataAccessOptionsLogMode
+    , DataAccessOptionsLogMode (..)
+
+    -- * AuditLogConfig
+    , AuditLogConfig
+    , auditLogConfig
+    , alcLogType
+    , alcExemptedMembers
+
+    -- * ListInstancesResponse
+    , ListInstancesResponse
+    , listInstancesResponse
+    , lirNextPageToken
+    , lirUnreachable
+    , lirInstances
+
+    -- * AuthorizationLoggingOptionsPermissionType
+    , AuthorizationLoggingOptionsPermissionType (..)
+
+    -- * Condition
+    , Condition
+    , condition
+    , cOp
+    , cIAM
+    , cValues
+    , cSys
+    , cSvc
+
+    -- * InstanceState
+    , InstanceState (..)
+
+    -- * ConditionIAM
+    , ConditionIAM (..)
+
+    -- * OperationResponse
+    , OperationResponse
+    , operationResponse
+    , orAddtional
+
+    -- * LogConfig
+    , LogConfig
+    , logConfig
+    , lcCloudAudit
+    , lcDataAccess
+    , lcCounter
+
+    -- * InstanceOptions
+    , InstanceOptions
+    , instanceOptions
+    , ioAddtional
+
+    -- * Binding
+    , Binding
+    , binding
+    , bMembers
+    , bRole
+    , bCondition
+
+    -- * Instance
+    , Instance
+    , instance'
+    , iStateMessage
+    , iState
+    , iEnableStackdriverLogging
+    , iServiceEndpoint
+    , iZone
+    , iServiceAccount
+    , iNetworkConfig
+    , iUpdateTime
+    , iPrivateInstance
+    , iName
+    , iVersion
+    , iDisplayName
+    , iEnableStackdriverMonitoring
+    , iLabels
+    , iOptions
+    , iType
+    , iDescription
+    , iCreateTime
+    ) where
+
+import           Network.Google.DataFusion.Types.Product
+import           Network.Google.DataFusion.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1beta1' of the Cloud Data Fusion API. This contains the host and root path used as a starting point for constructing service requests.
+dataFusionService :: ServiceConfig
+dataFusionService
+  = defaultService (ServiceId "datafusion:v1beta1")
+      "datafusion.googleapis.com"
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
+cloudPlatformScope = Proxy
diff --git a/gen/Network/Google/DataFusion/Types/Product.hs b/gen/Network/Google/DataFusion/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DataFusion/Types/Product.hs
@@ -0,0 +1,2258 @@
+{-# 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.DataFusion.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.DataFusion.Types.Product where
+
+import           Network.Google.DataFusion.Types.Sum
+import           Network.Google.Prelude
+
+-- | The resource labels for instance to use to annotate any related
+-- underlying resources such as GCE VMs. The character \'=\' is not allowed
+-- to be used within the labels.
+--
+-- /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])
+
+-- | 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:/ 'operationSchema' smart constructor.
+newtype OperationSchema =
+  OperationSchema'
+    { _osAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'OperationSchema' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'osAddtional'
+operationSchema
+    :: HashMap Text JSONValue -- ^ 'osAddtional'
+    -> OperationSchema
+operationSchema pOsAddtional_ =
+  OperationSchema' {_osAddtional = _Coerce # pOsAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+osAddtional :: Lens' OperationSchema (HashMap Text JSONValue)
+osAddtional
+  = lens _osAddtional (\ s a -> s{_osAddtional = a}) .
+      _Coerce
+
+instance FromJSON OperationSchema where
+        parseJSON
+          = withObject "OperationSchema"
+              (\ o -> OperationSchema' <$> (parseJSONObject o))
+
+instance ToJSON OperationSchema where
+        toJSON = toJSON . _osAddtional
+
+-- | Increment a streamz counter with the specified metric and field names.
+-- Metric names should start with a \'\/\', generally be lowercase-only,
+-- and end in \"_count\". Field names should not contain an initial slash.
+-- The actual exported metric names will have \"\/iam\/policy\" prepended.
+-- Field names correspond to IAM request parameters and field values are
+-- their respective values. Supported field names: - \"authority\", which
+-- is \"[token]\" if IAMContext.token is present, otherwise the value of
+-- IAMContext.authority_selector if present, and otherwise a representation
+-- of IAMContext.principal; or - \"iam_principal\", a representation of
+-- IAMContext.principal even if a token or authority selector is present;
+-- or - \"\" (empty string), resulting in a counter with no fields.
+-- Examples: counter { metric: \"\/debug_access_count\" field:
+-- \"iam_principal\" } ==> increment counter
+-- \/iam\/policy\/backend_debug_access_count {iam_principal=[value of
+-- IAMContext.principal]} At this time we do not support multiple field
+-- names (though this may be supported in the future).
+--
+-- /See:/ 'counterOptions' smart constructor.
+data CounterOptions =
+  CounterOptions'
+    { _coField  :: !(Maybe Text)
+    , _coMetric :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CounterOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'coField'
+--
+-- * 'coMetric'
+counterOptions
+    :: CounterOptions
+counterOptions = CounterOptions' {_coField = Nothing, _coMetric = Nothing}
+
+
+-- | The field value to attribute.
+coField :: Lens' CounterOptions (Maybe Text)
+coField = lens _coField (\ s a -> s{_coField = a})
+
+-- | The metric to update.
+coMetric :: Lens' CounterOptions (Maybe Text)
+coMetric = lens _coMetric (\ s a -> s{_coMetric = a})
+
+instance FromJSON CounterOptions where
+        parseJSON
+          = withObject "CounterOptions"
+              (\ o ->
+                 CounterOptions' <$>
+                   (o .:? "field") <*> (o .:? "metric"))
+
+instance ToJSON CounterOptions where
+        toJSON CounterOptions'{..}
+          = object
+              (catMaybes
+                 [("field" .=) <$> _coField,
+                  ("metric" .=) <$> _coMetric])
+
+-- | 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])
+    , _acExemptedMembers :: !(Maybe [Text])
+    }
+  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'
+--
+-- * 'acExemptedMembers'
+auditConfig
+    :: AuditConfig
+auditConfig =
+  AuditConfig'
+    { _acService = Nothing
+    , _acAuditLogConfigs = Nothing
+    , _acExemptedMembers = 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
+
+acExemptedMembers :: Lens' AuditConfig [Text]
+acExemptedMembers
+  = lens _acExemptedMembers
+      (\ s a -> s{_acExemptedMembers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON AuditConfig where
+        parseJSON
+          = withObject "AuditConfig"
+              (\ o ->
+                 AuditConfig' <$>
+                   (o .:? "service") <*>
+                     (o .:? "auditLogConfigs" .!= mempty)
+                     <*> (o .:? "exemptedMembers" .!= mempty))
+
+instance ToJSON AuditConfig where
+        toJSON AuditConfig'{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _acService,
+                  ("auditLogConfigs" .=) <$> _acAuditLogConfigs,
+                  ("exemptedMembers" .=) <$> _acExemptedMembers])
+
+-- | 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 Locations.ListLocations.
+--
+-- /See:/ 'listLocationsResponse' smart constructor.
+data ListLocationsResponse =
+  ListLocationsResponse'
+    { _llrNextPageToken :: !(Maybe Text)
+    , _llrLocations     :: !(Maybe [Location])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListLocationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llrNextPageToken'
+--
+-- * 'llrLocations'
+listLocationsResponse
+    :: ListLocationsResponse
+listLocationsResponse =
+  ListLocationsResponse' {_llrNextPageToken = Nothing, _llrLocations = Nothing}
+
+
+-- | The standard List next-page token.
+llrNextPageToken :: Lens' ListLocationsResponse (Maybe Text)
+llrNextPageToken
+  = lens _llrNextPageToken
+      (\ s a -> s{_llrNextPageToken = a})
+
+-- | A list of locations that matches the specified filter in the request.
+llrLocations :: Lens' ListLocationsResponse [Location]
+llrLocations
+  = lens _llrLocations (\ s a -> s{_llrLocations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListLocationsResponse where
+        parseJSON
+          = withObject "ListLocationsResponse"
+              (\ o ->
+                 ListLocationsResponse' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "locations" .!= mempty))
+
+instance ToJSON ListLocationsResponse where
+        toJSON ListLocationsResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _llrNextPageToken,
+                  ("locations" .=) <$> _llrLocations])
+
+-- | 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])
+
+-- | The request message for Operations.CancelOperation.
+--
+-- /See:/ 'cancelOperationRequest' smart constructor.
+data CancelOperationRequest =
+  CancelOperationRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
+--
+cancelOperationRequest
+    :: CancelOperationRequest
+cancelOperationRequest = CancelOperationRequest'
+
+
+instance FromJSON CancelOperationRequest where
+        parseJSON
+          = withObject "CancelOperationRequest"
+              (\ o -> pure CancelOperationRequest')
+
+instance ToJSON CancelOperationRequest where
+        toJSON = const emptyObject
+
+-- | A resource that represents Google Cloud Platform location.
+--
+-- /See:/ 'location' smart constructor.
+data Location =
+  Location'
+    { _lName        :: !(Maybe Text)
+    , _lMetadata    :: !(Maybe LocationMetadata)
+    , _lDisplayName :: !(Maybe Text)
+    , _lLabels      :: !(Maybe LocationLabels)
+    , _lLocationId  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Location' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lName'
+--
+-- * 'lMetadata'
+--
+-- * 'lDisplayName'
+--
+-- * 'lLabels'
+--
+-- * 'lLocationId'
+location
+    :: Location
+location =
+  Location'
+    { _lName = Nothing
+    , _lMetadata = Nothing
+    , _lDisplayName = Nothing
+    , _lLabels = Nothing
+    , _lLocationId = Nothing
+    }
+
+
+-- | Resource name for the location, which may vary between implementations.
+-- For example: \`\"projects\/example-project\/locations\/us-east1\"\`
+lName :: Lens' Location (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+lMetadata :: Lens' Location (Maybe LocationMetadata)
+lMetadata
+  = lens _lMetadata (\ s a -> s{_lMetadata = a})
+
+-- | The friendly name for this location, typically a nearby city name. For
+-- example, \"Tokyo\".
+lDisplayName :: Lens' Location (Maybe Text)
+lDisplayName
+  = lens _lDisplayName (\ s a -> s{_lDisplayName = a})
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+lLabels :: Lens' Location (Maybe LocationLabels)
+lLabels = lens _lLabels (\ s a -> s{_lLabels = a})
+
+-- | The canonical id for this location. For example: \`\"us-east1\"\`.
+lLocationId :: Lens' Location (Maybe Text)
+lLocationId
+  = lens _lLocationId (\ s a -> s{_lLocationId = a})
+
+instance FromJSON Location where
+        parseJSON
+          = withObject "Location"
+              (\ o ->
+                 Location' <$>
+                   (o .:? "name") <*> (o .:? "metadata") <*>
+                     (o .:? "displayName")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "locationId"))
+
+instance ToJSON Location where
+        toJSON Location'{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _lName,
+                  ("metadata" .=) <$> _lMetadata,
+                  ("displayName" .=) <$> _lDisplayName,
+                  ("labels" .=) <$> _lLabels,
+                  ("locationId" .=) <$> _lLocationId])
+
+-- | 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 OperationSchema)
+    }
+  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 OperationSchema)
+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
+
+--
+-- /See:/ 'statusDetailsItem' smart constructor.
+newtype StatusDetailsItem =
+  StatusDetailsItem'
+    { _sdiAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StatusDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdiAddtional'
+statusDetailsItem
+    :: HashMap Text JSONValue -- ^ 'sdiAddtional'
+    -> StatusDetailsItem
+statusDetailsItem pSdiAddtional_ =
+  StatusDetailsItem' {_sdiAddtional = _Coerce # pSdiAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+sdiAddtional :: Lens' StatusDetailsItem (HashMap Text JSONValue)
+sdiAddtional
+  = lens _sdiAddtional (\ s a -> s{_sdiAddtional = a})
+      . _Coerce
+
+instance FromJSON StatusDetailsItem where
+        parseJSON
+          = withObject "StatusDetailsItem"
+              (\ o -> StatusDetailsItem' <$> (parseJSONObject o))
+
+instance ToJSON StatusDetailsItem where
+        toJSON = toJSON . _sdiAddtional
+
+-- | A rule to be applied in a Policy.
+--
+-- /See:/ 'rule' smart constructor.
+data Rule =
+  Rule'
+    { _rAction      :: !(Maybe RuleAction)
+    , _rIn          :: !(Maybe [Text])
+    , _rNotIn       :: !(Maybe [Text])
+    , _rConditions  :: !(Maybe [Condition])
+    , _rPermissions :: !(Maybe [Text])
+    , _rLogConfig   :: !(Maybe [LogConfig])
+    , _rDescription :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Rule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rAction'
+--
+-- * 'rIn'
+--
+-- * 'rNotIn'
+--
+-- * 'rConditions'
+--
+-- * 'rPermissions'
+--
+-- * 'rLogConfig'
+--
+-- * 'rDescription'
+rule
+    :: Rule
+rule =
+  Rule'
+    { _rAction = Nothing
+    , _rIn = Nothing
+    , _rNotIn = Nothing
+    , _rConditions = Nothing
+    , _rPermissions = Nothing
+    , _rLogConfig = Nothing
+    , _rDescription = Nothing
+    }
+
+
+-- | Required
+rAction :: Lens' Rule (Maybe RuleAction)
+rAction = lens _rAction (\ s a -> s{_rAction = a})
+
+-- | If one or more \'in\' clauses are specified, the rule matches if the
+-- PRINCIPAL\/AUTHORITY_SELECTOR is in at least one of these entries.
+rIn :: Lens' Rule [Text]
+rIn
+  = lens _rIn (\ s a -> s{_rIn = a}) . _Default .
+      _Coerce
+
+-- | If one or more \'not_in\' clauses are specified, the rule matches if the
+-- PRINCIPAL\/AUTHORITY_SELECTOR is in none of the entries. The format for
+-- in and not_in entries can be found at in the Local IAM documentation
+-- (see go\/local-iam#features).
+rNotIn :: Lens' Rule [Text]
+rNotIn
+  = lens _rNotIn (\ s a -> s{_rNotIn = a}) . _Default .
+      _Coerce
+
+-- | Additional restrictions that must be met. All conditions must pass for
+-- the rule to match.
+rConditions :: Lens' Rule [Condition]
+rConditions
+  = lens _rConditions (\ s a -> s{_rConditions = a}) .
+      _Default
+      . _Coerce
+
+-- | A permission is a string of form \'..\' (e.g.,
+-- \'storage.buckets.list\'). A value of \'*\' matches all permissions, and
+-- a verb part of \'*\' (e.g., \'storage.buckets.*\') matches all verbs.
+rPermissions :: Lens' Rule [Text]
+rPermissions
+  = lens _rPermissions (\ s a -> s{_rPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | The config returned to callers of tech.iam.IAM.CheckPolicy for any
+-- entries that match the LOG action.
+rLogConfig :: Lens' Rule [LogConfig]
+rLogConfig
+  = lens _rLogConfig (\ s a -> s{_rLogConfig = a}) .
+      _Default
+      . _Coerce
+
+-- | Human-readable description of the rule.
+rDescription :: Lens' Rule (Maybe Text)
+rDescription
+  = lens _rDescription (\ s a -> s{_rDescription = a})
+
+instance FromJSON Rule where
+        parseJSON
+          = withObject "Rule"
+              (\ o ->
+                 Rule' <$>
+                   (o .:? "action") <*> (o .:? "in" .!= mempty) <*>
+                     (o .:? "notIn" .!= mempty)
+                     <*> (o .:? "conditions" .!= mempty)
+                     <*> (o .:? "permissions" .!= mempty)
+                     <*> (o .:? "logConfig" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON Rule where
+        toJSON Rule'{..}
+          = object
+              (catMaybes
+                 [("action" .=) <$> _rAction, ("in" .=) <$> _rIn,
+                  ("notIn" .=) <$> _rNotIn,
+                  ("conditions" .=) <$> _rConditions,
+                  ("permissions" .=) <$> _rPermissions,
+                  ("logConfig" .=) <$> _rLogConfig,
+                  ("description" .=) <$> _rDescription])
+
+-- | 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])
+
+-- | Network configuration for a Data Fusion instance. These configurations
+-- are used for peering with the customer network. Configurations are
+-- optional when a public Data Fusion instance is to be created. However,
+-- providing these configurations allows several benefits, such as reduced
+-- network latency while accessing the customer resources from managed Data
+-- Fusion instance nodes, as well as access to the customer on-prem
+-- resources.
+--
+-- /See:/ 'networkConfig' smart constructor.
+data NetworkConfig =
+  NetworkConfig'
+    { _ncNetwork      :: !(Maybe Text)
+    , _ncIPAllocation :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NetworkConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncNetwork'
+--
+-- * 'ncIPAllocation'
+networkConfig
+    :: NetworkConfig
+networkConfig = NetworkConfig' {_ncNetwork = Nothing, _ncIPAllocation = Nothing}
+
+
+-- | Name of the network in the customer project with which the Tenant
+-- Project will be peered for executing pipelines.
+ncNetwork :: Lens' NetworkConfig (Maybe Text)
+ncNetwork
+  = lens _ncNetwork (\ s a -> s{_ncNetwork = a})
+
+-- | The IP range in CIDR notation to use for the managed Data Fusion
+-- instance nodes. This range must not overlap with any other ranges used
+-- in the Data Fusion instance network.
+ncIPAllocation :: Lens' NetworkConfig (Maybe Text)
+ncIPAllocation
+  = lens _ncIPAllocation
+      (\ s a -> s{_ncIPAllocation = a})
+
+instance FromJSON NetworkConfig where
+        parseJSON
+          = withObject "NetworkConfig"
+              (\ o ->
+                 NetworkConfig' <$>
+                   (o .:? "network") <*> (o .:? "ipAllocation"))
+
+instance ToJSON NetworkConfig where
+        toJSON NetworkConfig'{..}
+          = object
+              (catMaybes
+                 [("network" .=) <$> _ncNetwork,
+                  ("ipAllocation" .=) <$> _ncIPAllocation])
+
+-- | Write a Cloud Audit log
+--
+-- /See:/ 'cloudAuditOptions' smart constructor.
+data CloudAuditOptions =
+  CloudAuditOptions'
+    { _caoAuthorizationLoggingOptions :: !(Maybe AuthorizationLoggingOptions)
+    , _caoLogName                     :: !(Maybe CloudAuditOptionsLogName)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CloudAuditOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'caoAuthorizationLoggingOptions'
+--
+-- * 'caoLogName'
+cloudAuditOptions
+    :: CloudAuditOptions
+cloudAuditOptions =
+  CloudAuditOptions'
+    {_caoAuthorizationLoggingOptions = Nothing, _caoLogName = Nothing}
+
+
+-- | Information used by the Cloud Audit Logging pipeline.
+caoAuthorizationLoggingOptions :: Lens' CloudAuditOptions (Maybe AuthorizationLoggingOptions)
+caoAuthorizationLoggingOptions
+  = lens _caoAuthorizationLoggingOptions
+      (\ s a -> s{_caoAuthorizationLoggingOptions = a})
+
+-- | The log_name to populate in the Cloud Audit Record.
+caoLogName :: Lens' CloudAuditOptions (Maybe CloudAuditOptionsLogName)
+caoLogName
+  = lens _caoLogName (\ s a -> s{_caoLogName = a})
+
+instance FromJSON CloudAuditOptions where
+        parseJSON
+          = withObject "CloudAuditOptions"
+              (\ o ->
+                 CloudAuditOptions' <$>
+                   (o .:? "authorizationLoggingOptions") <*>
+                     (o .:? "logName"))
+
+instance ToJSON CloudAuditOptions where
+        toJSON CloudAuditOptions'{..}
+          = object
+              (catMaybes
+                 [("authorizationLoggingOptions" .=) <$>
+                    _caoAuthorizationLoggingOptions,
+                  ("logName" .=) <$> _caoLogName])
+
+-- | Write a Data Access (Gin) log
+--
+-- /See:/ 'dataAccessOptions' smart constructor.
+newtype DataAccessOptions =
+  DataAccessOptions'
+    { _daoLogMode :: Maybe DataAccessOptionsLogMode
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DataAccessOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daoLogMode'
+dataAccessOptions
+    :: DataAccessOptions
+dataAccessOptions = DataAccessOptions' {_daoLogMode = Nothing}
+
+
+-- | Whether Gin logging should happen in a fail-closed manner at the caller.
+-- This is relevant only in the LocalIAM implementation, for now.
+daoLogMode :: Lens' DataAccessOptions (Maybe DataAccessOptionsLogMode)
+daoLogMode
+  = lens _daoLogMode (\ s a -> s{_daoLogMode = a})
+
+instance FromJSON DataAccessOptions where
+        parseJSON
+          = withObject "DataAccessOptions"
+              (\ o -> DataAccessOptions' <$> (o .:? "logMode"))
+
+instance ToJSON DataAccessOptions where
+        toJSON DataAccessOptions'{..}
+          = object (catMaybes [("logMode" .=) <$> _daoLogMode])
+
+-- | Request message for restarting a Data Fusion instance.
+--
+-- /See:/ 'restartInstanceRequest' smart constructor.
+data RestartInstanceRequest =
+  RestartInstanceRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RestartInstanceRequest' with the minimum fields required to make a request.
+--
+restartInstanceRequest
+    :: RestartInstanceRequest
+restartInstanceRequest = RestartInstanceRequest'
+
+
+instance FromJSON RestartInstanceRequest where
+        parseJSON
+          = withObject "RestartInstanceRequest"
+              (\ o -> pure RestartInstanceRequest')
+
+instance ToJSON RestartInstanceRequest where
+        toJSON = const emptyObject
+
+-- | 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])
+
+-- | 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])
+
+-- | Request message for upgrading a Data Fusion instance. To change the
+-- instance properties, instance update should be used.
+--
+-- /See:/ 'upgradeInstanceRequest' smart constructor.
+data UpgradeInstanceRequest =
+  UpgradeInstanceRequest'
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpgradeInstanceRequest' with the minimum fields required to make a request.
+--
+upgradeInstanceRequest
+    :: UpgradeInstanceRequest
+upgradeInstanceRequest = UpgradeInstanceRequest'
+
+
+instance FromJSON UpgradeInstanceRequest where
+        parseJSON
+          = withObject "UpgradeInstanceRequest"
+              (\ o -> pure UpgradeInstanceRequest')
+
+instance ToJSON UpgradeInstanceRequest where
+        toJSON = const emptyObject
+
+-- | Authorization-related information used by Cloud Audit Logging.
+--
+-- /See:/ 'authorizationLoggingOptions' smart constructor.
+newtype AuthorizationLoggingOptions =
+  AuthorizationLoggingOptions'
+    { _aloPermissionType :: Maybe AuthorizationLoggingOptionsPermissionType
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AuthorizationLoggingOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aloPermissionType'
+authorizationLoggingOptions
+    :: AuthorizationLoggingOptions
+authorizationLoggingOptions =
+  AuthorizationLoggingOptions' {_aloPermissionType = Nothing}
+
+
+-- | The type of the permission that was checked.
+aloPermissionType :: Lens' AuthorizationLoggingOptions (Maybe AuthorizationLoggingOptionsPermissionType)
+aloPermissionType
+  = lens _aloPermissionType
+      (\ s a -> s{_aloPermissionType = a})
+
+instance FromJSON AuthorizationLoggingOptions where
+        parseJSON
+          = withObject "AuthorizationLoggingOptions"
+              (\ o ->
+                 AuthorizationLoggingOptions' <$>
+                   (o .:? "permissionType"))
+
+instance ToJSON AuthorizationLoggingOptions where
+        toJSON AuthorizationLoggingOptions'{..}
+          = object
+              (catMaybes
+                 [("permissionType" .=) <$> _aloPermissionType])
+
+-- | 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)
+    , _pRules        :: !(Maybe [Rule])
+    , _pVersion      :: !(Maybe (Textual Int32))
+    , _pBindings     :: !(Maybe [Binding])
+    , _pIAMOwned     :: !(Maybe Bool)
+    }
+  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'
+--
+-- * 'pRules'
+--
+-- * 'pVersion'
+--
+-- * 'pBindings'
+--
+-- * 'pIAMOwned'
+policy
+    :: Policy
+policy =
+  Policy'
+    { _pAuditConfigs = Nothing
+    , _pEtag = Nothing
+    , _pRules = Nothing
+    , _pVersion = Nothing
+    , _pBindings = Nothing
+    , _pIAMOwned = 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
+
+-- | If more than one rule is specified, the rules are applied in the
+-- following manner: - All matching LOG rules are always applied. - If any
+-- DENY\/DENY_WITH_LOG rule matches, permission is denied. Logging will be
+-- applied if one or more matching rule requires logging. - Otherwise, if
+-- any ALLOW\/ALLOW_WITH_LOG rule matches, permission is granted. Logging
+-- will be applied if one or more matching rule requires logging. -
+-- Otherwise, if no rule applies, permission is denied.
+pRules :: Lens' Policy [Rule]
+pRules
+  = lens _pRules (\ s a -> s{_pRules = a}) . _Default .
+      _Coerce
+
+-- | 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
+
+pIAMOwned :: Lens' Policy (Maybe Bool)
+pIAMOwned
+  = lens _pIAMOwned (\ s a -> s{_pIAMOwned = a})
+
+instance FromJSON Policy where
+        parseJSON
+          = withObject "Policy"
+              (\ o ->
+                 Policy' <$>
+                   (o .:? "auditConfigs" .!= mempty) <*> (o .:? "etag")
+                     <*> (o .:? "rules" .!= mempty)
+                     <*> (o .:? "version")
+                     <*> (o .:? "bindings" .!= mempty)
+                     <*> (o .:? "iamOwned"))
+
+instance ToJSON Policy where
+        toJSON Policy'{..}
+          = object
+              (catMaybes
+                 [("auditConfigs" .=) <$> _pAuditConfigs,
+                  ("etag" .=) <$> _pEtag, ("rules" .=) <$> _pRules,
+                  ("version" .=) <$> _pVersion,
+                  ("bindings" .=) <$> _pBindings,
+                  ("iamOwned" .=) <$> _pIAMOwned])
+
+-- | Cross-service attributes for the location. For example
+-- {\"cloud.googleapis.com\/region\": \"us-east1\"}
+--
+-- /See:/ 'locationLabels' smart constructor.
+newtype LocationLabels =
+  LocationLabels'
+    { _llAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'llAddtional'
+locationLabels
+    :: HashMap Text Text -- ^ 'llAddtional'
+    -> LocationLabels
+locationLabels pLlAddtional_ =
+  LocationLabels' {_llAddtional = _Coerce # pLlAddtional_}
+
+
+llAddtional :: Lens' LocationLabels (HashMap Text Text)
+llAddtional
+  = lens _llAddtional (\ s a -> s{_llAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationLabels where
+        parseJSON
+          = withObject "LocationLabels"
+              (\ o -> LocationLabels' <$> (parseJSONObject o))
+
+instance ToJSON LocationLabels where
+        toJSON = toJSON . _llAddtional
+
+-- | Service-specific metadata. For example the available capacity at the
+-- given location.
+--
+-- /See:/ 'locationMetadata' smart constructor.
+newtype LocationMetadata =
+  LocationMetadata'
+    { _lmAddtional :: HashMap Text JSONValue
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LocationMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lmAddtional'
+locationMetadata
+    :: HashMap Text JSONValue -- ^ 'lmAddtional'
+    -> LocationMetadata
+locationMetadata pLmAddtional_ =
+  LocationMetadata' {_lmAddtional = _Coerce # pLmAddtional_}
+
+
+-- | Properties of the object. Contains field \'type with type URL.
+lmAddtional :: Lens' LocationMetadata (HashMap Text JSONValue)
+lmAddtional
+  = lens _lmAddtional (\ s a -> s{_lmAddtional = a}) .
+      _Coerce
+
+instance FromJSON LocationMetadata where
+        parseJSON
+          = withObject "LocationMetadata"
+              (\ o -> LocationMetadata' <$> (parseJSONObject o))
+
+instance ToJSON LocationMetadata where
+        toJSON = toJSON . _lmAddtional
+
+-- | Represents the metadata of a long-running operation.
+--
+-- /See:/ 'operationMetadata' smart constructor.
+data OperationMetadata =
+  OperationMetadata'
+    { _omAPIVersion            :: !(Maybe Text)
+    , _omRequestedCancellation :: !(Maybe Bool)
+    , _omEndTime               :: !(Maybe DateTime')
+    , _omStatusDetail          :: !(Maybe Text)
+    , _omVerb                  :: !(Maybe Text)
+    , _omTarget                :: !(Maybe Text)
+    , _omCreateTime            :: !(Maybe DateTime')
+    }
+  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:
+--
+-- * 'omAPIVersion'
+--
+-- * 'omRequestedCancellation'
+--
+-- * 'omEndTime'
+--
+-- * 'omStatusDetail'
+--
+-- * 'omVerb'
+--
+-- * 'omTarget'
+--
+-- * 'omCreateTime'
+operationMetadata
+    :: OperationMetadata
+operationMetadata =
+  OperationMetadata'
+    { _omAPIVersion = Nothing
+    , _omRequestedCancellation = Nothing
+    , _omEndTime = Nothing
+    , _omStatusDetail = Nothing
+    , _omVerb = Nothing
+    , _omTarget = Nothing
+    , _omCreateTime = Nothing
+    }
+
+
+-- | API version used to start the operation.
+omAPIVersion :: Lens' OperationMetadata (Maybe Text)
+omAPIVersion
+  = lens _omAPIVersion (\ s a -> s{_omAPIVersion = a})
+
+-- | Identifies whether the user has requested cancellation of the operation.
+-- Operations that have successfully been cancelled have Operation.error
+-- value with a google.rpc.Status.code of 1, corresponding to
+-- \`Code.CANCELLED\`.
+omRequestedCancellation :: Lens' OperationMetadata (Maybe Bool)
+omRequestedCancellation
+  = lens _omRequestedCancellation
+      (\ s a -> s{_omRequestedCancellation = a})
+
+-- | The time the operation finished running.
+omEndTime :: Lens' OperationMetadata (Maybe UTCTime)
+omEndTime
+  = lens _omEndTime (\ s a -> s{_omEndTime = a}) .
+      mapping _DateTime
+
+-- | Human-readable status of the operation if any.
+omStatusDetail :: Lens' OperationMetadata (Maybe Text)
+omStatusDetail
+  = lens _omStatusDetail
+      (\ s a -> s{_omStatusDetail = a})
+
+-- | Name of the verb executed by the operation.
+omVerb :: Lens' OperationMetadata (Maybe Text)
+omVerb = lens _omVerb (\ s a -> s{_omVerb = a})
+
+-- | Server-defined resource path for the target of the operation.
+omTarget :: Lens' OperationMetadata (Maybe Text)
+omTarget = lens _omTarget (\ s a -> s{_omTarget = a})
+
+-- | The time the operation was created.
+omCreateTime :: Lens' OperationMetadata (Maybe UTCTime)
+omCreateTime
+  = lens _omCreateTime (\ s a -> s{_omCreateTime = a})
+      . mapping _DateTime
+
+instance FromJSON OperationMetadata where
+        parseJSON
+          = withObject "OperationMetadata"
+              (\ o ->
+                 OperationMetadata' <$>
+                   (o .:? "apiVersion") <*>
+                     (o .:? "requestedCancellation")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "statusDetail")
+                     <*> (o .:? "verb")
+                     <*> (o .:? "target")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON OperationMetadata where
+        toJSON OperationMetadata'{..}
+          = object
+              (catMaybes
+                 [("apiVersion" .=) <$> _omAPIVersion,
+                  ("requestedCancellation" .=) <$>
+                    _omRequestedCancellation,
+                  ("endTime" .=) <$> _omEndTime,
+                  ("statusDetail" .=) <$> _omStatusDetail,
+                  ("verb" .=) <$> _omVerb, ("target" .=) <$> _omTarget,
+                  ("createTime" .=) <$> _omCreateTime])
+
+-- | 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 the list instance request.
+--
+-- /See:/ 'listInstancesResponse' smart constructor.
+data ListInstancesResponse =
+  ListInstancesResponse'
+    { _lirNextPageToken :: !(Maybe Text)
+    , _lirUnreachable   :: !(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'
+--
+-- * 'lirUnreachable'
+--
+-- * 'lirInstances'
+listInstancesResponse
+    :: ListInstancesResponse
+listInstancesResponse =
+  ListInstancesResponse'
+    { _lirNextPageToken = Nothing
+    , _lirUnreachable = Nothing
+    , _lirInstances = Nothing
+    }
+
+
+-- | Token to retrieve the next page of results or empty if there are no more
+-- results in the list.
+lirNextPageToken :: Lens' ListInstancesResponse (Maybe Text)
+lirNextPageToken
+  = lens _lirNextPageToken
+      (\ s a -> s{_lirNextPageToken = a})
+
+-- | Locations that could not be reached.
+lirUnreachable :: Lens' ListInstancesResponse [Text]
+lirUnreachable
+  = lens _lirUnreachable
+      (\ s a -> s{_lirUnreachable = a})
+      . _Default
+      . _Coerce
+
+-- | Represents a list of Data Fusion 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 .:? "unreachable" .!= mempty)
+                     <*> (o .:? "instances" .!= mempty))
+
+instance ToJSON ListInstancesResponse where
+        toJSON ListInstancesResponse'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _lirNextPageToken,
+                  ("unreachable" .=) <$> _lirUnreachable,
+                  ("instances" .=) <$> _lirInstances])
+
+-- | A condition to be met.
+--
+-- /See:/ 'condition' smart constructor.
+data Condition =
+  Condition'
+    { _cOp     :: !(Maybe ConditionOp)
+    , _cIAM    :: !(Maybe ConditionIAM)
+    , _cValues :: !(Maybe [Text])
+    , _cSys    :: !(Maybe ConditionSys)
+    , _cSvc    :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Condition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cOp'
+--
+-- * 'cIAM'
+--
+-- * 'cValues'
+--
+-- * 'cSys'
+--
+-- * 'cSvc'
+condition
+    :: Condition
+condition =
+  Condition'
+    { _cOp = Nothing
+    , _cIAM = Nothing
+    , _cValues = Nothing
+    , _cSys = Nothing
+    , _cSvc = Nothing
+    }
+
+
+-- | An operator to apply the subject with.
+cOp :: Lens' Condition (Maybe ConditionOp)
+cOp = lens _cOp (\ s a -> s{_cOp = a})
+
+-- | Trusted attributes supplied by the IAM system.
+cIAM :: Lens' Condition (Maybe ConditionIAM)
+cIAM = lens _cIAM (\ s a -> s{_cIAM = a})
+
+-- | The objects of the condition.
+cValues :: Lens' Condition [Text]
+cValues
+  = lens _cValues (\ s a -> s{_cValues = a}) . _Default
+      . _Coerce
+
+-- | Trusted attributes supplied by any service that owns resources and uses
+-- the IAM system for access control.
+cSys :: Lens' Condition (Maybe ConditionSys)
+cSys = lens _cSys (\ s a -> s{_cSys = a})
+
+-- | Trusted attributes discharged by the service.
+cSvc :: Lens' Condition (Maybe Text)
+cSvc = lens _cSvc (\ s a -> s{_cSvc = a})
+
+instance FromJSON Condition where
+        parseJSON
+          = withObject "Condition"
+              (\ o ->
+                 Condition' <$>
+                   (o .:? "op") <*> (o .:? "iam") <*>
+                     (o .:? "values" .!= mempty)
+                     <*> (o .:? "sys")
+                     <*> (o .:? "svc"))
+
+instance ToJSON Condition where
+        toJSON Condition'{..}
+          = object
+              (catMaybes
+                 [("op" .=) <$> _cOp, ("iam" .=) <$> _cIAM,
+                  ("values" .=) <$> _cValues, ("sys" .=) <$> _cSys,
+                  ("svc" .=) <$> _cSvc])
+
+-- | 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
+
+-- | Specifies what kind of log the caller must write
+--
+-- /See:/ 'logConfig' smart constructor.
+data LogConfig =
+  LogConfig'
+    { _lcCloudAudit :: !(Maybe CloudAuditOptions)
+    , _lcDataAccess :: !(Maybe DataAccessOptions)
+    , _lcCounter    :: !(Maybe CounterOptions)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LogConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcCloudAudit'
+--
+-- * 'lcDataAccess'
+--
+-- * 'lcCounter'
+logConfig
+    :: LogConfig
+logConfig =
+  LogConfig'
+    {_lcCloudAudit = Nothing, _lcDataAccess = Nothing, _lcCounter = Nothing}
+
+
+-- | Cloud audit options.
+lcCloudAudit :: Lens' LogConfig (Maybe CloudAuditOptions)
+lcCloudAudit
+  = lens _lcCloudAudit (\ s a -> s{_lcCloudAudit = a})
+
+-- | Data access options.
+lcDataAccess :: Lens' LogConfig (Maybe DataAccessOptions)
+lcDataAccess
+  = lens _lcDataAccess (\ s a -> s{_lcDataAccess = a})
+
+-- | Counter options.
+lcCounter :: Lens' LogConfig (Maybe CounterOptions)
+lcCounter
+  = lens _lcCounter (\ s a -> s{_lcCounter = a})
+
+instance FromJSON LogConfig where
+        parseJSON
+          = withObject "LogConfig"
+              (\ o ->
+                 LogConfig' <$>
+                   (o .:? "cloudAudit") <*> (o .:? "dataAccess") <*>
+                     (o .:? "counter"))
+
+instance ToJSON LogConfig where
+        toJSON LogConfig'{..}
+          = object
+              (catMaybes
+                 [("cloudAudit" .=) <$> _lcCloudAudit,
+                  ("dataAccess" .=) <$> _lcDataAccess,
+                  ("counter" .=) <$> _lcCounter])
+
+-- | Map of additional options used to configure the behavior of Data Fusion
+-- instance.
+--
+-- /See:/ 'instanceOptions' smart constructor.
+newtype InstanceOptions =
+  InstanceOptions'
+    { _ioAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ioAddtional'
+instanceOptions
+    :: HashMap Text Text -- ^ 'ioAddtional'
+    -> InstanceOptions
+instanceOptions pIoAddtional_ =
+  InstanceOptions' {_ioAddtional = _Coerce # pIoAddtional_}
+
+
+ioAddtional :: Lens' InstanceOptions (HashMap Text Text)
+ioAddtional
+  = lens _ioAddtional (\ s a -> s{_ioAddtional = a}) .
+      _Coerce
+
+instance FromJSON InstanceOptions where
+        parseJSON
+          = withObject "InstanceOptions"
+              (\ o -> InstanceOptions' <$> (parseJSONObject o))
+
+instance ToJSON InstanceOptions where
+        toJSON = toJSON . _ioAddtional
+
+-- | 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}\`: The G Suite domain
+-- (primary) 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})
+
+-- | 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])
+
+-- | Represents a Data Fusion instance.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance =
+  Instance'
+    { _iStateMessage                :: !(Maybe Text)
+    , _iState                       :: !(Maybe InstanceState)
+    , _iEnableStackdriverLogging    :: !(Maybe Bool)
+    , _iServiceEndpoint             :: !(Maybe Text)
+    , _iZone                        :: !(Maybe Text)
+    , _iServiceAccount              :: !(Maybe Text)
+    , _iNetworkConfig               :: !(Maybe NetworkConfig)
+    , _iUpdateTime                  :: !(Maybe DateTime')
+    , _iPrivateInstance             :: !(Maybe Bool)
+    , _iName                        :: !(Maybe Text)
+    , _iVersion                     :: !(Maybe Text)
+    , _iDisplayName                 :: !(Maybe Text)
+    , _iEnableStackdriverMonitoring :: !(Maybe Bool)
+    , _iLabels                      :: !(Maybe InstanceLabels)
+    , _iOptions                     :: !(Maybe InstanceOptions)
+    , _iType                        :: !(Maybe InstanceType)
+    , _iDescription                 :: !(Maybe Text)
+    , _iCreateTime                  :: !(Maybe DateTime')
+    }
+  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:
+--
+-- * 'iStateMessage'
+--
+-- * 'iState'
+--
+-- * 'iEnableStackdriverLogging'
+--
+-- * 'iServiceEndpoint'
+--
+-- * 'iZone'
+--
+-- * 'iServiceAccount'
+--
+-- * 'iNetworkConfig'
+--
+-- * 'iUpdateTime'
+--
+-- * 'iPrivateInstance'
+--
+-- * 'iName'
+--
+-- * 'iVersion'
+--
+-- * 'iDisplayName'
+--
+-- * 'iEnableStackdriverMonitoring'
+--
+-- * 'iLabels'
+--
+-- * 'iOptions'
+--
+-- * 'iType'
+--
+-- * 'iDescription'
+--
+-- * 'iCreateTime'
+instance'
+    :: Instance
+instance' =
+  Instance'
+    { _iStateMessage = Nothing
+    , _iState = Nothing
+    , _iEnableStackdriverLogging = Nothing
+    , _iServiceEndpoint = Nothing
+    , _iZone = Nothing
+    , _iServiceAccount = Nothing
+    , _iNetworkConfig = Nothing
+    , _iUpdateTime = Nothing
+    , _iPrivateInstance = Nothing
+    , _iName = Nothing
+    , _iVersion = Nothing
+    , _iDisplayName = Nothing
+    , _iEnableStackdriverMonitoring = Nothing
+    , _iLabels = Nothing
+    , _iOptions = Nothing
+    , _iType = Nothing
+    , _iDescription = Nothing
+    , _iCreateTime = Nothing
+    }
+
+
+-- | Output only. Additional information about the current state of this Data
+-- Fusion instance if available.
+iStateMessage :: Lens' Instance (Maybe Text)
+iStateMessage
+  = lens _iStateMessage
+      (\ s a -> s{_iStateMessage = a})
+
+-- | Output only. The current state of this Data Fusion instance.
+iState :: Lens' Instance (Maybe InstanceState)
+iState = lens _iState (\ s a -> s{_iState = a})
+
+-- | Option to enable Stackdriver Logging.
+iEnableStackdriverLogging :: Lens' Instance (Maybe Bool)
+iEnableStackdriverLogging
+  = lens _iEnableStackdriverLogging
+      (\ s a -> s{_iEnableStackdriverLogging = a})
+
+-- | Output only. Endpoint on which the Data Fusion UI and REST APIs are
+-- accessible.
+iServiceEndpoint :: Lens' Instance (Maybe Text)
+iServiceEndpoint
+  = lens _iServiceEndpoint
+      (\ s a -> s{_iServiceEndpoint = a})
+
+-- | Name of the zone in which the Data Fusion instance will be created.
+iZone :: Lens' Instance (Maybe Text)
+iZone = lens _iZone (\ s a -> s{_iZone = a})
+
+-- | Output only. Service account which will be used to access resources in
+-- the customer project.\"
+iServiceAccount :: Lens' Instance (Maybe Text)
+iServiceAccount
+  = lens _iServiceAccount
+      (\ s a -> s{_iServiceAccount = a})
+
+-- | Network configuration options. These are required when a private Data
+-- Fusion instance is to be created.
+iNetworkConfig :: Lens' Instance (Maybe NetworkConfig)
+iNetworkConfig
+  = lens _iNetworkConfig
+      (\ s a -> s{_iNetworkConfig = a})
+
+-- | Output only. The time the instance was last updated.
+iUpdateTime :: Lens' Instance (Maybe UTCTime)
+iUpdateTime
+  = lens _iUpdateTime (\ s a -> s{_iUpdateTime = a}) .
+      mapping _DateTime
+
+-- | Specifies whether the Data Fusion instance should be private. If set to
+-- true, all Data Fusion nodes will have private IP addresses and will not
+-- be able to access the public internet.
+iPrivateInstance :: Lens' Instance (Maybe Bool)
+iPrivateInstance
+  = lens _iPrivateInstance
+      (\ s a -> s{_iPrivateInstance = a})
+
+-- | Output only. The name of this instance is in the form of
+-- projects\/{project}\/locations\/{location}\/instances\/{instance}.
+iName :: Lens' Instance (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+-- | Output only. Current version of the Data Fusion.
+iVersion :: Lens' Instance (Maybe Text)
+iVersion = lens _iVersion (\ s a -> s{_iVersion = a})
+
+-- | Display name for an instance.
+iDisplayName :: Lens' Instance (Maybe Text)
+iDisplayName
+  = lens _iDisplayName (\ s a -> s{_iDisplayName = a})
+
+-- | Option to enable Stackdriver Monitoring.
+iEnableStackdriverMonitoring :: Lens' Instance (Maybe Bool)
+iEnableStackdriverMonitoring
+  = lens _iEnableStackdriverMonitoring
+      (\ s a -> s{_iEnableStackdriverMonitoring = a})
+
+-- | The resource labels for instance to use to annotate any related
+-- underlying resources such as GCE VMs. The character \'=\' is not allowed
+-- to be used within the labels.
+iLabels :: Lens' Instance (Maybe InstanceLabels)
+iLabels = lens _iLabels (\ s a -> s{_iLabels = a})
+
+-- | Map of additional options used to configure the behavior of Data Fusion
+-- instance.
+iOptions :: Lens' Instance (Maybe InstanceOptions)
+iOptions = lens _iOptions (\ s a -> s{_iOptions = a})
+
+-- | Required. Instance type.
+iType :: Lens' Instance (Maybe InstanceType)
+iType = lens _iType (\ s a -> s{_iType = a})
+
+-- | An optional description of this instance.
+iDescription :: Lens' Instance (Maybe Text)
+iDescription
+  = lens _iDescription (\ s a -> s{_iDescription = a})
+
+-- | Output only. The time the instance was created.
+iCreateTime :: Lens' Instance (Maybe UTCTime)
+iCreateTime
+  = lens _iCreateTime (\ s a -> s{_iCreateTime = a}) .
+      mapping _DateTime
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ o ->
+                 Instance' <$>
+                   (o .:? "stateMessage") <*> (o .:? "state") <*>
+                     (o .:? "enableStackdriverLogging")
+                     <*> (o .:? "serviceEndpoint")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "serviceAccount")
+                     <*> (o .:? "networkConfig")
+                     <*> (o .:? "updateTime")
+                     <*> (o .:? "privateInstance")
+                     <*> (o .:? "name")
+                     <*> (o .:? "version")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "enableStackdriverMonitoring")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "options")
+                     <*> (o .:? "type")
+                     <*> (o .:? "description")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON Instance where
+        toJSON Instance'{..}
+          = object
+              (catMaybes
+                 [("stateMessage" .=) <$> _iStateMessage,
+                  ("state" .=) <$> _iState,
+                  ("enableStackdriverLogging" .=) <$>
+                    _iEnableStackdriverLogging,
+                  ("serviceEndpoint" .=) <$> _iServiceEndpoint,
+                  ("zone" .=) <$> _iZone,
+                  ("serviceAccount" .=) <$> _iServiceAccount,
+                  ("networkConfig" .=) <$> _iNetworkConfig,
+                  ("updateTime" .=) <$> _iUpdateTime,
+                  ("privateInstance" .=) <$> _iPrivateInstance,
+                  ("name" .=) <$> _iName, ("version" .=) <$> _iVersion,
+                  ("displayName" .=) <$> _iDisplayName,
+                  ("enableStackdriverMonitoring" .=) <$>
+                    _iEnableStackdriverMonitoring,
+                  ("labels" .=) <$> _iLabels,
+                  ("options" .=) <$> _iOptions, ("type" .=) <$> _iType,
+                  ("description" .=) <$> _iDescription,
+                  ("createTime" .=) <$> _iCreateTime])
diff --git a/gen/Network/Google/DataFusion/Types/Sum.hs b/gen/Network/Google/DataFusion/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/DataFusion/Types/Sum.hs
@@ -0,0 +1,531 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.DataFusion.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.DataFusion.Types.Sum where
+
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | The log_name to populate in the Cloud Audit Record.
+data CloudAuditOptionsLogName
+    = UnspecifiedLogName
+      -- ^ @UNSPECIFIED_LOG_NAME@
+      -- Default. Should not be used.
+    | AdminActivity
+      -- ^ @ADMIN_ACTIVITY@
+      -- Corresponds to \"cloudaudit.googleapis.com\/activity\"
+    | DataAccess
+      -- ^ @DATA_ACCESS@
+      -- Corresponds to \"cloudaudit.googleapis.com\/data_access\"
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable CloudAuditOptionsLogName
+
+instance FromHttpApiData CloudAuditOptionsLogName where
+    parseQueryParam = \case
+        "UNSPECIFIED_LOG_NAME" -> Right UnspecifiedLogName
+        "ADMIN_ACTIVITY" -> Right AdminActivity
+        "DATA_ACCESS" -> Right DataAccess
+        x -> Left ("Unable to parse CloudAuditOptionsLogName from: " <> x)
+
+instance ToHttpApiData CloudAuditOptionsLogName where
+    toQueryParam = \case
+        UnspecifiedLogName -> "UNSPECIFIED_LOG_NAME"
+        AdminActivity -> "ADMIN_ACTIVITY"
+        DataAccess -> "DATA_ACCESS"
+
+instance FromJSON CloudAuditOptionsLogName where
+    parseJSON = parseJSONText "CloudAuditOptionsLogName"
+
+instance ToJSON CloudAuditOptionsLogName where
+    toJSON = toJSONText
+
+-- | Trusted attributes supplied by any service that owns resources and uses
+-- the IAM system for access control.
+data ConditionSys
+    = NoAttr
+      -- ^ @NO_ATTR@
+      -- Default non-attribute type
+    | Region
+      -- ^ @REGION@
+      -- Region of the resource
+    | Service
+      -- ^ @SERVICE@
+      -- Service name
+    | Name
+      -- ^ @NAME@
+      -- Resource name
+    | IP
+      -- ^ @IP@
+      -- IP address of the caller
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ConditionSys
+
+instance FromHttpApiData ConditionSys where
+    parseQueryParam = \case
+        "NO_ATTR" -> Right NoAttr
+        "REGION" -> Right Region
+        "SERVICE" -> Right Service
+        "NAME" -> Right Name
+        "IP" -> Right IP
+        x -> Left ("Unable to parse ConditionSys from: " <> x)
+
+instance ToHttpApiData ConditionSys where
+    toQueryParam = \case
+        NoAttr -> "NO_ATTR"
+        Region -> "REGION"
+        Service -> "SERVICE"
+        Name -> "NAME"
+        IP -> "IP"
+
+instance FromJSON ConditionSys where
+    parseJSON = parseJSONText "ConditionSys"
+
+instance ToJSON ConditionSys where
+    toJSON = toJSONText
+
+-- | Required
+data RuleAction
+    = NoAction
+      -- ^ @NO_ACTION@
+      -- Default no action.
+    | Allow
+      -- ^ @ALLOW@
+      -- Matching \'Entries\' grant access.
+    | AllowWithLog
+      -- ^ @ALLOW_WITH_LOG@
+      -- Matching \'Entries\' grant access and the caller promises to log the
+      -- request per the returned log_configs.
+    | Deny
+      -- ^ @DENY@
+      -- Matching \'Entries\' deny access.
+    | DenyWithLog
+      -- ^ @DENY_WITH_LOG@
+      -- Matching \'Entries\' deny access and the caller promises to log the
+      -- request per the returned log_configs.
+    | Log
+      -- ^ @LOG@
+      -- Matching \'Entries\' tell IAM.Check callers to generate logs.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable RuleAction
+
+instance FromHttpApiData RuleAction where
+    parseQueryParam = \case
+        "NO_ACTION" -> Right NoAction
+        "ALLOW" -> Right Allow
+        "ALLOW_WITH_LOG" -> Right AllowWithLog
+        "DENY" -> Right Deny
+        "DENY_WITH_LOG" -> Right DenyWithLog
+        "LOG" -> Right Log
+        x -> Left ("Unable to parse RuleAction from: " <> x)
+
+instance ToHttpApiData RuleAction where
+    toQueryParam = \case
+        NoAction -> "NO_ACTION"
+        Allow -> "ALLOW"
+        AllowWithLog -> "ALLOW_WITH_LOG"
+        Deny -> "DENY"
+        DenyWithLog -> "DENY_WITH_LOG"
+        Log -> "LOG"
+
+instance FromJSON RuleAction where
+    parseJSON = parseJSONText "RuleAction"
+
+instance ToJSON RuleAction where
+    toJSON = toJSONText
+
+-- | Required. Instance type.
+data InstanceType
+    = TypeUnspecified
+      -- ^ @TYPE_UNSPECIFIED@
+      -- No type specified. The instance creation will fail.
+    | Basic
+      -- ^ @BASIC@
+      -- Basic Data Fusion instance. In Basic type, the user will be able to
+      -- create data pipelines using point and click UI. However, there are
+      -- certain limitations, such as fewer number of concurrent pipelines, no
+      -- support for streaming pipelines, etc.
+    | Enterprise
+      -- ^ @ENTERPRISE@
+      -- Enterprise Data Fusion instance. In Enterprise type, the user will have
+      -- more features available, such as support for streaming pipelines, higher
+      -- number of concurrent pipelines, etc.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceType
+
+instance FromHttpApiData InstanceType where
+    parseQueryParam = \case
+        "TYPE_UNSPECIFIED" -> Right TypeUnspecified
+        "BASIC" -> Right Basic
+        "ENTERPRISE" -> Right Enterprise
+        x -> Left ("Unable to parse InstanceType from: " <> x)
+
+instance ToHttpApiData InstanceType where
+    toQueryParam = \case
+        TypeUnspecified -> "TYPE_UNSPECIFIED"
+        Basic -> "BASIC"
+        Enterprise -> "ENTERPRISE"
+
+instance FromJSON InstanceType where
+    parseJSON = parseJSONText "InstanceType"
+
+instance ToJSON InstanceType where
+    toJSON = toJSONText
+
+-- | An operator to apply the subject with.
+data ConditionOp
+    = NoOp
+      -- ^ @NO_OP@
+      -- Default no-op.
+    | Equals
+      -- ^ @EQUALS@
+      -- DEPRECATED. Use IN instead.
+    | NotEquals
+      -- ^ @NOT_EQUALS@
+      -- DEPRECATED. Use NOT_IN instead.
+    | IN
+      -- ^ @IN@
+      -- The condition is true if the subject (or any element of it if it is a
+      -- set) matches any of the supplied values.
+    | NotIn
+      -- ^ @NOT_IN@
+      -- The condition is true if the subject (or every element of it if it is a
+      -- set) matches none of the supplied values.
+    | Discharged
+      -- ^ @DISCHARGED@
+      -- Subject is discharged
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ConditionOp
+
+instance FromHttpApiData ConditionOp where
+    parseQueryParam = \case
+        "NO_OP" -> Right NoOp
+        "EQUALS" -> Right Equals
+        "NOT_EQUALS" -> Right NotEquals
+        "IN" -> Right IN
+        "NOT_IN" -> Right NotIn
+        "DISCHARGED" -> Right Discharged
+        x -> Left ("Unable to parse ConditionOp from: " <> x)
+
+instance ToHttpApiData ConditionOp where
+    toQueryParam = \case
+        NoOp -> "NO_OP"
+        Equals -> "EQUALS"
+        NotEquals -> "NOT_EQUALS"
+        IN -> "IN"
+        NotIn -> "NOT_IN"
+        Discharged -> "DISCHARGED"
+
+instance FromJSON ConditionOp where
+    parseJSON = parseJSONText "ConditionOp"
+
+instance ToJSON ConditionOp 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
+
+-- | Whether Gin logging should happen in a fail-closed manner at the caller.
+-- This is relevant only in the LocalIAM implementation, for now.
+data DataAccessOptionsLogMode
+    = LogModeUnspecified
+      -- ^ @LOG_MODE_UNSPECIFIED@
+      -- Client is not required to write a partial Gin log immediately after the
+      -- authorization check. If client chooses to write one and it fails, client
+      -- may either fail open (allow the operation to continue) or fail closed
+      -- (handle as a DENY outcome).
+    | LogFailClosed
+      -- ^ @LOG_FAIL_CLOSED@
+      -- The application\'s operation in the context of which this authorization
+      -- check is being made may only be performed if it is successfully logged
+      -- to Gin. For instance, the authorization library may satisfy this
+      -- obligation by emitting a partial log entry at authorization check time
+      -- and only returning ALLOW to the application if it succeeds. If a
+      -- matching Rule has this directive, but the client has not indicated that
+      -- it will honor such requirements, then the IAM check will result in
+      -- authorization failure by setting CheckPolicyResponse.success=false.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable DataAccessOptionsLogMode
+
+instance FromHttpApiData DataAccessOptionsLogMode where
+    parseQueryParam = \case
+        "LOG_MODE_UNSPECIFIED" -> Right LogModeUnspecified
+        "LOG_FAIL_CLOSED" -> Right LogFailClosed
+        x -> Left ("Unable to parse DataAccessOptionsLogMode from: " <> x)
+
+instance ToHttpApiData DataAccessOptionsLogMode where
+    toQueryParam = \case
+        LogModeUnspecified -> "LOG_MODE_UNSPECIFIED"
+        LogFailClosed -> "LOG_FAIL_CLOSED"
+
+instance FromJSON DataAccessOptionsLogMode where
+    parseJSON = parseJSONText "DataAccessOptionsLogMode"
+
+instance ToJSON DataAccessOptionsLogMode where
+    toJSON = toJSONText
+
+-- | The type of the permission that was checked.
+data AuthorizationLoggingOptionsPermissionType
+    = ALOPTPermissionTypeUnspecified
+      -- ^ @PERMISSION_TYPE_UNSPECIFIED@
+      -- Default. Should not be used.
+    | ALOPTAdminRead
+      -- ^ @ADMIN_READ@
+      -- A read of admin (meta) data.
+    | ALOPTAdminWrite
+      -- ^ @ADMIN_WRITE@
+      -- A write of admin (meta) data.
+    | ALOPTDataRead
+      -- ^ @DATA_READ@
+      -- A read of standard data.
+    | ALOPTDataWrite
+      -- ^ @DATA_WRITE@
+      -- A write of standard data.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable AuthorizationLoggingOptionsPermissionType
+
+instance FromHttpApiData AuthorizationLoggingOptionsPermissionType where
+    parseQueryParam = \case
+        "PERMISSION_TYPE_UNSPECIFIED" -> Right ALOPTPermissionTypeUnspecified
+        "ADMIN_READ" -> Right ALOPTAdminRead
+        "ADMIN_WRITE" -> Right ALOPTAdminWrite
+        "DATA_READ" -> Right ALOPTDataRead
+        "DATA_WRITE" -> Right ALOPTDataWrite
+        x -> Left ("Unable to parse AuthorizationLoggingOptionsPermissionType from: " <> x)
+
+instance ToHttpApiData AuthorizationLoggingOptionsPermissionType where
+    toQueryParam = \case
+        ALOPTPermissionTypeUnspecified -> "PERMISSION_TYPE_UNSPECIFIED"
+        ALOPTAdminRead -> "ADMIN_READ"
+        ALOPTAdminWrite -> "ADMIN_WRITE"
+        ALOPTDataRead -> "DATA_READ"
+        ALOPTDataWrite -> "DATA_WRITE"
+
+instance FromJSON AuthorizationLoggingOptionsPermissionType where
+    parseJSON = parseJSONText "AuthorizationLoggingOptionsPermissionType"
+
+instance ToJSON AuthorizationLoggingOptionsPermissionType where
+    toJSON = toJSONText
+
+-- | Output only. The current state of this Data Fusion instance.
+data InstanceState
+    = StateUnspecified
+      -- ^ @STATE_UNSPECIFIED@
+      -- Instance does not have a state yet
+    | Creating
+      -- ^ @CREATING@
+      -- Instance is being created
+    | Running
+      -- ^ @RUNNING@
+      -- Instance is running and ready for requests
+    | Failed
+      -- ^ @FAILED@
+      -- Instance creation failed
+    | Deleting
+      -- ^ @DELETING@
+      -- Instance is being deleted
+    | Upgrading
+      -- ^ @UPGRADING@
+      -- Instance is being upgraded
+    | Restarting
+      -- ^ @RESTARTING@
+      -- Instance is being restarted
+    | Updating
+      -- ^ @UPDATING@
+      -- Instance is being updated
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable InstanceState
+
+instance FromHttpApiData InstanceState where
+    parseQueryParam = \case
+        "STATE_UNSPECIFIED" -> Right StateUnspecified
+        "CREATING" -> Right Creating
+        "RUNNING" -> Right Running
+        "FAILED" -> Right Failed
+        "DELETING" -> Right Deleting
+        "UPGRADING" -> Right Upgrading
+        "RESTARTING" -> Right Restarting
+        "UPDATING" -> Right Updating
+        x -> Left ("Unable to parse InstanceState from: " <> x)
+
+instance ToHttpApiData InstanceState where
+    toQueryParam = \case
+        StateUnspecified -> "STATE_UNSPECIFIED"
+        Creating -> "CREATING"
+        Running -> "RUNNING"
+        Failed -> "FAILED"
+        Deleting -> "DELETING"
+        Upgrading -> "UPGRADING"
+        Restarting -> "RESTARTING"
+        Updating -> "UPDATING"
+
+instance FromJSON InstanceState where
+    parseJSON = parseJSONText "InstanceState"
+
+instance ToJSON InstanceState where
+    toJSON = toJSONText
+
+-- | Trusted attributes supplied by the IAM system.
+data ConditionIAM
+    = CINoAttr
+      -- ^ @NO_ATTR@
+      -- Default non-attribute.
+    | CIAuthority
+      -- ^ @AUTHORITY@
+      -- Either principal or (if present) authority selector.
+    | CIAttribution
+      -- ^ @ATTRIBUTION@
+      -- The principal (even if an authority selector is present), which must
+      -- only be used for attribution, not authorization.
+    | CISecurityRealm
+      -- ^ @SECURITY_REALM@
+      -- Any of the security realms in the IAMContext (go\/security-realms). When
+      -- used with IN, the condition indicates \"any of the request\'s realms
+      -- match one of the given values; with NOT_IN, \"none of the realms match
+      -- any of the given values\". Note that a value can be: - \'self\' (i.e.,
+      -- allow connections from clients that are in the same security realm) - a
+      -- realm (e.g., \'campus-abc\') - a realm group (e.g.,
+      -- \'realms-for-borg-cell-xx\', see: go\/realm-groups) A match is
+      -- determined by a realm group membership check performed by a RealmAclRep
+      -- object (go\/realm-acl-howto). It is not permitted to grant access based
+      -- on the *absence* of a realm, so realm conditions can only be used in a
+      -- \"positive\" context (e.g., ALLOW\/IN or DENY\/NOT_IN).
+    | CIApprover
+      -- ^ @APPROVER@
+      -- An approver (distinct from the requester) that has authorized this
+      -- request. When used with IN, the condition indicates that one of the
+      -- approvers associated with the request matches the specified principal,
+      -- or is a member of the specified group. Approvers can only grant
+      -- additional access, and are thus only used in a strictly positive context
+      -- (e.g. ALLOW\/IN or DENY\/NOT_IN).
+    | CIJustificationType
+      -- ^ @JUSTIFICATION_TYPE@
+      -- What types of justifications have been supplied with this request.
+      -- String values should match enum names from tech.iam.JustificationType,
+      -- e.g. \"MANUAL_STRING\". It is not permitted to grant access based on the
+      -- *absence* of a justification, so justification conditions can only be
+      -- used in a \"positive\" context (e.g., ALLOW\/IN or DENY\/NOT_IN).
+      -- Multiple justifications, e.g., a Buganizer ID and a manually-entered
+      -- reason, are normal and supported.
+    | CICredentialsType
+      -- ^ @CREDENTIALS_TYPE@
+      -- What type of credentials have been supplied with this request. String
+      -- values should match enum names from security_loas_l2.CredentialsType -
+      -- currently, only CREDS_TYPE_EMERGENCY is supported. It is not permitted
+      -- to grant access based on the *absence* of a credentials type, so the
+      -- conditions can only be used in a \"positive\" context (e.g., ALLOW\/IN
+      -- or DENY\/NOT_IN).
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ConditionIAM
+
+instance FromHttpApiData ConditionIAM where
+    parseQueryParam = \case
+        "NO_ATTR" -> Right CINoAttr
+        "AUTHORITY" -> Right CIAuthority
+        "ATTRIBUTION" -> Right CIAttribution
+        "SECURITY_REALM" -> Right CISecurityRealm
+        "APPROVER" -> Right CIApprover
+        "JUSTIFICATION_TYPE" -> Right CIJustificationType
+        "CREDENTIALS_TYPE" -> Right CICredentialsType
+        x -> Left ("Unable to parse ConditionIAM from: " <> x)
+
+instance ToHttpApiData ConditionIAM where
+    toQueryParam = \case
+        CINoAttr -> "NO_ATTR"
+        CIAuthority -> "AUTHORITY"
+        CIAttribution -> "ATTRIBUTION"
+        CISecurityRealm -> "SECURITY_REALM"
+        CIApprover -> "APPROVER"
+        CIJustificationType -> "JUSTIFICATION_TYPE"
+        CICredentialsType -> "CREDENTIALS_TYPE"
+
+instance FromJSON ConditionIAM where
+    parseJSON = parseJSONText "ConditionIAM"
+
+instance ToJSON ConditionIAM where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Get.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Get.hs
@@ -0,0 +1,148 @@
+{-# 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.DataFusion.Projects.Locations.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 location.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.get@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsGetResource
+
+    -- * Creating a Request
+    , projectsLocationsGet
+    , ProjectsLocationsGet
+
+    -- * Request Lenses
+    , plgXgafv
+    , plgUploadProtocol
+    , plgAccessToken
+    , plgUploadType
+    , plgName
+    , plgCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.get@ method which the
+-- 'ProjectsLocationsGet' request conforms to.
+type ProjectsLocationsGetResource =
+     "v1beta1" :>
+       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] Location
+
+-- | Gets information about a location.
+--
+-- /See:/ 'projectsLocationsGet' smart constructor.
+data ProjectsLocationsGet =
+  ProjectsLocationsGet'
+    { _plgXgafv          :: !(Maybe Xgafv)
+    , _plgUploadProtocol :: !(Maybe Text)
+    , _plgAccessToken    :: !(Maybe Text)
+    , _plgUploadType     :: !(Maybe Text)
+    , _plgName           :: !Text
+    , _plgCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plgXgafv'
+--
+-- * 'plgUploadProtocol'
+--
+-- * 'plgAccessToken'
+--
+-- * 'plgUploadType'
+--
+-- * 'plgName'
+--
+-- * 'plgCallback'
+projectsLocationsGet
+    :: Text -- ^ 'plgName'
+    -> ProjectsLocationsGet
+projectsLocationsGet pPlgName_ =
+  ProjectsLocationsGet'
+    { _plgXgafv = Nothing
+    , _plgUploadProtocol = Nothing
+    , _plgAccessToken = Nothing
+    , _plgUploadType = Nothing
+    , _plgName = pPlgName_
+    , _plgCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plgXgafv :: Lens' ProjectsLocationsGet (Maybe Xgafv)
+plgXgafv = lens _plgXgafv (\ s a -> s{_plgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plgUploadProtocol :: Lens' ProjectsLocationsGet (Maybe Text)
+plgUploadProtocol
+  = lens _plgUploadProtocol
+      (\ s a -> s{_plgUploadProtocol = a})
+
+-- | OAuth access token.
+plgAccessToken :: Lens' ProjectsLocationsGet (Maybe Text)
+plgAccessToken
+  = lens _plgAccessToken
+      (\ s a -> s{_plgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plgUploadType :: Lens' ProjectsLocationsGet (Maybe Text)
+plgUploadType
+  = lens _plgUploadType
+      (\ s a -> s{_plgUploadType = a})
+
+-- | Resource name for the location.
+plgName :: Lens' ProjectsLocationsGet Text
+plgName = lens _plgName (\ s a -> s{_plgName = a})
+
+-- | JSONP
+plgCallback :: Lens' ProjectsLocationsGet (Maybe Text)
+plgCallback
+  = lens _plgCallback (\ s a -> s{_plgCallback = a})
+
+instance GoogleRequest ProjectsLocationsGet where
+        type Rs ProjectsLocationsGet = Location
+        type Scopes ProjectsLocationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsGet'{..}
+          = go _plgName _plgXgafv _plgUploadProtocol
+              _plgAccessToken
+              _plgUploadType
+              _plgCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Create.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/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.DataFusion.Projects.Locations.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)
+--
+-- Creates a new Data Fusion instance in the specified project and
+-- location.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.create@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesCreate
+    , ProjectsLocationsInstancesCreate
+
+    -- * Request Lenses
+    , plicParent
+    , plicInstanceId
+    , plicXgafv
+    , plicUploadProtocol
+    , plicAccessToken
+    , plicUploadType
+    , plicPayload
+    , plicCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.create@ method which the
+-- 'ProjectsLocationsInstancesCreate' request conforms to.
+type ProjectsLocationsInstancesCreateResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "instances" :>
+           QueryParam "instanceId" Text :>
+             QueryParam "$.xgafv" Xgafv :>
+               QueryParam "upload_protocol" Text :>
+                 QueryParam "access_token" Text :>
+                   QueryParam "uploadType" Text :>
+                     QueryParam "callback" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Instance :> Post '[JSON] Operation
+
+-- | Creates a new Data Fusion instance in the specified project and
+-- location.
+--
+-- /See:/ 'projectsLocationsInstancesCreate' smart constructor.
+data ProjectsLocationsInstancesCreate =
+  ProjectsLocationsInstancesCreate'
+    { _plicParent         :: !Text
+    , _plicInstanceId     :: !(Maybe Text)
+    , _plicXgafv          :: !(Maybe Xgafv)
+    , _plicUploadProtocol :: !(Maybe Text)
+    , _plicAccessToken    :: !(Maybe Text)
+    , _plicUploadType     :: !(Maybe Text)
+    , _plicPayload        :: !Instance
+    , _plicCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plicParent'
+--
+-- * 'plicInstanceId'
+--
+-- * 'plicXgafv'
+--
+-- * 'plicUploadProtocol'
+--
+-- * 'plicAccessToken'
+--
+-- * 'plicUploadType'
+--
+-- * 'plicPayload'
+--
+-- * 'plicCallback'
+projectsLocationsInstancesCreate
+    :: Text -- ^ 'plicParent'
+    -> Instance -- ^ 'plicPayload'
+    -> ProjectsLocationsInstancesCreate
+projectsLocationsInstancesCreate pPlicParent_ pPlicPayload_ =
+  ProjectsLocationsInstancesCreate'
+    { _plicParent = pPlicParent_
+    , _plicInstanceId = Nothing
+    , _plicXgafv = Nothing
+    , _plicUploadProtocol = Nothing
+    , _plicAccessToken = Nothing
+    , _plicUploadType = Nothing
+    , _plicPayload = pPlicPayload_
+    , _plicCallback = Nothing
+    }
+
+
+-- | The instance\'s project and location in the format
+-- projects\/{project}\/locations\/{location}.
+plicParent :: Lens' ProjectsLocationsInstancesCreate Text
+plicParent
+  = lens _plicParent (\ s a -> s{_plicParent = a})
+
+-- | The name of the instance to create.
+plicInstanceId :: Lens' ProjectsLocationsInstancesCreate (Maybe Text)
+plicInstanceId
+  = lens _plicInstanceId
+      (\ s a -> s{_plicInstanceId = a})
+
+-- | V1 error format.
+plicXgafv :: Lens' ProjectsLocationsInstancesCreate (Maybe Xgafv)
+plicXgafv
+  = lens _plicXgafv (\ s a -> s{_plicXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plicUploadProtocol :: Lens' ProjectsLocationsInstancesCreate (Maybe Text)
+plicUploadProtocol
+  = lens _plicUploadProtocol
+      (\ s a -> s{_plicUploadProtocol = a})
+
+-- | OAuth access token.
+plicAccessToken :: Lens' ProjectsLocationsInstancesCreate (Maybe Text)
+plicAccessToken
+  = lens _plicAccessToken
+      (\ s a -> s{_plicAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plicUploadType :: Lens' ProjectsLocationsInstancesCreate (Maybe Text)
+plicUploadType
+  = lens _plicUploadType
+      (\ s a -> s{_plicUploadType = a})
+
+-- | Multipart request metadata.
+plicPayload :: Lens' ProjectsLocationsInstancesCreate Instance
+plicPayload
+  = lens _plicPayload (\ s a -> s{_plicPayload = a})
+
+-- | JSONP
+plicCallback :: Lens' ProjectsLocationsInstancesCreate (Maybe Text)
+plicCallback
+  = lens _plicCallback (\ s a -> s{_plicCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesCreate
+         where
+        type Rs ProjectsLocationsInstancesCreate = Operation
+        type Scopes ProjectsLocationsInstancesCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesCreate'{..}
+          = go _plicParent _plicInstanceId _plicXgafv
+              _plicUploadProtocol
+              _plicAccessToken
+              _plicUploadType
+              _plicCallback
+              (Just AltJSON)
+              _plicPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Delete.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/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.DataFusion.Projects.Locations.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)
+--
+-- Deletes a single Date Fusion instance.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.delete@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesDelete
+    , ProjectsLocationsInstancesDelete
+
+    -- * Request Lenses
+    , plidXgafv
+    , plidUploadProtocol
+    , plidAccessToken
+    , plidUploadType
+    , plidName
+    , plidCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.delete@ method which the
+-- 'ProjectsLocationsInstancesDelete' request conforms to.
+type ProjectsLocationsInstancesDeleteResource =
+     "v1beta1" :>
+       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] Operation
+
+-- | Deletes a single Date Fusion instance.
+--
+-- /See:/ 'projectsLocationsInstancesDelete' smart constructor.
+data ProjectsLocationsInstancesDelete =
+  ProjectsLocationsInstancesDelete'
+    { _plidXgafv          :: !(Maybe Xgafv)
+    , _plidUploadProtocol :: !(Maybe Text)
+    , _plidAccessToken    :: !(Maybe Text)
+    , _plidUploadType     :: !(Maybe Text)
+    , _plidName           :: !Text
+    , _plidCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plidXgafv'
+--
+-- * 'plidUploadProtocol'
+--
+-- * 'plidAccessToken'
+--
+-- * 'plidUploadType'
+--
+-- * 'plidName'
+--
+-- * 'plidCallback'
+projectsLocationsInstancesDelete
+    :: Text -- ^ 'plidName'
+    -> ProjectsLocationsInstancesDelete
+projectsLocationsInstancesDelete pPlidName_ =
+  ProjectsLocationsInstancesDelete'
+    { _plidXgafv = Nothing
+    , _plidUploadProtocol = Nothing
+    , _plidAccessToken = Nothing
+    , _plidUploadType = Nothing
+    , _plidName = pPlidName_
+    , _plidCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plidXgafv :: Lens' ProjectsLocationsInstancesDelete (Maybe Xgafv)
+plidXgafv
+  = lens _plidXgafv (\ s a -> s{_plidXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plidUploadProtocol :: Lens' ProjectsLocationsInstancesDelete (Maybe Text)
+plidUploadProtocol
+  = lens _plidUploadProtocol
+      (\ s a -> s{_plidUploadProtocol = a})
+
+-- | OAuth access token.
+plidAccessToken :: Lens' ProjectsLocationsInstancesDelete (Maybe Text)
+plidAccessToken
+  = lens _plidAccessToken
+      (\ s a -> s{_plidAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plidUploadType :: Lens' ProjectsLocationsInstancesDelete (Maybe Text)
+plidUploadType
+  = lens _plidUploadType
+      (\ s a -> s{_plidUploadType = a})
+
+-- | The instance resource name in the format
+-- projects\/{project}\/locations\/{location}\/instances\/{instance}
+plidName :: Lens' ProjectsLocationsInstancesDelete Text
+plidName = lens _plidName (\ s a -> s{_plidName = a})
+
+-- | JSONP
+plidCallback :: Lens' ProjectsLocationsInstancesDelete (Maybe Text)
+plidCallback
+  = lens _plidCallback (\ s a -> s{_plidCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesDelete
+         where
+        type Rs ProjectsLocationsInstancesDelete = Operation
+        type Scopes ProjectsLocationsInstancesDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesDelete'{..}
+          = go _plidName _plidXgafv _plidUploadProtocol
+              _plidAccessToken
+              _plidUploadType
+              _plidCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Get.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/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.DataFusion.Projects.Locations.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 details of a single Data Fusion instance.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.get@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesGetResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesGet
+    , ProjectsLocationsInstancesGet
+
+    -- * Request Lenses
+    , pligXgafv
+    , pligUploadProtocol
+    , pligAccessToken
+    , pligUploadType
+    , pligName
+    , pligCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.get@ method which the
+-- 'ProjectsLocationsInstancesGet' request conforms to.
+type ProjectsLocationsInstancesGetResource =
+     "v1beta1" :>
+       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 details of a single Data Fusion instance.
+--
+-- /See:/ 'projectsLocationsInstancesGet' smart constructor.
+data ProjectsLocationsInstancesGet =
+  ProjectsLocationsInstancesGet'
+    { _pligXgafv          :: !(Maybe Xgafv)
+    , _pligUploadProtocol :: !(Maybe Text)
+    , _pligAccessToken    :: !(Maybe Text)
+    , _pligUploadType     :: !(Maybe Text)
+    , _pligName           :: !Text
+    , _pligCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pligXgafv'
+--
+-- * 'pligUploadProtocol'
+--
+-- * 'pligAccessToken'
+--
+-- * 'pligUploadType'
+--
+-- * 'pligName'
+--
+-- * 'pligCallback'
+projectsLocationsInstancesGet
+    :: Text -- ^ 'pligName'
+    -> ProjectsLocationsInstancesGet
+projectsLocationsInstancesGet pPligName_ =
+  ProjectsLocationsInstancesGet'
+    { _pligXgafv = Nothing
+    , _pligUploadProtocol = Nothing
+    , _pligAccessToken = Nothing
+    , _pligUploadType = Nothing
+    , _pligName = pPligName_
+    , _pligCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pligXgafv :: Lens' ProjectsLocationsInstancesGet (Maybe Xgafv)
+pligXgafv
+  = lens _pligXgafv (\ s a -> s{_pligXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pligUploadProtocol :: Lens' ProjectsLocationsInstancesGet (Maybe Text)
+pligUploadProtocol
+  = lens _pligUploadProtocol
+      (\ s a -> s{_pligUploadProtocol = a})
+
+-- | OAuth access token.
+pligAccessToken :: Lens' ProjectsLocationsInstancesGet (Maybe Text)
+pligAccessToken
+  = lens _pligAccessToken
+      (\ s a -> s{_pligAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pligUploadType :: Lens' ProjectsLocationsInstancesGet (Maybe Text)
+pligUploadType
+  = lens _pligUploadType
+      (\ s a -> s{_pligUploadType = a})
+
+-- | The instance resource name in the format
+-- projects\/{project}\/locations\/{location}\/instances\/{instance}.
+pligName :: Lens' ProjectsLocationsInstancesGet Text
+pligName = lens _pligName (\ s a -> s{_pligName = a})
+
+-- | JSONP
+pligCallback :: Lens' ProjectsLocationsInstancesGet (Maybe Text)
+pligCallback
+  = lens _pligCallback (\ s a -> s{_pligCallback = a})
+
+instance GoogleRequest ProjectsLocationsInstancesGet
+         where
+        type Rs ProjectsLocationsInstancesGet = Instance
+        type Scopes ProjectsLocationsInstancesGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesGet'{..}
+          = go _pligName _pligXgafv _pligUploadProtocol
+              _pligAccessToken
+              _pligUploadType
+              _pligCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/GetIAMPolicy.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/GetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/GetIAMPolicy.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.DataFusion.Projects.Locations.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 a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.getIamPolicy@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.GetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesGetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesGetIAMPolicy
+    , ProjectsLocationsInstancesGetIAMPolicy
+
+    -- * Request Lenses
+    , pligipXgafv
+    , pligipUploadProtocol
+    , pligipAccessToken
+    , pligipUploadType
+    , pligipResource
+    , pligipCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.getIamPolicy@ method which the
+-- 'ProjectsLocationsInstancesGetIAMPolicy' request conforms to.
+type ProjectsLocationsInstancesGetIAMPolicyResource =
+     "v1beta1" :>
+       CaptureMode "resource" "getIamPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Policy
+
+-- | Gets the access control policy for a resource. Returns an empty policy
+-- if the resource exists and does not have a policy set.
+--
+-- /See:/ 'projectsLocationsInstancesGetIAMPolicy' smart constructor.
+data ProjectsLocationsInstancesGetIAMPolicy =
+  ProjectsLocationsInstancesGetIAMPolicy'
+    { _pligipXgafv          :: !(Maybe Xgafv)
+    , _pligipUploadProtocol :: !(Maybe Text)
+    , _pligipAccessToken    :: !(Maybe Text)
+    , _pligipUploadType     :: !(Maybe Text)
+    , _pligipResource       :: !Text
+    , _pligipCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesGetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pligipXgafv'
+--
+-- * 'pligipUploadProtocol'
+--
+-- * 'pligipAccessToken'
+--
+-- * 'pligipUploadType'
+--
+-- * 'pligipResource'
+--
+-- * 'pligipCallback'
+projectsLocationsInstancesGetIAMPolicy
+    :: Text -- ^ 'pligipResource'
+    -> ProjectsLocationsInstancesGetIAMPolicy
+projectsLocationsInstancesGetIAMPolicy pPligipResource_ =
+  ProjectsLocationsInstancesGetIAMPolicy'
+    { _pligipXgafv = Nothing
+    , _pligipUploadProtocol = Nothing
+    , _pligipAccessToken = Nothing
+    , _pligipUploadType = Nothing
+    , _pligipResource = pPligipResource_
+    , _pligipCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pligipXgafv :: Lens' ProjectsLocationsInstancesGetIAMPolicy (Maybe Xgafv)
+pligipXgafv
+  = lens _pligipXgafv (\ s a -> s{_pligipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pligipUploadProtocol :: Lens' ProjectsLocationsInstancesGetIAMPolicy (Maybe Text)
+pligipUploadProtocol
+  = lens _pligipUploadProtocol
+      (\ s a -> s{_pligipUploadProtocol = a})
+
+-- | OAuth access token.
+pligipAccessToken :: Lens' ProjectsLocationsInstancesGetIAMPolicy (Maybe Text)
+pligipAccessToken
+  = lens _pligipAccessToken
+      (\ s a -> s{_pligipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pligipUploadType :: Lens' ProjectsLocationsInstancesGetIAMPolicy (Maybe Text)
+pligipUploadType
+  = lens _pligipUploadType
+      (\ s a -> s{_pligipUploadType = a})
+
+-- | REQUIRED: The resource for which the policy is being requested. See the
+-- operation documentation for the appropriate value for this field.
+pligipResource :: Lens' ProjectsLocationsInstancesGetIAMPolicy Text
+pligipResource
+  = lens _pligipResource
+      (\ s a -> s{_pligipResource = a})
+
+-- | JSONP
+pligipCallback :: Lens' ProjectsLocationsInstancesGetIAMPolicy (Maybe Text)
+pligipCallback
+  = lens _pligipCallback
+      (\ s a -> s{_pligipCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesGetIAMPolicy
+         where
+        type Rs ProjectsLocationsInstancesGetIAMPolicy =
+             Policy
+        type Scopes ProjectsLocationsInstancesGetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsInstancesGetIAMPolicy'{..}
+          = go _pligipResource _pligipXgafv
+              _pligipUploadProtocol
+              _pligipAccessToken
+              _pligipUploadType
+              _pligipCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesGetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/List.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/List.hs
@@ -0,0 +1,210 @@
+{-# 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.DataFusion.Projects.Locations.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 Data Fusion instances in the specified project and location.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.list@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.List
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesListResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesList
+    , ProjectsLocationsInstancesList
+
+    -- * Request Lenses
+    , plilParent
+    , plilXgafv
+    , plilUploadProtocol
+    , plilOrderBy
+    , plilAccessToken
+    , plilUploadType
+    , plilFilter
+    , plilPageToken
+    , plilPageSize
+    , plilCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.list@ method which the
+-- 'ProjectsLocationsInstancesList' request conforms to.
+type ProjectsLocationsInstancesListResource =
+     "v1beta1" :>
+       Capture "parent" Text :>
+         "instances" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "orderBy" 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] ListInstancesResponse
+
+-- | Lists Data Fusion instances in the specified project and location.
+--
+-- /See:/ 'projectsLocationsInstancesList' smart constructor.
+data ProjectsLocationsInstancesList =
+  ProjectsLocationsInstancesList'
+    { _plilParent         :: !Text
+    , _plilXgafv          :: !(Maybe Xgafv)
+    , _plilUploadProtocol :: !(Maybe Text)
+    , _plilOrderBy        :: !(Maybe Text)
+    , _plilAccessToken    :: !(Maybe Text)
+    , _plilUploadType     :: !(Maybe Text)
+    , _plilFilter         :: !(Maybe Text)
+    , _plilPageToken      :: !(Maybe Text)
+    , _plilPageSize       :: !(Maybe (Textual Int32))
+    , _plilCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plilParent'
+--
+-- * 'plilXgafv'
+--
+-- * 'plilUploadProtocol'
+--
+-- * 'plilOrderBy'
+--
+-- * 'plilAccessToken'
+--
+-- * 'plilUploadType'
+--
+-- * 'plilFilter'
+--
+-- * 'plilPageToken'
+--
+-- * 'plilPageSize'
+--
+-- * 'plilCallback'
+projectsLocationsInstancesList
+    :: Text -- ^ 'plilParent'
+    -> ProjectsLocationsInstancesList
+projectsLocationsInstancesList pPlilParent_ =
+  ProjectsLocationsInstancesList'
+    { _plilParent = pPlilParent_
+    , _plilXgafv = Nothing
+    , _plilUploadProtocol = Nothing
+    , _plilOrderBy = Nothing
+    , _plilAccessToken = Nothing
+    , _plilUploadType = Nothing
+    , _plilFilter = Nothing
+    , _plilPageToken = Nothing
+    , _plilPageSize = Nothing
+    , _plilCallback = Nothing
+    }
+
+
+-- | The project and location for which to retrieve instance information in
+-- the format projects\/{project}\/locations\/{location}. If the location
+-- is specified as \'-\' (wildcard), then all regions available to the
+-- project are queried, and the results are aggregated.
+plilParent :: Lens' ProjectsLocationsInstancesList Text
+plilParent
+  = lens _plilParent (\ s a -> s{_plilParent = a})
+
+-- | V1 error format.
+plilXgafv :: Lens' ProjectsLocationsInstancesList (Maybe Xgafv)
+plilXgafv
+  = lens _plilXgafv (\ s a -> s{_plilXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plilUploadProtocol :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilUploadProtocol
+  = lens _plilUploadProtocol
+      (\ s a -> s{_plilUploadProtocol = a})
+
+-- | Sort results. Supported values are \"name\", \"name desc\", or \"\"
+-- (unsorted).
+plilOrderBy :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilOrderBy
+  = lens _plilOrderBy (\ s a -> s{_plilOrderBy = a})
+
+-- | OAuth access token.
+plilAccessToken :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilAccessToken
+  = lens _plilAccessToken
+      (\ s a -> s{_plilAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plilUploadType :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilUploadType
+  = lens _plilUploadType
+      (\ s a -> s{_plilUploadType = a})
+
+-- | List filter.
+plilFilter :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilFilter
+  = lens _plilFilter (\ s a -> s{_plilFilter = a})
+
+-- | The next_page_token value to use if there are additional results to
+-- retrieve for this list request.
+plilPageToken :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilPageToken
+  = lens _plilPageToken
+      (\ s a -> s{_plilPageToken = a})
+
+-- | The maximum number of items to return.
+plilPageSize :: Lens' ProjectsLocationsInstancesList (Maybe Int32)
+plilPageSize
+  = lens _plilPageSize (\ s a -> s{_plilPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+plilCallback :: Lens' ProjectsLocationsInstancesList (Maybe Text)
+plilCallback
+  = lens _plilCallback (\ s a -> s{_plilCallback = a})
+
+instance GoogleRequest ProjectsLocationsInstancesList
+         where
+        type Rs ProjectsLocationsInstancesList =
+             ListInstancesResponse
+        type Scopes ProjectsLocationsInstancesList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesList'{..}
+          = go _plilParent _plilXgafv _plilUploadProtocol
+              _plilOrderBy
+              _plilAccessToken
+              _plilUploadType
+              _plilFilter
+              _plilPageToken
+              _plilPageSize
+              _plilCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Patch.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Patch.hs
@@ -0,0 +1,184 @@
+{-# 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.DataFusion.Projects.Locations.Instances.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 a single Data Fusion instance.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.patch@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Patch
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesPatchResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesPatch
+    , ProjectsLocationsInstancesPatch
+
+    -- * Request Lenses
+    , plipXgafv
+    , plipUploadProtocol
+    , plipUpdateMask
+    , plipAccessToken
+    , plipUploadType
+    , plipPayload
+    , plipName
+    , plipCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.patch@ method which the
+-- 'ProjectsLocationsInstancesPatch' request conforms to.
+type ProjectsLocationsInstancesPatchResource =
+     "v1beta1" :>
+       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
+
+-- | Updates a single Data Fusion instance.
+--
+-- /See:/ 'projectsLocationsInstancesPatch' smart constructor.
+data ProjectsLocationsInstancesPatch =
+  ProjectsLocationsInstancesPatch'
+    { _plipXgafv          :: !(Maybe Xgafv)
+    , _plipUploadProtocol :: !(Maybe Text)
+    , _plipUpdateMask     :: !(Maybe GFieldMask)
+    , _plipAccessToken    :: !(Maybe Text)
+    , _plipUploadType     :: !(Maybe Text)
+    , _plipPayload        :: !Instance
+    , _plipName           :: !Text
+    , _plipCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plipXgafv'
+--
+-- * 'plipUploadProtocol'
+--
+-- * 'plipUpdateMask'
+--
+-- * 'plipAccessToken'
+--
+-- * 'plipUploadType'
+--
+-- * 'plipPayload'
+--
+-- * 'plipName'
+--
+-- * 'plipCallback'
+projectsLocationsInstancesPatch
+    :: Instance -- ^ 'plipPayload'
+    -> Text -- ^ 'plipName'
+    -> ProjectsLocationsInstancesPatch
+projectsLocationsInstancesPatch pPlipPayload_ pPlipName_ =
+  ProjectsLocationsInstancesPatch'
+    { _plipXgafv = Nothing
+    , _plipUploadProtocol = Nothing
+    , _plipUpdateMask = Nothing
+    , _plipAccessToken = Nothing
+    , _plipUploadType = Nothing
+    , _plipPayload = pPlipPayload_
+    , _plipName = pPlipName_
+    , _plipCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plipXgafv :: Lens' ProjectsLocationsInstancesPatch (Maybe Xgafv)
+plipXgafv
+  = lens _plipXgafv (\ s a -> s{_plipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plipUploadProtocol :: Lens' ProjectsLocationsInstancesPatch (Maybe Text)
+plipUploadProtocol
+  = lens _plipUploadProtocol
+      (\ s a -> s{_plipUploadProtocol = a})
+
+-- | Field mask is used to specify the fields that the update will overwrite
+-- in an instance resource. The fields specified in the update_mask are
+-- relative to the resource, not the full request. A field will be
+-- overwritten if it is in the mask. If the user does not provide a mask,
+-- all the supported fields (labels and options currently) will be
+-- overwritten.
+plipUpdateMask :: Lens' ProjectsLocationsInstancesPatch (Maybe GFieldMask)
+plipUpdateMask
+  = lens _plipUpdateMask
+      (\ s a -> s{_plipUpdateMask = a})
+
+-- | OAuth access token.
+plipAccessToken :: Lens' ProjectsLocationsInstancesPatch (Maybe Text)
+plipAccessToken
+  = lens _plipAccessToken
+      (\ s a -> s{_plipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plipUploadType :: Lens' ProjectsLocationsInstancesPatch (Maybe Text)
+plipUploadType
+  = lens _plipUploadType
+      (\ s a -> s{_plipUploadType = a})
+
+-- | Multipart request metadata.
+plipPayload :: Lens' ProjectsLocationsInstancesPatch Instance
+plipPayload
+  = lens _plipPayload (\ s a -> s{_plipPayload = a})
+
+-- | Output only. The name of this instance is in the form of
+-- projects\/{project}\/locations\/{location}\/instances\/{instance}.
+plipName :: Lens' ProjectsLocationsInstancesPatch Text
+plipName = lens _plipName (\ s a -> s{_plipName = a})
+
+-- | JSONP
+plipCallback :: Lens' ProjectsLocationsInstancesPatch (Maybe Text)
+plipCallback
+  = lens _plipCallback (\ s a -> s{_plipCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesPatch
+         where
+        type Rs ProjectsLocationsInstancesPatch = Operation
+        type Scopes ProjectsLocationsInstancesPatch =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesPatch'{..}
+          = go _plipName _plipXgafv _plipUploadProtocol
+              _plipUpdateMask
+              _plipAccessToken
+              _plipUploadType
+              _plipCallback
+              (Just AltJSON)
+              _plipPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Restart.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Restart.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Restart.hs
@@ -0,0 +1,169 @@
+{-# 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.DataFusion.Projects.Locations.Instances.Restart
+-- 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)
+--
+-- Restart a single Data Fusion instance. At the end of an operation
+-- instance is fully restarted.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.restart@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Restart
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesRestartResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesRestart
+    , ProjectsLocationsInstancesRestart
+
+    -- * Request Lenses
+    , plirXgafv
+    , plirUploadProtocol
+    , plirAccessToken
+    , plirUploadType
+    , plirPayload
+    , plirName
+    , plirCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.restart@ method which the
+-- 'ProjectsLocationsInstancesRestart' request conforms to.
+type ProjectsLocationsInstancesRestartResource =
+     "v1beta1" :>
+       CaptureMode "name" "restart" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] RestartInstanceRequest :>
+                       Post '[JSON] Operation
+
+-- | Restart a single Data Fusion instance. At the end of an operation
+-- instance is fully restarted.
+--
+-- /See:/ 'projectsLocationsInstancesRestart' smart constructor.
+data ProjectsLocationsInstancesRestart =
+  ProjectsLocationsInstancesRestart'
+    { _plirXgafv          :: !(Maybe Xgafv)
+    , _plirUploadProtocol :: !(Maybe Text)
+    , _plirAccessToken    :: !(Maybe Text)
+    , _plirUploadType     :: !(Maybe Text)
+    , _plirPayload        :: !RestartInstanceRequest
+    , _plirName           :: !Text
+    , _plirCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesRestart' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plirXgafv'
+--
+-- * 'plirUploadProtocol'
+--
+-- * 'plirAccessToken'
+--
+-- * 'plirUploadType'
+--
+-- * 'plirPayload'
+--
+-- * 'plirName'
+--
+-- * 'plirCallback'
+projectsLocationsInstancesRestart
+    :: RestartInstanceRequest -- ^ 'plirPayload'
+    -> Text -- ^ 'plirName'
+    -> ProjectsLocationsInstancesRestart
+projectsLocationsInstancesRestart pPlirPayload_ pPlirName_ =
+  ProjectsLocationsInstancesRestart'
+    { _plirXgafv = Nothing
+    , _plirUploadProtocol = Nothing
+    , _plirAccessToken = Nothing
+    , _plirUploadType = Nothing
+    , _plirPayload = pPlirPayload_
+    , _plirName = pPlirName_
+    , _plirCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plirXgafv :: Lens' ProjectsLocationsInstancesRestart (Maybe Xgafv)
+plirXgafv
+  = lens _plirXgafv (\ s a -> s{_plirXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plirUploadProtocol :: Lens' ProjectsLocationsInstancesRestart (Maybe Text)
+plirUploadProtocol
+  = lens _plirUploadProtocol
+      (\ s a -> s{_plirUploadProtocol = a})
+
+-- | OAuth access token.
+plirAccessToken :: Lens' ProjectsLocationsInstancesRestart (Maybe Text)
+plirAccessToken
+  = lens _plirAccessToken
+      (\ s a -> s{_plirAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plirUploadType :: Lens' ProjectsLocationsInstancesRestart (Maybe Text)
+plirUploadType
+  = lens _plirUploadType
+      (\ s a -> s{_plirUploadType = a})
+
+-- | Multipart request metadata.
+plirPayload :: Lens' ProjectsLocationsInstancesRestart RestartInstanceRequest
+plirPayload
+  = lens _plirPayload (\ s a -> s{_plirPayload = a})
+
+-- | Name of the Data Fusion instance which need to be restarted in the form
+-- of projects\/{project}\/locations\/{location}\/instances\/{instance}
+plirName :: Lens' ProjectsLocationsInstancesRestart Text
+plirName = lens _plirName (\ s a -> s{_plirName = a})
+
+-- | JSONP
+plirCallback :: Lens' ProjectsLocationsInstancesRestart (Maybe Text)
+plirCallback
+  = lens _plirCallback (\ s a -> s{_plirCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesRestart
+         where
+        type Rs ProjectsLocationsInstancesRestart = Operation
+        type Scopes ProjectsLocationsInstancesRestart =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesRestart'{..}
+          = go _plirName _plirXgafv _plirUploadProtocol
+              _plirAccessToken
+              _plirUploadType
+              _plirCallback
+              (Just AltJSON)
+              _plirPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesRestartResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/SetIAMPolicy.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/SetIAMPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/SetIAMPolicy.hs
@@ -0,0 +1,176 @@
+{-# 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.DataFusion.Projects.Locations.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 the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.setIamPolicy@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.SetIAMPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesSetIAMPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesSetIAMPolicy
+    , ProjectsLocationsInstancesSetIAMPolicy
+
+    -- * Request Lenses
+    , plisipXgafv
+    , plisipUploadProtocol
+    , plisipAccessToken
+    , plisipUploadType
+    , plisipPayload
+    , plisipResource
+    , plisipCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.setIamPolicy@ method which the
+-- 'ProjectsLocationsInstancesSetIAMPolicy' request conforms to.
+type ProjectsLocationsInstancesSetIAMPolicyResource =
+     "v1beta1" :>
+       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 the specified resource. Replaces any
+-- existing policy.
+--
+-- /See:/ 'projectsLocationsInstancesSetIAMPolicy' smart constructor.
+data ProjectsLocationsInstancesSetIAMPolicy =
+  ProjectsLocationsInstancesSetIAMPolicy'
+    { _plisipXgafv          :: !(Maybe Xgafv)
+    , _plisipUploadProtocol :: !(Maybe Text)
+    , _plisipAccessToken    :: !(Maybe Text)
+    , _plisipUploadType     :: !(Maybe Text)
+    , _plisipPayload        :: !SetIAMPolicyRequest
+    , _plisipResource       :: !Text
+    , _plisipCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesSetIAMPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plisipXgafv'
+--
+-- * 'plisipUploadProtocol'
+--
+-- * 'plisipAccessToken'
+--
+-- * 'plisipUploadType'
+--
+-- * 'plisipPayload'
+--
+-- * 'plisipResource'
+--
+-- * 'plisipCallback'
+projectsLocationsInstancesSetIAMPolicy
+    :: SetIAMPolicyRequest -- ^ 'plisipPayload'
+    -> Text -- ^ 'plisipResource'
+    -> ProjectsLocationsInstancesSetIAMPolicy
+projectsLocationsInstancesSetIAMPolicy pPlisipPayload_ pPlisipResource_ =
+  ProjectsLocationsInstancesSetIAMPolicy'
+    { _plisipXgafv = Nothing
+    , _plisipUploadProtocol = Nothing
+    , _plisipAccessToken = Nothing
+    , _plisipUploadType = Nothing
+    , _plisipPayload = pPlisipPayload_
+    , _plisipResource = pPlisipResource_
+    , _plisipCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plisipXgafv :: Lens' ProjectsLocationsInstancesSetIAMPolicy (Maybe Xgafv)
+plisipXgafv
+  = lens _plisipXgafv (\ s a -> s{_plisipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plisipUploadProtocol :: Lens' ProjectsLocationsInstancesSetIAMPolicy (Maybe Text)
+plisipUploadProtocol
+  = lens _plisipUploadProtocol
+      (\ s a -> s{_plisipUploadProtocol = a})
+
+-- | OAuth access token.
+plisipAccessToken :: Lens' ProjectsLocationsInstancesSetIAMPolicy (Maybe Text)
+plisipAccessToken
+  = lens _plisipAccessToken
+      (\ s a -> s{_plisipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plisipUploadType :: Lens' ProjectsLocationsInstancesSetIAMPolicy (Maybe Text)
+plisipUploadType
+  = lens _plisipUploadType
+      (\ s a -> s{_plisipUploadType = a})
+
+-- | Multipart request metadata.
+plisipPayload :: Lens' ProjectsLocationsInstancesSetIAMPolicy SetIAMPolicyRequest
+plisipPayload
+  = lens _plisipPayload
+      (\ s a -> s{_plisipPayload = a})
+
+-- | REQUIRED: The resource for which the policy is being specified. See the
+-- operation documentation for the appropriate value for this field.
+plisipResource :: Lens' ProjectsLocationsInstancesSetIAMPolicy Text
+plisipResource
+  = lens _plisipResource
+      (\ s a -> s{_plisipResource = a})
+
+-- | JSONP
+plisipCallback :: Lens' ProjectsLocationsInstancesSetIAMPolicy (Maybe Text)
+plisipCallback
+  = lens _plisipCallback
+      (\ s a -> s{_plisipCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesSetIAMPolicy
+         where
+        type Rs ProjectsLocationsInstancesSetIAMPolicy =
+             Policy
+        type Scopes ProjectsLocationsInstancesSetIAMPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsInstancesSetIAMPolicy'{..}
+          = go _plisipResource _plisipXgafv
+              _plisipUploadProtocol
+              _plisipAccessToken
+              _plisipUploadType
+              _plisipCallback
+              (Just AltJSON)
+              _plisipPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesSetIAMPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/TestIAMPermissions.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/TestIAMPermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/TestIAMPermissions.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.DataFusion.Projects.Locations.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 a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error. Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.testIamPermissions@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.TestIAMPermissions
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesTestIAMPermissionsResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesTestIAMPermissions
+    , ProjectsLocationsInstancesTestIAMPermissions
+
+    -- * Request Lenses
+    , plitipXgafv
+    , plitipUploadProtocol
+    , plitipAccessToken
+    , plitipUploadType
+    , plitipPayload
+    , plitipResource
+    , plitipCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.testIamPermissions@ method which the
+-- 'ProjectsLocationsInstancesTestIAMPermissions' request conforms to.
+type ProjectsLocationsInstancesTestIAMPermissionsResource
+     =
+     "v1beta1" :>
+       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 a caller has on the specified resource. If the
+-- resource does not exist, this will return an empty set of permissions,
+-- not a NOT_FOUND error. Note: This operation is designed to be used for
+-- building permission-aware UIs and command-line tools, not for
+-- authorization checking. This operation may \"fail open\" without
+-- warning.
+--
+-- /See:/ 'projectsLocationsInstancesTestIAMPermissions' smart constructor.
+data ProjectsLocationsInstancesTestIAMPermissions =
+  ProjectsLocationsInstancesTestIAMPermissions'
+    { _plitipXgafv          :: !(Maybe Xgafv)
+    , _plitipUploadProtocol :: !(Maybe Text)
+    , _plitipAccessToken    :: !(Maybe Text)
+    , _plitipUploadType     :: !(Maybe Text)
+    , _plitipPayload        :: !TestIAMPermissionsRequest
+    , _plitipResource       :: !Text
+    , _plitipCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesTestIAMPermissions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plitipXgafv'
+--
+-- * 'plitipUploadProtocol'
+--
+-- * 'plitipAccessToken'
+--
+-- * 'plitipUploadType'
+--
+-- * 'plitipPayload'
+--
+-- * 'plitipResource'
+--
+-- * 'plitipCallback'
+projectsLocationsInstancesTestIAMPermissions
+    :: TestIAMPermissionsRequest -- ^ 'plitipPayload'
+    -> Text -- ^ 'plitipResource'
+    -> ProjectsLocationsInstancesTestIAMPermissions
+projectsLocationsInstancesTestIAMPermissions pPlitipPayload_ pPlitipResource_ =
+  ProjectsLocationsInstancesTestIAMPermissions'
+    { _plitipXgafv = Nothing
+    , _plitipUploadProtocol = Nothing
+    , _plitipAccessToken = Nothing
+    , _plitipUploadType = Nothing
+    , _plitipPayload = pPlitipPayload_
+    , _plitipResource = pPlitipResource_
+    , _plitipCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plitipXgafv :: Lens' ProjectsLocationsInstancesTestIAMPermissions (Maybe Xgafv)
+plitipXgafv
+  = lens _plitipXgafv (\ s a -> s{_plitipXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plitipUploadProtocol :: Lens' ProjectsLocationsInstancesTestIAMPermissions (Maybe Text)
+plitipUploadProtocol
+  = lens _plitipUploadProtocol
+      (\ s a -> s{_plitipUploadProtocol = a})
+
+-- | OAuth access token.
+plitipAccessToken :: Lens' ProjectsLocationsInstancesTestIAMPermissions (Maybe Text)
+plitipAccessToken
+  = lens _plitipAccessToken
+      (\ s a -> s{_plitipAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plitipUploadType :: Lens' ProjectsLocationsInstancesTestIAMPermissions (Maybe Text)
+plitipUploadType
+  = lens _plitipUploadType
+      (\ s a -> s{_plitipUploadType = a})
+
+-- | Multipart request metadata.
+plitipPayload :: Lens' ProjectsLocationsInstancesTestIAMPermissions TestIAMPermissionsRequest
+plitipPayload
+  = lens _plitipPayload
+      (\ s a -> s{_plitipPayload = a})
+
+-- | REQUIRED: The resource for which the policy detail is being requested.
+-- See the operation documentation for the appropriate value for this
+-- field.
+plitipResource :: Lens' ProjectsLocationsInstancesTestIAMPermissions Text
+plitipResource
+  = lens _plitipResource
+      (\ s a -> s{_plitipResource = a})
+
+-- | JSONP
+plitipCallback :: Lens' ProjectsLocationsInstancesTestIAMPermissions (Maybe Text)
+plitipCallback
+  = lens _plitipCallback
+      (\ s a -> s{_plitipCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesTestIAMPermissions
+         where
+        type Rs ProjectsLocationsInstancesTestIAMPermissions
+             = TestIAMPermissionsResponse
+        type Scopes
+               ProjectsLocationsInstancesTestIAMPermissions
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsInstancesTestIAMPermissions'{..}
+          = go _plitipResource _plitipXgafv
+              _plitipUploadProtocol
+              _plitipAccessToken
+              _plitipUploadType
+              _plitipCallback
+              (Just AltJSON)
+              _plitipPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsInstancesTestIAMPermissionsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Upgrade.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Upgrade.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Instances/Upgrade.hs
@@ -0,0 +1,171 @@
+{-# 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.DataFusion.Projects.Locations.Instances.Upgrade
+-- 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)
+--
+-- Upgrade a single Data Fusion instance. At the end of an operation
+-- instance is fully upgraded.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.instances.upgrade@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Instances.Upgrade
+    (
+    -- * REST Resource
+      ProjectsLocationsInstancesUpgradeResource
+
+    -- * Creating a Request
+    , projectsLocationsInstancesUpgrade
+    , ProjectsLocationsInstancesUpgrade
+
+    -- * Request Lenses
+    , pliuXgafv
+    , pliuUploadProtocol
+    , pliuAccessToken
+    , pliuUploadType
+    , pliuPayload
+    , pliuName
+    , pliuCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.instances.upgrade@ method which the
+-- 'ProjectsLocationsInstancesUpgrade' request conforms to.
+type ProjectsLocationsInstancesUpgradeResource =
+     "v1beta1" :>
+       CaptureMode "name" "upgrade" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] UpgradeInstanceRequest :>
+                       Post '[JSON] Operation
+
+-- | Upgrade a single Data Fusion instance. At the end of an operation
+-- instance is fully upgraded.
+--
+-- /See:/ 'projectsLocationsInstancesUpgrade' smart constructor.
+data ProjectsLocationsInstancesUpgrade =
+  ProjectsLocationsInstancesUpgrade'
+    { _pliuXgafv          :: !(Maybe Xgafv)
+    , _pliuUploadProtocol :: !(Maybe Text)
+    , _pliuAccessToken    :: !(Maybe Text)
+    , _pliuUploadType     :: !(Maybe Text)
+    , _pliuPayload        :: !UpgradeInstanceRequest
+    , _pliuName           :: !Text
+    , _pliuCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsInstancesUpgrade' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pliuXgafv'
+--
+-- * 'pliuUploadProtocol'
+--
+-- * 'pliuAccessToken'
+--
+-- * 'pliuUploadType'
+--
+-- * 'pliuPayload'
+--
+-- * 'pliuName'
+--
+-- * 'pliuCallback'
+projectsLocationsInstancesUpgrade
+    :: UpgradeInstanceRequest -- ^ 'pliuPayload'
+    -> Text -- ^ 'pliuName'
+    -> ProjectsLocationsInstancesUpgrade
+projectsLocationsInstancesUpgrade pPliuPayload_ pPliuName_ =
+  ProjectsLocationsInstancesUpgrade'
+    { _pliuXgafv = Nothing
+    , _pliuUploadProtocol = Nothing
+    , _pliuAccessToken = Nothing
+    , _pliuUploadType = Nothing
+    , _pliuPayload = pPliuPayload_
+    , _pliuName = pPliuName_
+    , _pliuCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pliuXgafv :: Lens' ProjectsLocationsInstancesUpgrade (Maybe Xgafv)
+pliuXgafv
+  = lens _pliuXgafv (\ s a -> s{_pliuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pliuUploadProtocol :: Lens' ProjectsLocationsInstancesUpgrade (Maybe Text)
+pliuUploadProtocol
+  = lens _pliuUploadProtocol
+      (\ s a -> s{_pliuUploadProtocol = a})
+
+-- | OAuth access token.
+pliuAccessToken :: Lens' ProjectsLocationsInstancesUpgrade (Maybe Text)
+pliuAccessToken
+  = lens _pliuAccessToken
+      (\ s a -> s{_pliuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pliuUploadType :: Lens' ProjectsLocationsInstancesUpgrade (Maybe Text)
+pliuUploadType
+  = lens _pliuUploadType
+      (\ s a -> s{_pliuUploadType = a})
+
+-- | Multipart request metadata.
+pliuPayload :: Lens' ProjectsLocationsInstancesUpgrade UpgradeInstanceRequest
+pliuPayload
+  = lens _pliuPayload (\ s a -> s{_pliuPayload = a})
+
+-- | Name of the Data Fusion instance which need to be upgraded in the form
+-- of projects\/{project}\/locations\/{location}\/instances\/{instance}
+-- Instance will be upgraded with the latest stable version of the Data
+-- Fusion.
+pliuName :: Lens' ProjectsLocationsInstancesUpgrade Text
+pliuName = lens _pliuName (\ s a -> s{_pliuName = a})
+
+-- | JSONP
+pliuCallback :: Lens' ProjectsLocationsInstancesUpgrade (Maybe Text)
+pliuCallback
+  = lens _pliuCallback (\ s a -> s{_pliuCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsInstancesUpgrade
+         where
+        type Rs ProjectsLocationsInstancesUpgrade = Operation
+        type Scopes ProjectsLocationsInstancesUpgrade =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsInstancesUpgrade'{..}
+          = go _pliuName _pliuXgafv _pliuUploadProtocol
+              _pliuAccessToken
+              _pliuUploadType
+              _pliuCallback
+              (Just AltJSON)
+              _pliuPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsInstancesUpgradeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/List.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/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.DataFusion.Projects.Locations.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 the supported locations for this service.
+--
+-- /See:/ <https://cloud.google.com/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.list@.
+module Network.Google.Resource.DataFusion.Projects.Locations.List
+    (
+    -- * REST Resource
+      ProjectsLocationsListResource
+
+    -- * Creating a Request
+    , projectsLocationsList
+    , ProjectsLocationsList
+
+    -- * Request Lenses
+    , pllXgafv
+    , pllUploadProtocol
+    , pllAccessToken
+    , pllUploadType
+    , pllName
+    , pllFilter
+    , pllPageToken
+    , pllPageSize
+    , pllCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.list@ method which the
+-- 'ProjectsLocationsList' request conforms to.
+type ProjectsLocationsListResource =
+     "v1beta1" :>
+       Capture "name" Text :>
+         "locations" :>
+           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] ListLocationsResponse
+
+-- | Lists information about the supported locations for this service.
+--
+-- /See:/ 'projectsLocationsList' smart constructor.
+data ProjectsLocationsList =
+  ProjectsLocationsList'
+    { _pllXgafv          :: !(Maybe Xgafv)
+    , _pllUploadProtocol :: !(Maybe Text)
+    , _pllAccessToken    :: !(Maybe Text)
+    , _pllUploadType     :: !(Maybe Text)
+    , _pllName           :: !Text
+    , _pllFilter         :: !(Maybe Text)
+    , _pllPageToken      :: !(Maybe Text)
+    , _pllPageSize       :: !(Maybe (Textual Int32))
+    , _pllCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pllXgafv'
+--
+-- * 'pllUploadProtocol'
+--
+-- * 'pllAccessToken'
+--
+-- * 'pllUploadType'
+--
+-- * 'pllName'
+--
+-- * 'pllFilter'
+--
+-- * 'pllPageToken'
+--
+-- * 'pllPageSize'
+--
+-- * 'pllCallback'
+projectsLocationsList
+    :: Text -- ^ 'pllName'
+    -> ProjectsLocationsList
+projectsLocationsList pPllName_ =
+  ProjectsLocationsList'
+    { _pllXgafv = Nothing
+    , _pllUploadProtocol = Nothing
+    , _pllAccessToken = Nothing
+    , _pllUploadType = Nothing
+    , _pllName = pPllName_
+    , _pllFilter = Nothing
+    , _pllPageToken = Nothing
+    , _pllPageSize = Nothing
+    , _pllCallback = Nothing
+    }
+
+
+-- | V1 error format.
+pllXgafv :: Lens' ProjectsLocationsList (Maybe Xgafv)
+pllXgafv = lens _pllXgafv (\ s a -> s{_pllXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pllUploadProtocol :: Lens' ProjectsLocationsList (Maybe Text)
+pllUploadProtocol
+  = lens _pllUploadProtocol
+      (\ s a -> s{_pllUploadProtocol = a})
+
+-- | OAuth access token.
+pllAccessToken :: Lens' ProjectsLocationsList (Maybe Text)
+pllAccessToken
+  = lens _pllAccessToken
+      (\ s a -> s{_pllAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pllUploadType :: Lens' ProjectsLocationsList (Maybe Text)
+pllUploadType
+  = lens _pllUploadType
+      (\ s a -> s{_pllUploadType = a})
+
+-- | The resource that owns the locations collection, if applicable.
+pllName :: Lens' ProjectsLocationsList Text
+pllName = lens _pllName (\ s a -> s{_pllName = a})
+
+-- | The standard list filter.
+pllFilter :: Lens' ProjectsLocationsList (Maybe Text)
+pllFilter
+  = lens _pllFilter (\ s a -> s{_pllFilter = a})
+
+-- | The standard list page token.
+pllPageToken :: Lens' ProjectsLocationsList (Maybe Text)
+pllPageToken
+  = lens _pllPageToken (\ s a -> s{_pllPageToken = a})
+
+-- | The standard list page size.
+pllPageSize :: Lens' ProjectsLocationsList (Maybe Int32)
+pllPageSize
+  = lens _pllPageSize (\ s a -> s{_pllPageSize = a}) .
+      mapping _Coerce
+
+-- | JSONP
+pllCallback :: Lens' ProjectsLocationsList (Maybe Text)
+pllCallback
+  = lens _pllCallback (\ s a -> s{_pllCallback = a})
+
+instance GoogleRequest ProjectsLocationsList where
+        type Rs ProjectsLocationsList = ListLocationsResponse
+        type Scopes ProjectsLocationsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsList'{..}
+          = go _pllName _pllXgafv _pllUploadProtocol
+              _pllAccessToken
+              _pllUploadType
+              _pllFilter
+              _pllPageToken
+              _pllPageSize
+              _pllCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Cancel.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Cancel.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.DataFusion.Projects.Locations.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/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.operations.cancel@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Operations.Cancel
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsCancelResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsCancel
+    , ProjectsLocationsOperationsCancel
+
+    -- * Request Lenses
+    , plocXgafv
+    , plocUploadProtocol
+    , plocAccessToken
+    , plocUploadType
+    , plocPayload
+    , plocName
+    , plocCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.operations.cancel@ method which the
+-- 'ProjectsLocationsOperationsCancel' request conforms to.
+type ProjectsLocationsOperationsCancelResource =
+     "v1beta1" :>
+       CaptureMode "name" "cancel" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] CancelOperationRequest :>
+                       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:/ 'projectsLocationsOperationsCancel' smart constructor.
+data ProjectsLocationsOperationsCancel =
+  ProjectsLocationsOperationsCancel'
+    { _plocXgafv          :: !(Maybe Xgafv)
+    , _plocUploadProtocol :: !(Maybe Text)
+    , _plocAccessToken    :: !(Maybe Text)
+    , _plocUploadType     :: !(Maybe Text)
+    , _plocPayload        :: !CancelOperationRequest
+    , _plocName           :: !Text
+    , _plocCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsOperationsCancel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plocXgafv'
+--
+-- * 'plocUploadProtocol'
+--
+-- * 'plocAccessToken'
+--
+-- * 'plocUploadType'
+--
+-- * 'plocPayload'
+--
+-- * 'plocName'
+--
+-- * 'plocCallback'
+projectsLocationsOperationsCancel
+    :: CancelOperationRequest -- ^ 'plocPayload'
+    -> Text -- ^ 'plocName'
+    -> ProjectsLocationsOperationsCancel
+projectsLocationsOperationsCancel pPlocPayload_ pPlocName_ =
+  ProjectsLocationsOperationsCancel'
+    { _plocXgafv = Nothing
+    , _plocUploadProtocol = Nothing
+    , _plocAccessToken = Nothing
+    , _plocUploadType = Nothing
+    , _plocPayload = pPlocPayload_
+    , _plocName = pPlocName_
+    , _plocCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plocXgafv :: Lens' ProjectsLocationsOperationsCancel (Maybe Xgafv)
+plocXgafv
+  = lens _plocXgafv (\ s a -> s{_plocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plocUploadProtocol :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocUploadProtocol
+  = lens _plocUploadProtocol
+      (\ s a -> s{_plocUploadProtocol = a})
+
+-- | OAuth access token.
+plocAccessToken :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocAccessToken
+  = lens _plocAccessToken
+      (\ s a -> s{_plocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plocUploadType :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocUploadType
+  = lens _plocUploadType
+      (\ s a -> s{_plocUploadType = a})
+
+-- | Multipart request metadata.
+plocPayload :: Lens' ProjectsLocationsOperationsCancel CancelOperationRequest
+plocPayload
+  = lens _plocPayload (\ s a -> s{_plocPayload = a})
+
+-- | The name of the operation resource to be cancelled.
+plocName :: Lens' ProjectsLocationsOperationsCancel Text
+plocName = lens _plocName (\ s a -> s{_plocName = a})
+
+-- | JSONP
+plocCallback :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocCallback
+  = lens _plocCallback (\ s a -> s{_plocCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsOperationsCancel
+         where
+        type Rs ProjectsLocationsOperationsCancel = Empty
+        type Scopes ProjectsLocationsOperationsCancel =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsCancel'{..}
+          = go _plocName _plocXgafv _plocUploadProtocol
+              _plocAccessToken
+              _plocUploadType
+              _plocCallback
+              (Just AltJSON)
+              _plocPayload
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsCancelResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Delete.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Delete.hs
@@ -0,0 +1,158 @@
+{-# 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.DataFusion.Projects.Locations.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/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.operations.delete@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Operations.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsDelete
+    , ProjectsLocationsOperationsDelete
+
+    -- * Request Lenses
+    , plodXgafv
+    , plodUploadProtocol
+    , plodAccessToken
+    , plodUploadType
+    , plodName
+    , plodCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.operations.delete@ method which the
+-- 'ProjectsLocationsOperationsDelete' request conforms to.
+type ProjectsLocationsOperationsDeleteResource =
+     "v1beta1" :>
+       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:/ 'projectsLocationsOperationsDelete' smart constructor.
+data ProjectsLocationsOperationsDelete =
+  ProjectsLocationsOperationsDelete'
+    { _plodXgafv          :: !(Maybe Xgafv)
+    , _plodUploadProtocol :: !(Maybe Text)
+    , _plodAccessToken    :: !(Maybe Text)
+    , _plodUploadType     :: !(Maybe Text)
+    , _plodName           :: !Text
+    , _plodCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsOperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plodXgafv'
+--
+-- * 'plodUploadProtocol'
+--
+-- * 'plodAccessToken'
+--
+-- * 'plodUploadType'
+--
+-- * 'plodName'
+--
+-- * 'plodCallback'
+projectsLocationsOperationsDelete
+    :: Text -- ^ 'plodName'
+    -> ProjectsLocationsOperationsDelete
+projectsLocationsOperationsDelete pPlodName_ =
+  ProjectsLocationsOperationsDelete'
+    { _plodXgafv = Nothing
+    , _plodUploadProtocol = Nothing
+    , _plodAccessToken = Nothing
+    , _plodUploadType = Nothing
+    , _plodName = pPlodName_
+    , _plodCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plodXgafv :: Lens' ProjectsLocationsOperationsDelete (Maybe Xgafv)
+plodXgafv
+  = lens _plodXgafv (\ s a -> s{_plodXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plodUploadProtocol :: Lens' ProjectsLocationsOperationsDelete (Maybe Text)
+plodUploadProtocol
+  = lens _plodUploadProtocol
+      (\ s a -> s{_plodUploadProtocol = a})
+
+-- | OAuth access token.
+plodAccessToken :: Lens' ProjectsLocationsOperationsDelete (Maybe Text)
+plodAccessToken
+  = lens _plodAccessToken
+      (\ s a -> s{_plodAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plodUploadType :: Lens' ProjectsLocationsOperationsDelete (Maybe Text)
+plodUploadType
+  = lens _plodUploadType
+      (\ s a -> s{_plodUploadType = a})
+
+-- | The name of the operation resource to be deleted.
+plodName :: Lens' ProjectsLocationsOperationsDelete Text
+plodName = lens _plodName (\ s a -> s{_plodName = a})
+
+-- | JSONP
+plodCallback :: Lens' ProjectsLocationsOperationsDelete (Maybe Text)
+plodCallback
+  = lens _plodCallback (\ s a -> s{_plodCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsOperationsDelete
+         where
+        type Rs ProjectsLocationsOperationsDelete = Empty
+        type Scopes ProjectsLocationsOperationsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsDelete'{..}
+          = go _plodName _plodXgafv _plodUploadProtocol
+              _plodAccessToken
+              _plodUploadType
+              _plodCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Get.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/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.DataFusion.Projects.Locations.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/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.operations.get@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Operations.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsGetResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsGet
+    , ProjectsLocationsOperationsGet
+
+    -- * Request Lenses
+    , plogXgafv
+    , plogUploadProtocol
+    , plogAccessToken
+    , plogUploadType
+    , plogName
+    , plogCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.operations.get@ method which the
+-- 'ProjectsLocationsOperationsGet' request conforms to.
+type ProjectsLocationsOperationsGetResource =
+     "v1beta1" :>
+       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:/ 'projectsLocationsOperationsGet' smart constructor.
+data ProjectsLocationsOperationsGet =
+  ProjectsLocationsOperationsGet'
+    { _plogXgafv          :: !(Maybe Xgafv)
+    , _plogUploadProtocol :: !(Maybe Text)
+    , _plogAccessToken    :: !(Maybe Text)
+    , _plogUploadType     :: !(Maybe Text)
+    , _plogName           :: !Text
+    , _plogCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plogXgafv'
+--
+-- * 'plogUploadProtocol'
+--
+-- * 'plogAccessToken'
+--
+-- * 'plogUploadType'
+--
+-- * 'plogName'
+--
+-- * 'plogCallback'
+projectsLocationsOperationsGet
+    :: Text -- ^ 'plogName'
+    -> ProjectsLocationsOperationsGet
+projectsLocationsOperationsGet pPlogName_ =
+  ProjectsLocationsOperationsGet'
+    { _plogXgafv = Nothing
+    , _plogUploadProtocol = Nothing
+    , _plogAccessToken = Nothing
+    , _plogUploadType = Nothing
+    , _plogName = pPlogName_
+    , _plogCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plogXgafv :: Lens' ProjectsLocationsOperationsGet (Maybe Xgafv)
+plogXgafv
+  = lens _plogXgafv (\ s a -> s{_plogXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plogUploadProtocol :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogUploadProtocol
+  = lens _plogUploadProtocol
+      (\ s a -> s{_plogUploadProtocol = a})
+
+-- | OAuth access token.
+plogAccessToken :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogAccessToken
+  = lens _plogAccessToken
+      (\ s a -> s{_plogAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plogUploadType :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogUploadType
+  = lens _plogUploadType
+      (\ s a -> s{_plogUploadType = a})
+
+-- | The name of the operation resource.
+plogName :: Lens' ProjectsLocationsOperationsGet Text
+plogName = lens _plogName (\ s a -> s{_plogName = a})
+
+-- | JSONP
+plogCallback :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogCallback
+  = lens _plogCallback (\ s a -> s{_plogCallback = a})
+
+instance GoogleRequest ProjectsLocationsOperationsGet
+         where
+        type Rs ProjectsLocationsOperationsGet = Operation
+        type Scopes ProjectsLocationsOperationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsGet'{..}
+          = go _plogName _plogXgafv _plogUploadProtocol
+              _plogAccessToken
+              _plogUploadType
+              _plogCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/List.hs b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/DataFusion/Projects/Locations/Operations/List.hs
@@ -0,0 +1,211 @@
+{-# 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.DataFusion.Projects.Locations.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/data-fusion/docs Cloud Data Fusion API Reference> for @datafusion.projects.locations.operations.list@.
+module Network.Google.Resource.DataFusion.Projects.Locations.Operations.List
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsListResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsList
+    , ProjectsLocationsOperationsList
+
+    -- * Request Lenses
+    , plolXgafv
+    , plolUploadProtocol
+    , plolAccessToken
+    , plolUploadType
+    , plolName
+    , plolFilter
+    , plolPageToken
+    , plolPageSize
+    , plolCallback
+    ) where
+
+import           Network.Google.DataFusion.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @datafusion.projects.locations.operations.list@ method which the
+-- 'ProjectsLocationsOperationsList' request conforms to.
+type ProjectsLocationsOperationsListResource =
+     "v1beta1" :>
+       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:/ 'projectsLocationsOperationsList' smart constructor.
+data ProjectsLocationsOperationsList =
+  ProjectsLocationsOperationsList'
+    { _plolXgafv          :: !(Maybe Xgafv)
+    , _plolUploadProtocol :: !(Maybe Text)
+    , _plolAccessToken    :: !(Maybe Text)
+    , _plolUploadType     :: !(Maybe Text)
+    , _plolName           :: !Text
+    , _plolFilter         :: !(Maybe Text)
+    , _plolPageToken      :: !(Maybe Text)
+    , _plolPageSize       :: !(Maybe (Textual Int32))
+    , _plolCallback       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ProjectsLocationsOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plolXgafv'
+--
+-- * 'plolUploadProtocol'
+--
+-- * 'plolAccessToken'
+--
+-- * 'plolUploadType'
+--
+-- * 'plolName'
+--
+-- * 'plolFilter'
+--
+-- * 'plolPageToken'
+--
+-- * 'plolPageSize'
+--
+-- * 'plolCallback'
+projectsLocationsOperationsList
+    :: Text -- ^ 'plolName'
+    -> ProjectsLocationsOperationsList
+projectsLocationsOperationsList pPlolName_ =
+  ProjectsLocationsOperationsList'
+    { _plolXgafv = Nothing
+    , _plolUploadProtocol = Nothing
+    , _plolAccessToken = Nothing
+    , _plolUploadType = Nothing
+    , _plolName = pPlolName_
+    , _plolFilter = Nothing
+    , _plolPageToken = Nothing
+    , _plolPageSize = Nothing
+    , _plolCallback = Nothing
+    }
+
+
+-- | V1 error format.
+plolXgafv :: Lens' ProjectsLocationsOperationsList (Maybe Xgafv)
+plolXgafv
+  = lens _plolXgafv (\ s a -> s{_plolXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plolUploadProtocol :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolUploadProtocol
+  = lens _plolUploadProtocol
+      (\ s a -> s{_plolUploadProtocol = a})
+
+-- | OAuth access token.
+plolAccessToken :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolAccessToken
+  = lens _plolAccessToken
+      (\ s a -> s{_plolAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plolUploadType :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolUploadType
+  = lens _plolUploadType
+      (\ s a -> s{_plolUploadType = a})
+
+-- | The name of the operation\'s parent resource.
+plolName :: Lens' ProjectsLocationsOperationsList Text
+plolName = lens _plolName (\ s a -> s{_plolName = a})
+
+-- | The standard list filter.
+plolFilter :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolFilter
+  = lens _plolFilter (\ s a -> s{_plolFilter = a})
+
+-- | The standard list page token.
+plolPageToken :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolPageToken
+  = lens _plolPageToken
+      (\ s a -> s{_plolPageToken = a})
+
+-- | The standard list page size.
+plolPageSize :: Lens' ProjectsLocationsOperationsList (Maybe Int32)
+plolPageSize
+  = lens _plolPageSize (\ s a -> s{_plolPageSize = a})
+      . mapping _Coerce
+
+-- | JSONP
+plolCallback :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolCallback
+  = lens _plolCallback (\ s a -> s{_plolCallback = a})
+
+instance GoogleRequest
+           ProjectsLocationsOperationsList
+         where
+        type Rs ProjectsLocationsOperationsList =
+             ListOperationsResponse
+        type Scopes ProjectsLocationsOperationsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsList'{..}
+          = go _plolName _plolXgafv _plolUploadProtocol
+              _plolAccessToken
+              _plolUploadType
+              _plolFilter
+              _plolPageToken
+              _plolPageSize
+              _plolCallback
+              (Just AltJSON)
+              dataFusionService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsListResource)
+                      mempty
diff --git a/gogol-datafusion.cabal b/gogol-datafusion.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-datafusion.cabal
@@ -0,0 +1,67 @@
+name:                  gogol-datafusion
+version:               0.5.0
+synopsis:              Google Cloud Data Fusion 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:
+    Cloud Data Fusion is a fully-managed, cloud native, enterprise data
+    integration service for quickly building and managing data pipelines. It
+    provides a graphical interface to increase time efficiency and reduce
+    complexity, and allows business users, developers, and data scientists
+    to easily and reliably build scalable data integration solutions to
+    cleanse, prepare, blend, transfer and transform data without having to
+    wrestle with infrastructure.
+    .
+    /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 @v1beta1@
+    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.DataFusion
+        , Network.Google.DataFusion.Types
+        , Network.Google.Resource.DataFusion.Projects.Locations.Get
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.Create
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.Delete
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.Get
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.GetIAMPolicy
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.List
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.Patch
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.Restart
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.SetIAMPolicy
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.TestIAMPermissions
+        , Network.Google.Resource.DataFusion.Projects.Locations.Instances.Upgrade
+        , Network.Google.Resource.DataFusion.Projects.Locations.List
+        , Network.Google.Resource.DataFusion.Projects.Locations.Operations.Cancel
+        , Network.Google.Resource.DataFusion.Projects.Locations.Operations.Delete
+        , Network.Google.Resource.DataFusion.Projects.Locations.Operations.Get
+        , Network.Google.Resource.DataFusion.Projects.Locations.Operations.List
+
+    other-modules:
+          Network.Google.DataFusion.Types.Product
+        , Network.Google.DataFusion.Types.Sum
+
+    build-depends:
+          gogol-core == 0.5.0.*
+        , base       >= 4.7 && < 5
diff --git a/src/.gitkeep b/src/.gitkeep
new file mode 100644
--- /dev/null
+++ b/src/.gitkeep
