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-compute
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Compute Engine.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`gogol-compute` 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/Compute.hs b/gen/Network/Google/Compute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Compute.hs
@@ -0,0 +1,2802 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.Compute
+-- Copyright   : (c) 2015 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)
+--
+-- API for the Google Compute Engine service.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference>
+module Network.Google.Compute
+    (
+    -- * Service Configuration
+      computeService
+
+    -- * API Declaration
+    , ComputeAPI
+
+    -- * Resources
+
+    -- ** compute.addresses.aggregatedList
+    , module Network.Google.Resource.Compute.Addresses.AggregatedList
+
+    -- ** compute.addresses.delete
+    , module Network.Google.Resource.Compute.Addresses.Delete
+
+    -- ** compute.addresses.get
+    , module Network.Google.Resource.Compute.Addresses.Get
+
+    -- ** compute.addresses.insert
+    , module Network.Google.Resource.Compute.Addresses.Insert
+
+    -- ** compute.addresses.list
+    , module Network.Google.Resource.Compute.Addresses.List
+
+    -- ** compute.autoscalers.aggregatedList
+    , module Network.Google.Resource.Compute.Autoscalers.AggregatedList
+
+    -- ** compute.autoscalers.delete
+    , module Network.Google.Resource.Compute.Autoscalers.Delete
+
+    -- ** compute.autoscalers.get
+    , module Network.Google.Resource.Compute.Autoscalers.Get
+
+    -- ** compute.autoscalers.insert
+    , module Network.Google.Resource.Compute.Autoscalers.Insert
+
+    -- ** compute.autoscalers.list
+    , module Network.Google.Resource.Compute.Autoscalers.List
+
+    -- ** compute.autoscalers.patch
+    , module Network.Google.Resource.Compute.Autoscalers.Patch
+
+    -- ** compute.autoscalers.update
+    , module Network.Google.Resource.Compute.Autoscalers.Update
+
+    -- ** compute.backendServices.delete
+    , module Network.Google.Resource.Compute.BackendServices.Delete
+
+    -- ** compute.backendServices.get
+    , module Network.Google.Resource.Compute.BackendServices.Get
+
+    -- ** compute.backendServices.getHealth
+    , module Network.Google.Resource.Compute.BackendServices.GetHealth
+
+    -- ** compute.backendServices.insert
+    , module Network.Google.Resource.Compute.BackendServices.Insert
+
+    -- ** compute.backendServices.list
+    , module Network.Google.Resource.Compute.BackendServices.List
+
+    -- ** compute.backendServices.patch
+    , module Network.Google.Resource.Compute.BackendServices.Patch
+
+    -- ** compute.backendServices.update
+    , module Network.Google.Resource.Compute.BackendServices.Update
+
+    -- ** compute.diskTypes.aggregatedList
+    , module Network.Google.Resource.Compute.DiskTypes.AggregatedList
+
+    -- ** compute.diskTypes.get
+    , module Network.Google.Resource.Compute.DiskTypes.Get
+
+    -- ** compute.diskTypes.list
+    , module Network.Google.Resource.Compute.DiskTypes.List
+
+    -- ** compute.disks.aggregatedList
+    , module Network.Google.Resource.Compute.Disks.AggregatedList
+
+    -- ** compute.disks.createSnapshot
+    , module Network.Google.Resource.Compute.Disks.CreateSnapshot
+
+    -- ** compute.disks.delete
+    , module Network.Google.Resource.Compute.Disks.Delete
+
+    -- ** compute.disks.get
+    , module Network.Google.Resource.Compute.Disks.Get
+
+    -- ** compute.disks.insert
+    , module Network.Google.Resource.Compute.Disks.Insert
+
+    -- ** compute.disks.list
+    , module Network.Google.Resource.Compute.Disks.List
+
+    -- ** compute.firewalls.delete
+    , module Network.Google.Resource.Compute.Firewalls.Delete
+
+    -- ** compute.firewalls.get
+    , module Network.Google.Resource.Compute.Firewalls.Get
+
+    -- ** compute.firewalls.insert
+    , module Network.Google.Resource.Compute.Firewalls.Insert
+
+    -- ** compute.firewalls.list
+    , module Network.Google.Resource.Compute.Firewalls.List
+
+    -- ** compute.firewalls.patch
+    , module Network.Google.Resource.Compute.Firewalls.Patch
+
+    -- ** compute.firewalls.update
+    , module Network.Google.Resource.Compute.Firewalls.Update
+
+    -- ** compute.forwardingRules.aggregatedList
+    , module Network.Google.Resource.Compute.ForwardingRules.AggregatedList
+
+    -- ** compute.forwardingRules.delete
+    , module Network.Google.Resource.Compute.ForwardingRules.Delete
+
+    -- ** compute.forwardingRules.get
+    , module Network.Google.Resource.Compute.ForwardingRules.Get
+
+    -- ** compute.forwardingRules.insert
+    , module Network.Google.Resource.Compute.ForwardingRules.Insert
+
+    -- ** compute.forwardingRules.list
+    , module Network.Google.Resource.Compute.ForwardingRules.List
+
+    -- ** compute.forwardingRules.setTarget
+    , module Network.Google.Resource.Compute.ForwardingRules.SetTarget
+
+    -- ** compute.globalAddresses.delete
+    , module Network.Google.Resource.Compute.GlobalAddresses.Delete
+
+    -- ** compute.globalAddresses.get
+    , module Network.Google.Resource.Compute.GlobalAddresses.Get
+
+    -- ** compute.globalAddresses.insert
+    , module Network.Google.Resource.Compute.GlobalAddresses.Insert
+
+    -- ** compute.globalAddresses.list
+    , module Network.Google.Resource.Compute.GlobalAddresses.List
+
+    -- ** compute.globalForwardingRules.delete
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.Delete
+
+    -- ** compute.globalForwardingRules.get
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.Get
+
+    -- ** compute.globalForwardingRules.insert
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.Insert
+
+    -- ** compute.globalForwardingRules.list
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.List
+
+    -- ** compute.globalForwardingRules.setTarget
+    , module Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
+
+    -- ** compute.globalOperations.aggregatedList
+    , module Network.Google.Resource.Compute.GlobalOperations.AggregatedList
+
+    -- ** compute.globalOperations.delete
+    , module Network.Google.Resource.Compute.GlobalOperations.Delete
+
+    -- ** compute.globalOperations.get
+    , module Network.Google.Resource.Compute.GlobalOperations.Get
+
+    -- ** compute.globalOperations.list
+    , module Network.Google.Resource.Compute.GlobalOperations.List
+
+    -- ** compute.httpHealthChecks.delete
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Delete
+
+    -- ** compute.httpHealthChecks.get
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Get
+
+    -- ** compute.httpHealthChecks.insert
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Insert
+
+    -- ** compute.httpHealthChecks.list
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.List
+
+    -- ** compute.httpHealthChecks.patch
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Patch
+
+    -- ** compute.httpHealthChecks.update
+    , module Network.Google.Resource.Compute.HTTPHealthChecks.Update
+
+    -- ** compute.httpsHealthChecks.delete
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
+
+    -- ** compute.httpsHealthChecks.get
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Get
+
+    -- ** compute.httpsHealthChecks.insert
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
+
+    -- ** compute.httpsHealthChecks.list
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.List
+
+    -- ** compute.httpsHealthChecks.patch
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
+
+    -- ** compute.httpsHealthChecks.update
+    , module Network.Google.Resource.Compute.HTTPSHealthChecks.Update
+
+    -- ** compute.images.delete
+    , module Network.Google.Resource.Compute.Images.Delete
+
+    -- ** compute.images.deprecate
+    , module Network.Google.Resource.Compute.Images.Deprecate
+
+    -- ** compute.images.get
+    , module Network.Google.Resource.Compute.Images.Get
+
+    -- ** compute.images.insert
+    , module Network.Google.Resource.Compute.Images.Insert
+
+    -- ** compute.images.list
+    , module Network.Google.Resource.Compute.Images.List
+
+    -- ** compute.instanceGroupManagers.abandonInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
+
+    -- ** compute.instanceGroupManagers.aggregatedList
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
+
+    -- ** compute.instanceGroupManagers.delete
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Delete
+
+    -- ** compute.instanceGroupManagers.deleteInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
+
+    -- ** compute.instanceGroupManagers.get
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Get
+
+    -- ** compute.instanceGroupManagers.insert
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Insert
+
+    -- ** compute.instanceGroupManagers.list
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.List
+
+    -- ** compute.instanceGroupManagers.listManagedInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+
+    -- ** compute.instanceGroupManagers.recreateInstances
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
+
+    -- ** compute.instanceGroupManagers.resize
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.Resize
+
+    -- ** compute.instanceGroupManagers.setInstanceTemplate
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
+
+    -- ** compute.instanceGroupManagers.setTargetPools
+    , module Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
+
+    -- ** compute.instanceGroups.addInstances
+    , module Network.Google.Resource.Compute.InstanceGroups.AddInstances
+
+    -- ** compute.instanceGroups.aggregatedList
+    , module Network.Google.Resource.Compute.InstanceGroups.AggregatedList
+
+    -- ** compute.instanceGroups.delete
+    , module Network.Google.Resource.Compute.InstanceGroups.Delete
+
+    -- ** compute.instanceGroups.get
+    , module Network.Google.Resource.Compute.InstanceGroups.Get
+
+    -- ** compute.instanceGroups.insert
+    , module Network.Google.Resource.Compute.InstanceGroups.Insert
+
+    -- ** compute.instanceGroups.list
+    , module Network.Google.Resource.Compute.InstanceGroups.List
+
+    -- ** compute.instanceGroups.listInstances
+    , module Network.Google.Resource.Compute.InstanceGroups.ListInstances
+
+    -- ** compute.instanceGroups.removeInstances
+    , module Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
+
+    -- ** compute.instanceGroups.setNamedPorts
+    , module Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
+
+    -- ** compute.instanceTemplates.delete
+    , module Network.Google.Resource.Compute.InstanceTemplates.Delete
+
+    -- ** compute.instanceTemplates.get
+    , module Network.Google.Resource.Compute.InstanceTemplates.Get
+
+    -- ** compute.instanceTemplates.insert
+    , module Network.Google.Resource.Compute.InstanceTemplates.Insert
+
+    -- ** compute.instanceTemplates.list
+    , module Network.Google.Resource.Compute.InstanceTemplates.List
+
+    -- ** compute.instances.addAccessConfig
+    , module Network.Google.Resource.Compute.Instances.AddAccessConfig
+
+    -- ** compute.instances.aggregatedList
+    , module Network.Google.Resource.Compute.Instances.AggregatedList
+
+    -- ** compute.instances.attachDisk
+    , module Network.Google.Resource.Compute.Instances.AttachDisk
+
+    -- ** compute.instances.delete
+    , module Network.Google.Resource.Compute.Instances.Delete
+
+    -- ** compute.instances.deleteAccessConfig
+    , module Network.Google.Resource.Compute.Instances.DeleteAccessConfig
+
+    -- ** compute.instances.detachDisk
+    , module Network.Google.Resource.Compute.Instances.DetachDisk
+
+    -- ** compute.instances.get
+    , module Network.Google.Resource.Compute.Instances.Get
+
+    -- ** compute.instances.getSerialPortOutput
+    , module Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+
+    -- ** compute.instances.insert
+    , module Network.Google.Resource.Compute.Instances.Insert
+
+    -- ** compute.instances.list
+    , module Network.Google.Resource.Compute.Instances.List
+
+    -- ** compute.instances.reset
+    , module Network.Google.Resource.Compute.Instances.Reset
+
+    -- ** compute.instances.setDiskAutoDelete
+    , module Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+
+    -- ** compute.instances.setMetadata
+    , module Network.Google.Resource.Compute.Instances.SetMetadata
+
+    -- ** compute.instances.setScheduling
+    , module Network.Google.Resource.Compute.Instances.SetScheduling
+
+    -- ** compute.instances.setTags
+    , module Network.Google.Resource.Compute.Instances.SetTags
+
+    -- ** compute.instances.start
+    , module Network.Google.Resource.Compute.Instances.Start
+
+    -- ** compute.instances.stop
+    , module Network.Google.Resource.Compute.Instances.Stop
+
+    -- ** compute.licenses.get
+    , module Network.Google.Resource.Compute.Licenses.Get
+
+    -- ** compute.machineTypes.aggregatedList
+    , module Network.Google.Resource.Compute.MachineTypes.AggregatedList
+
+    -- ** compute.machineTypes.get
+    , module Network.Google.Resource.Compute.MachineTypes.Get
+
+    -- ** compute.machineTypes.list
+    , module Network.Google.Resource.Compute.MachineTypes.List
+
+    -- ** compute.networks.delete
+    , module Network.Google.Resource.Compute.Networks.Delete
+
+    -- ** compute.networks.get
+    , module Network.Google.Resource.Compute.Networks.Get
+
+    -- ** compute.networks.insert
+    , module Network.Google.Resource.Compute.Networks.Insert
+
+    -- ** compute.networks.list
+    , module Network.Google.Resource.Compute.Networks.List
+
+    -- ** compute.projects.get
+    , module Network.Google.Resource.Compute.Projects.Get
+
+    -- ** compute.projects.moveDisk
+    , module Network.Google.Resource.Compute.Projects.MoveDisk
+
+    -- ** compute.projects.moveInstance
+    , module Network.Google.Resource.Compute.Projects.MoveInstance
+
+    -- ** compute.projects.setCommonInstanceMetadata
+    , module Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+
+    -- ** compute.projects.setUsageExportBucket
+    , module Network.Google.Resource.Compute.Projects.SetUsageExportBucket
+
+    -- ** compute.regionOperations.delete
+    , module Network.Google.Resource.Compute.RegionOperations.Delete
+
+    -- ** compute.regionOperations.get
+    , module Network.Google.Resource.Compute.RegionOperations.Get
+
+    -- ** compute.regionOperations.list
+    , module Network.Google.Resource.Compute.RegionOperations.List
+
+    -- ** compute.regions.get
+    , module Network.Google.Resource.Compute.Regions.Get
+
+    -- ** compute.regions.list
+    , module Network.Google.Resource.Compute.Regions.List
+
+    -- ** compute.routes.delete
+    , module Network.Google.Resource.Compute.Routes.Delete
+
+    -- ** compute.routes.get
+    , module Network.Google.Resource.Compute.Routes.Get
+
+    -- ** compute.routes.insert
+    , module Network.Google.Resource.Compute.Routes.Insert
+
+    -- ** compute.routes.list
+    , module Network.Google.Resource.Compute.Routes.List
+
+    -- ** compute.snapshots.delete
+    , module Network.Google.Resource.Compute.Snapshots.Delete
+
+    -- ** compute.snapshots.get
+    , module Network.Google.Resource.Compute.Snapshots.Get
+
+    -- ** compute.snapshots.list
+    , module Network.Google.Resource.Compute.Snapshots.List
+
+    -- ** compute.sslCertificates.delete
+    , module Network.Google.Resource.Compute.SSLCertificates.Delete
+
+    -- ** compute.sslCertificates.get
+    , module Network.Google.Resource.Compute.SSLCertificates.Get
+
+    -- ** compute.sslCertificates.insert
+    , module Network.Google.Resource.Compute.SSLCertificates.Insert
+
+    -- ** compute.sslCertificates.list
+    , module Network.Google.Resource.Compute.SSLCertificates.List
+
+    -- ** compute.targetHttpProxies.delete
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.Delete
+
+    -- ** compute.targetHttpProxies.get
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.Get
+
+    -- ** compute.targetHttpProxies.insert
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.Insert
+
+    -- ** compute.targetHttpProxies.list
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.List
+
+    -- ** compute.targetHttpProxies.setUrlMap
+    , module Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
+
+    -- ** compute.targetHttpsProxies.delete
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
+
+    -- ** compute.targetHttpsProxies.get
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Get
+
+    -- ** compute.targetHttpsProxies.insert
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
+
+    -- ** compute.targetHttpsProxies.list
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.List
+
+    -- ** compute.targetHttpsProxies.setSslCertificates
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+
+    -- ** compute.targetHttpsProxies.setUrlMap
+    , module Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
+
+    -- ** compute.targetInstances.aggregatedList
+    , module Network.Google.Resource.Compute.TargetInstances.AggregatedList
+
+    -- ** compute.targetInstances.delete
+    , module Network.Google.Resource.Compute.TargetInstances.Delete
+
+    -- ** compute.targetInstances.get
+    , module Network.Google.Resource.Compute.TargetInstances.Get
+
+    -- ** compute.targetInstances.insert
+    , module Network.Google.Resource.Compute.TargetInstances.Insert
+
+    -- ** compute.targetInstances.list
+    , module Network.Google.Resource.Compute.TargetInstances.List
+
+    -- ** compute.targetPools.addHealthCheck
+    , module Network.Google.Resource.Compute.TargetPools.AddHealthCheck
+
+    -- ** compute.targetPools.addInstance
+    , module Network.Google.Resource.Compute.TargetPools.AddInstance
+
+    -- ** compute.targetPools.aggregatedList
+    , module Network.Google.Resource.Compute.TargetPools.AggregatedList
+
+    -- ** compute.targetPools.delete
+    , module Network.Google.Resource.Compute.TargetPools.Delete
+
+    -- ** compute.targetPools.get
+    , module Network.Google.Resource.Compute.TargetPools.Get
+
+    -- ** compute.targetPools.getHealth
+    , module Network.Google.Resource.Compute.TargetPools.GetHealth
+
+    -- ** compute.targetPools.insert
+    , module Network.Google.Resource.Compute.TargetPools.Insert
+
+    -- ** compute.targetPools.list
+    , module Network.Google.Resource.Compute.TargetPools.List
+
+    -- ** compute.targetPools.removeHealthCheck
+    , module Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
+
+    -- ** compute.targetPools.removeInstance
+    , module Network.Google.Resource.Compute.TargetPools.RemoveInstance
+
+    -- ** compute.targetPools.setBackup
+    , module Network.Google.Resource.Compute.TargetPools.SetBackup
+
+    -- ** compute.targetVpnGateways.aggregatedList
+    , module Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
+
+    -- ** compute.targetVpnGateways.delete
+    , module Network.Google.Resource.Compute.TargetVPNGateways.Delete
+
+    -- ** compute.targetVpnGateways.get
+    , module Network.Google.Resource.Compute.TargetVPNGateways.Get
+
+    -- ** compute.targetVpnGateways.insert
+    , module Network.Google.Resource.Compute.TargetVPNGateways.Insert
+
+    -- ** compute.targetVpnGateways.list
+    , module Network.Google.Resource.Compute.TargetVPNGateways.List
+
+    -- ** compute.urlMaps.delete
+    , module Network.Google.Resource.Compute.URLMaps.Delete
+
+    -- ** compute.urlMaps.get
+    , module Network.Google.Resource.Compute.URLMaps.Get
+
+    -- ** compute.urlMaps.insert
+    , module Network.Google.Resource.Compute.URLMaps.Insert
+
+    -- ** compute.urlMaps.list
+    , module Network.Google.Resource.Compute.URLMaps.List
+
+    -- ** compute.urlMaps.patch
+    , module Network.Google.Resource.Compute.URLMaps.Patch
+
+    -- ** compute.urlMaps.update
+    , module Network.Google.Resource.Compute.URLMaps.Update
+
+    -- ** compute.urlMaps.validate
+    , module Network.Google.Resource.Compute.URLMaps.Validate
+
+    -- ** compute.vpnTunnels.aggregatedList
+    , module Network.Google.Resource.Compute.VPNTunnels.AggregatedList
+
+    -- ** compute.vpnTunnels.delete
+    , module Network.Google.Resource.Compute.VPNTunnels.Delete
+
+    -- ** compute.vpnTunnels.get
+    , module Network.Google.Resource.Compute.VPNTunnels.Get
+
+    -- ** compute.vpnTunnels.insert
+    , module Network.Google.Resource.Compute.VPNTunnels.Insert
+
+    -- ** compute.vpnTunnels.list
+    , module Network.Google.Resource.Compute.VPNTunnels.List
+
+    -- ** compute.zoneOperations.delete
+    , module Network.Google.Resource.Compute.ZoneOperations.Delete
+
+    -- ** compute.zoneOperations.get
+    , module Network.Google.Resource.Compute.ZoneOperations.Get
+
+    -- ** compute.zoneOperations.list
+    , module Network.Google.Resource.Compute.ZoneOperations.List
+
+    -- ** compute.zones.get
+    , module Network.Google.Resource.Compute.Zones.Get
+
+    -- ** compute.zones.list
+    , module Network.Google.Resource.Compute.Zones.List
+
+    -- * Types
+
+    -- ** TargetHTTPSProxyList
+    , TargetHTTPSProxyList
+    , targetHTTPSProxyList
+    , thplNextPageToken
+    , thplKind
+    , thplItems
+    , thplSelfLink
+    , thplId
+
+    -- ** AddressesScopedList
+    , AddressesScopedList
+    , addressesScopedList
+    , aslAddresses
+    , aslWarning
+
+    -- ** OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- ** SchedulingOnHostMaintenance
+    , SchedulingOnHostMaintenance (..)
+
+    -- ** AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+    , AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType (..)
+
+    -- ** InstanceGroupManagersAbandonInstancesRequest
+    , InstanceGroupManagersAbandonInstancesRequest
+    , instanceGroupManagersAbandonInstancesRequest
+    , igmairInstances
+
+    -- ** MachineTypeAggregatedListItems
+    , MachineTypeAggregatedListItems
+    , machineTypeAggregatedListItems
+    , mtaliAddtional
+
+    -- ** DiskTypeAggregatedListItems
+    , DiskTypeAggregatedListItems
+    , diskTypeAggregatedListItems
+    , dtaliAddtional
+
+    -- ** FirewallList
+    , FirewallList
+    , firewallList
+    , flNextPageToken
+    , flKind
+    , flItems
+    , flSelfLink
+    , flId
+
+    -- ** InstancesScopedListWarning
+    , InstancesScopedListWarning
+    , instancesScopedListWarning
+    , islwData
+    , islwCode
+    , islwMessage
+
+    -- ** InstanceGroupList
+    , InstanceGroupList
+    , instanceGroupList
+    , iglNextPageToken
+    , iglKind
+    , iglItems
+    , iglSelfLink
+    , iglId
+
+    -- ** AutoscalerAggregatedListItems
+    , AutoscalerAggregatedListItems
+    , autoscalerAggregatedListItems
+    , aaliAddtional
+
+    -- ** InstanceGroupManagersSetInstanceTemplateRequest
+    , InstanceGroupManagersSetInstanceTemplateRequest
+    , instanceGroupManagersSetInstanceTemplateRequest
+    , igmsitrInstanceTemplate
+
+    -- ** DeprecationStatus
+    , DeprecationStatus
+    , deprecationStatus
+    , dsState
+    , dsDeleted
+    , dsReplacement
+    , dsObsolete
+    , dsDeprecated
+
+    -- ** OperationWarningsItemCode
+    , OperationWarningsItemCode (..)
+
+    -- ** Snapshot
+    , Snapshot
+    , snapshot
+    , sStorageBytesStatus
+    , sStatus
+    , sDiskSizeGb
+    , sSourceDiskId
+    , sKind
+    , sStorageBytes
+    , sSelfLink
+    , sName
+    , sCreationTimestamp
+    , sId
+    , sLicenses
+    , sSourceDisk
+    , sDescription
+
+    -- ** AutoscalingPolicyCustomMetricUtilization
+    , AutoscalingPolicyCustomMetricUtilization
+    , autoscalingPolicyCustomMetricUtilization
+    , apcmuUtilizationTarget
+    , apcmuMetric
+    , apcmuUtilizationTargetType
+
+    -- ** ForwardingRuleList
+    , ForwardingRuleList
+    , forwardingRuleList
+    , frlNextPageToken
+    , frlKind
+    , frlItems
+    , frlSelfLink
+    , frlId
+
+    -- ** VPNTunnelsScopedList
+    , VPNTunnelsScopedList
+    , vpnTunnelsScopedList
+    , vtslVPNTunnels
+    , vtslWarning
+
+    -- ** BackendServiceProtocol
+    , BackendServiceProtocol (..)
+
+    -- ** InstanceGroupsSetNamedPortsRequest
+    , InstanceGroupsSetNamedPortsRequest
+    , instanceGroupsSetNamedPortsRequest
+    , igsnprFingerprint
+    , igsnprNamedPorts
+
+    -- ** OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olId
+
+    -- ** DiskList
+    , DiskList
+    , diskList
+    , dlNextPageToken
+    , dlKind
+    , dlItems
+    , dlSelfLink
+    , dlId
+
+    -- ** TargetPoolsAddInstanceRequest
+    , TargetPoolsAddInstanceRequest
+    , targetPoolsAddInstanceRequest
+    , tpairInstances
+
+    -- ** InstanceGroupsAddInstancesRequest
+    , InstanceGroupsAddInstancesRequest
+    , instanceGroupsAddInstancesRequest
+    , igairInstances
+
+    -- ** InstanceGroupManagerList
+    , InstanceGroupManagerList
+    , instanceGroupManagerList
+    , igmlNextPageToken
+    , igmlKind
+    , igmlItems
+    , igmlSelfLink
+    , igmlId
+
+    -- ** AttachedDiskType
+    , AttachedDiskType (..)
+
+    -- ** Image
+    , Image
+    , image
+    , iStatus
+    , iDiskSizeGb
+    , iSourceType
+    , iSourceDiskId
+    , iKind
+    , iArchiveSizeBytes
+    , iRawDisk
+    , iSelfLink
+    , iName
+    , iCreationTimestamp
+    , iId
+    , iLicenses
+    , iSourceDisk
+    , iDescription
+    , iDeprecated
+
+    -- ** URLMap
+    , URLMap
+    , urlMap
+    , umTests
+    , umKind
+    , umFingerprint
+    , umDefaultService
+    , umSelfLink
+    , umName
+    , umCreationTimestamp
+    , umPathMatchers
+    , umId
+    , umHostRules
+    , umDescription
+
+    -- ** InstanceGroupAggregatedListItems
+    , InstanceGroupAggregatedListItems
+    , instanceGroupAggregatedListItems
+    , igaliAddtional
+
+    -- ** TargetPoolList
+    , TargetPoolList
+    , targetPoolList
+    , tplNextPageToken
+    , tplKind
+    , tplItems
+    , tplSelfLink
+    , tplId
+
+    -- ** TargetInstanceAggregatedList
+    , TargetInstanceAggregatedList
+    , targetInstanceAggregatedList
+    , tialNextPageToken
+    , tialKind
+    , tialItems
+    , tialSelfLink
+    , tialId
+
+    -- ** DisksScopedList
+    , DisksScopedList
+    , disksScopedList
+    , dslWarning
+    , dslDisks
+
+    -- ** InstanceGroupManagersScopedList
+    , InstanceGroupManagersScopedList
+    , instanceGroupManagersScopedList
+    , igmslWarning
+    , igmslInstanceGroupManagers
+
+    -- ** DiskAggregatedList
+    , DiskAggregatedList
+    , diskAggregatedList
+    , dalNextPageToken
+    , dalKind
+    , dalItems
+    , dalSelfLink
+    , dalId
+
+    -- ** InstanceWithNamedPorts
+    , InstanceWithNamedPorts
+    , instanceWithNamedPorts
+    , iwnpStatus
+    , iwnpNamedPorts
+    , iwnpInstance
+
+    -- ** ForwardingRulesScopedList
+    , ForwardingRulesScopedList
+    , forwardingRulesScopedList
+    , frslWarning
+    , frslForwardingRules
+
+    -- ** InstanceReference
+    , InstanceReference
+    , instanceReference
+    , iInstance
+
+    -- ** OperationAggregatedList
+    , OperationAggregatedList
+    , operationAggregatedList
+    , oalNextPageToken
+    , oalKind
+    , oalItems
+    , oalSelfLink
+    , oalId
+
+    -- ** OperationsScopedList
+    , OperationsScopedList
+    , operationsScopedList
+    , oslWarning
+    , oslOperations
+
+    -- ** NamedPort
+    , NamedPort
+    , namedPort
+    , npName
+    , npPort
+
+    -- ** TargetInstanceList
+    , TargetInstanceList
+    , targetInstanceList
+    , tilNextPageToken
+    , tilKind
+    , tilItems
+    , tilSelfLink
+    , tilId
+
+    -- ** InstanceGroupManagerAggregatedList
+    , InstanceGroupManagerAggregatedList
+    , instanceGroupManagerAggregatedList
+    , igmalNextPageToken
+    , igmalKind
+    , igmalItems
+    , igmalSelfLink
+    , igmalId
+
+    -- ** ImageSourceType
+    , ImageSourceType (..)
+
+    -- ** TargetPoolsScopedList
+    , TargetPoolsScopedList
+    , targetPoolsScopedList
+    , tpslWarning
+    , tpslTargetPools
+
+    -- ** ForwardingRuleAggregatedList
+    , ForwardingRuleAggregatedList
+    , forwardingRuleAggregatedList
+    , fralNextPageToken
+    , fralKind
+    , fralItems
+    , fralSelfLink
+    , fralId
+
+    -- ** TargetReference
+    , TargetReference
+    , targetReference
+    , trTarget
+
+    -- ** TargetPoolAggregatedList
+    , TargetPoolAggregatedList
+    , targetPoolAggregatedList
+    , tpalNextPageToken
+    , tpalKind
+    , tpalItems
+    , tpalSelfLink
+    , tpalId
+
+    -- ** OperationsScopedListWarningDataItem
+    , OperationsScopedListWarningDataItem
+    , operationsScopedListWarningDataItem
+    , oslwdiValue
+    , oslwdiKey
+
+    -- ** TargetPool
+    , TargetPool
+    , targetPool
+    , tpSessionAffinity
+    , tpBackupPool
+    , tpKind
+    , tpSelfLink
+    , tpName
+    , tpCreationTimestamp
+    , tpInstances
+    , tpId
+    , tpFailoverRatio
+    , tpRegion
+    , tpDescription
+    , tpHealthChecks
+
+    -- ** ImageList
+    , ImageList
+    , imageList
+    , ilNextPageToken
+    , ilKind
+    , ilItems
+    , ilSelfLink
+    , ilId
+
+    -- ** VPNTunnelsScopedListWarning
+    , VPNTunnelsScopedListWarning
+    , vpnTunnelsScopedListWarning
+    , vtslwData
+    , vtslwCode
+    , vtslwMessage
+
+    -- ** ForwardingRulesScopedListWarningCode
+    , ForwardingRulesScopedListWarningCode (..)
+
+    -- ** OperationsScopedListWarningCode
+    , OperationsScopedListWarningCode (..)
+
+    -- ** ForwardingRule
+    , ForwardingRule
+    , forwardingRule
+    , frIPAddress
+    , frKind
+    , frPortRange
+    , frSelfLink
+    , frName
+    , frIPProtocol
+    , frCreationTimestamp
+    , frId
+    , frRegion
+    , frDescription
+    , frTarget
+
+    -- ** URLMapList
+    , URLMapList
+    , urlMapList
+    , umlNextPageToken
+    , umlKind
+    , umlItems
+    , umlSelfLink
+    , umlId
+
+    -- ** ForwardingRulesScopedListWarningDataItem
+    , ForwardingRulesScopedListWarningDataItem
+    , forwardingRulesScopedListWarningDataItem
+    , frslwdiValue
+    , frslwdiKey
+
+    -- ** InstanceGroupManagersScopedListWarningDataItem
+    , InstanceGroupManagersScopedListWarningDataItem
+    , instanceGroupManagersScopedListWarningDataItem
+    , igmslwdiValue
+    , igmslwdiKey
+
+    -- ** DisksScopedListWarningCode
+    , DisksScopedListWarningCode (..)
+
+    -- ** Project
+    , Project
+    , project
+    , pKind
+    , pUsageExportLocation
+    , pSelfLink
+    , pName
+    , pCreationTimestamp
+    , pEnabledFeatures
+    , pQuotas
+    , pId
+    , pDescription
+    , pCommonInstanceMetadata
+
+    -- ** Operation
+    , Operation
+    , operation
+    , oTargetId
+    , oStatus
+    , oInsertTime
+    , oProgress
+    , oStartTime
+    , oKind
+    , oError
+    , oHTTPErrorMessage
+    , oZone
+    , oWarnings
+    , oHTTPErrorStatusCode
+    , oUser
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oCreationTimestamp
+    , oEndTime
+    , oId
+    , oOperationType
+    , oRegion
+    , oTargetLink
+    , oClientOperationId
+
+    -- ** DisksScopedListWarningDataItem
+    , DisksScopedListWarningDataItem
+    , disksScopedListWarningDataItem
+    , dslwdiValue
+    , dslwdiKey
+
+    -- ** InstanceGroupManagersScopedListWarningCode
+    , InstanceGroupManagersScopedListWarningCode (..)
+
+    -- ** Disk
+    , Disk
+    , disk
+    , dStatus
+    , dSourceSnapshotId
+    , dLastAttachTimestamp
+    , dUsers
+    , dSourceImage
+    , dSizeGb
+    , dKind
+    , dLastDetachTimestamp
+    , dZone
+    , dSelfLink
+    , dName
+    , dSourceImageId
+    , dCreationTimestamp
+    , dId
+    , dLicenses
+    , dOptions
+    , dType
+    , dDescription
+    , dSourceSnapshot
+
+    -- ** DiskMoveRequest
+    , DiskMoveRequest
+    , diskMoveRequest
+    , dmrTargetDisk
+    , dmrDestinationZone
+
+    -- ** AutoscalingPolicyLoadBalancingUtilization
+    , AutoscalingPolicyLoadBalancingUtilization
+    , autoscalingPolicyLoadBalancingUtilization
+    , aplbuUtilizationTarget
+
+    -- ** TargetPoolsScopedListWarningDataItem
+    , TargetPoolsScopedListWarningDataItem
+    , targetPoolsScopedListWarningDataItem
+    , tpslwdiValue
+    , tpslwdiKey
+
+    -- ** InstanceGroupManager
+    , InstanceGroupManager
+    , instanceGroupManager
+    , igmKind
+    , igmFingerprint
+    , igmBaseInstanceName
+    , igmZone
+    , igmInstanceTemplate
+    , igmTargetSize
+    , igmSelfLink
+    , igmCurrentActions
+    , igmName
+    , igmCreationTimestamp
+    , igmId
+    , igmTargetPools
+    , igmDescription
+    , igmInstanceGroup
+
+    -- ** TargetPoolsScopedListWarningCode
+    , TargetPoolsScopedListWarningCode (..)
+
+    -- ** TargetVPNGatewayStatus
+    , TargetVPNGatewayStatus (..)
+
+    -- ** InstanceGroupsRemoveInstancesRequest
+    , InstanceGroupsRemoveInstancesRequest
+    , instanceGroupsRemoveInstancesRequest
+    , igrirInstances
+
+    -- ** SnapshotStatus
+    , SnapshotStatus (..)
+
+    -- ** RouteWarningsItemDataItem
+    , RouteWarningsItemDataItem
+    , routeWarningsItemDataItem
+    , rwidiValue
+    , rwidiKey
+
+    -- ** TargetInstancesScopedListWarningCode
+    , TargetInstancesScopedListWarningCode (..)
+
+    -- ** InstanceAggregatedListItems
+    , InstanceAggregatedListItems
+    , instanceAggregatedListItems
+    , ialiAddtional
+
+    -- ** AutoscalersScopedListWarning
+    , AutoscalersScopedListWarning
+    , autoscalersScopedListWarning
+    , aslwData
+    , aslwCode
+    , aslwMessage
+
+    -- ** ManagedInstanceLastAttemptErrors
+    , ManagedInstanceLastAttemptErrors
+    , managedInstanceLastAttemptErrors
+    , milaeErrors
+
+    -- ** RouteWarningsItemCode
+    , RouteWarningsItemCode (..)
+
+    -- ** TargetPoolsRemoveInstanceRequest
+    , TargetPoolsRemoveInstanceRequest
+    , targetPoolsRemoveInstanceRequest
+    , tprirInstances
+
+    -- ** TargetInstancesScopedListWarningDataItem
+    , TargetInstancesScopedListWarningDataItem
+    , targetInstancesScopedListWarningDataItem
+    , tislwdiValue
+    , tislwdiKey
+
+    -- ** MachineTypesScopedListWarning
+    , MachineTypesScopedListWarning
+    , machineTypesScopedListWarning
+    , mtslwData
+    , mtslwCode
+    , mtslwMessage
+
+    -- ** TargetInstance
+    , TargetInstance
+    , targetInstance
+    , tiKind
+    , tiNATPolicy
+    , tiZone
+    , tiSelfLink
+    , tiName
+    , tiCreationTimestamp
+    , tiId
+    , tiDescription
+    , tiInstance
+
+    -- ** TargetPoolInstanceHealth
+    , TargetPoolInstanceHealth
+    , targetPoolInstanceHealth
+    , tpihKind
+    , tpihHealthStatus
+
+    -- ** SnapshotStorageBytesStatus
+    , SnapshotStorageBytesStatus (..)
+
+    -- ** InstanceGroupManagersListManagedInstancesResponse
+    , InstanceGroupManagersListManagedInstancesResponse
+    , instanceGroupManagersListManagedInstancesResponse
+    , igmlmirManagedInstances
+
+    -- ** InstanceProperties
+    , InstanceProperties
+    , instanceProperties
+    , ipServiceAccounts
+    , ipNetworkInterfaces
+    , ipMachineType
+    , ipMetadata
+    , ipScheduling
+    , ipDisks
+    , ipCanIPForward
+    , ipDescription
+    , ipTags
+
+    -- ** DiskTypesScopedListWarning
+    , DiskTypesScopedListWarning
+    , diskTypesScopedListWarning
+    , dtslwData
+    , dtslwCode
+    , dtslwMessage
+
+    -- ** AddressesScopedListWarningCode
+    , AddressesScopedListWarningCode (..)
+
+    -- ** AttachedDiskInitializeParams
+    , AttachedDiskInitializeParams
+    , attachedDiskInitializeParams
+    , adipSourceImage
+    , adipDiskSizeGb
+    , adipDiskName
+    , adipDiskType
+
+    -- ** AddressesScopedListWarningDataItem
+    , AddressesScopedListWarningDataItem
+    , addressesScopedListWarningDataItem
+    , aslwdiValue
+    , aslwdiKey
+
+    -- ** ImageStatus
+    , ImageStatus (..)
+
+    -- ** NetworkInterface
+    , NetworkInterface
+    , networkInterface
+    , niNetwork
+    , niName
+    , niNetworkIP
+    , niAccessConfigs
+
+    -- ** TargetPoolsRemoveHealthCheckRequest
+    , TargetPoolsRemoveHealthCheckRequest
+    , targetPoolsRemoveHealthCheckRequest
+    , tprhcrHealthChecks
+
+    -- ** HealthStatusHealthState
+    , HealthStatusHealthState (..)
+
+    -- ** InstanceTemplateList
+    , InstanceTemplateList
+    , instanceTemplateList
+    , itlNextPageToken
+    , itlKind
+    , itlItems
+    , itlSelfLink
+    , itlId
+
+    -- ** RouteList
+    , RouteList
+    , routeList
+    , rlNextPageToken
+    , rlKind
+    , rlItems
+    , rlSelfLink
+    , rlId
+
+    -- ** DeprecationStatusState
+    , DeprecationStatusState (..)
+
+    -- ** ManagedInstanceCurrentAction
+    , ManagedInstanceCurrentAction (..)
+
+    -- ** TargetVPNGatewayList
+    , TargetVPNGatewayList
+    , targetVPNGatewayList
+    , tvglNextPageToken
+    , tvglKind
+    , tvglItems
+    , tvglSelfLink
+    , tvglId
+
+    -- ** TargetInstanceNATPolicy
+    , TargetInstanceNATPolicy (..)
+
+    -- ** SSLCertificateList
+    , SSLCertificateList
+    , sslCertificateList
+    , sclNextPageToken
+    , sclKind
+    , sclItems
+    , sclSelfLink
+    , sclId
+
+    -- ** FirewallAllowedItem
+    , FirewallAllowedItem
+    , firewallAllowedItem
+    , faiIPProtocol
+    , faiPorts
+
+    -- ** Network
+    , Network
+    , network
+    , nKind
+    , nIPv4Range
+    , nSelfLink
+    , nName
+    , nCreationTimestamp
+    , nId
+    , nGatewayIPv4
+    , nDescription
+
+    -- ** AccessConfigType
+    , AccessConfigType (..)
+
+    -- ** AddressesScopedListWarning
+    , AddressesScopedListWarning
+    , addressesScopedListWarning
+    , aData
+    , aCode
+    , aMessage
+
+    -- ** ImageRawDisk
+    , ImageRawDisk
+    , imageRawDisk
+    , irdContainerType
+    , irdSource
+    , irdSha1Checksum
+
+    -- ** InstanceAggregatedList
+    , InstanceAggregatedList
+    , instanceAggregatedList
+    , ialNextPageToken
+    , ialKind
+    , ialItems
+    , ialSelfLink
+    , ialId
+
+    -- ** Address
+    , Address
+    , address
+    , aStatus
+    , aUsers
+    , aKind
+    , aAddress
+    , aSelfLink
+    , aName
+    , aCreationTimestamp
+    , aId
+    , aRegion
+    , aDescription
+
+    -- ** Zone
+    , Zone
+    , zone
+    , zStatus
+    , zMaintenanceWindows
+    , zKind
+    , zSelfLink
+    , zName
+    , zCreationTimestamp
+    , zId
+    , zRegion
+    , zDescription
+    , zDeprecated
+
+    -- ** InstanceGroupManagersRecreateInstancesRequest
+    , InstanceGroupManagersRecreateInstancesRequest
+    , instanceGroupManagersRecreateInstancesRequest
+    , igmrirInstances
+
+    -- ** InstancesScopedList
+    , InstancesScopedList
+    , instancesScopedList
+    , islWarning
+    , islInstances
+
+    -- ** HealthCheckReference
+    , HealthCheckReference
+    , healthCheckReference
+    , hcrHealthCheck
+
+    -- ** TargetInstanceAggregatedListItems
+    , TargetInstanceAggregatedListItems
+    , targetInstanceAggregatedListItems
+    , tialiAddtional
+
+    -- ** InstanceGroupAggregatedList
+    , InstanceGroupAggregatedList
+    , instanceGroupAggregatedList
+    , igalNextPageToken
+    , igalKind
+    , igalItems
+    , igalSelfLink
+    , igalId
+
+    -- ** OperationStatus
+    , OperationStatus (..)
+
+    -- ** Route
+    , Route
+    , route
+    , rPriority
+    , rKind
+    , rNextHopGateway
+    , rNextHopNetwork
+    , rNetwork
+    , rWarnings
+    , rNextHopIP
+    , rDestRange
+    , rSelfLink
+    , rName
+    , rCreationTimestamp
+    , rId
+    , rNextHopVPNTunnel
+    , rDescription
+    , rTags
+    , rNextHopInstance
+
+    -- ** TargetVPNGatewaysScopedListWarningDataItem
+    , TargetVPNGatewaysScopedListWarningDataItem
+    , targetVPNGatewaysScopedListWarningDataItem
+    , tvgslwdiValue
+    , tvgslwdiKey
+
+    -- ** TargetVPNGatewaysScopedListWarningCode
+    , TargetVPNGatewaysScopedListWarningCode (..)
+
+    -- ** TargetHTTPSProxiesSetSSLCertificatesRequest
+    , TargetHTTPSProxiesSetSSLCertificatesRequest
+    , targetHTTPSProxiesSetSSLCertificatesRequest
+    , thpsscrSSLCertificates
+
+    -- ** InstanceTemplate
+    , InstanceTemplate
+    , instanceTemplate
+    , itKind
+    , itSelfLink
+    , itName
+    , itCreationTimestamp
+    , itId
+    , itDescription
+    , itProperties
+
+    -- ** ZoneMaintenanceWindowsItem
+    , ZoneMaintenanceWindowsItem
+    , zoneMaintenanceWindowsItem
+    , zmwiBeginTime
+    , zmwiName
+    , zmwiEndTime
+    , zmwiDescription
+
+    -- ** TargetVPNGateway
+    , TargetVPNGateway
+    , targetVPNGateway
+    , tvgStatus
+    , tvgKind
+    , tvgNetwork
+    , tvgSelfLink
+    , tvgName
+    , tvgCreationTimestamp
+    , tvgId
+    , tvgRegion
+    , tvgTunnels
+    , tvgDescription
+    , tvgForwardingRules
+
+    -- ** DiskStatus
+    , DiskStatus (..)
+
+    -- ** ManagedInstanceInstanceStatus
+    , ManagedInstanceInstanceStatus (..)
+
+    -- ** URLMapsValidateResponse
+    , URLMapsValidateResponse
+    , urlMapsValidateResponse
+    , umvrResult
+
+    -- ** SSLCertificate
+    , SSLCertificate
+    , sslCertificate
+    , scPrivateKey
+    , scKind
+    , scSelfLink
+    , scName
+    , scCreationTimestamp
+    , scId
+    , scCertificate
+    , scDescription
+
+    -- ** URLMapReference
+    , URLMapReference
+    , urlMapReference
+    , umrURLMap
+
+    -- ** AttachedDiskMode
+    , AttachedDiskMode (..)
+
+    -- ** TargetPoolsAddHealthCheckRequest
+    , TargetPoolsAddHealthCheckRequest
+    , targetPoolsAddHealthCheckRequest
+    , tpahcrHealthChecks
+
+    -- ** DiskAggregatedListItems
+    , DiskAggregatedListItems
+    , diskAggregatedListItems
+    , daliAddtional
+
+    -- ** UsageExportLocation
+    , UsageExportLocation
+    , usageExportLocation
+    , uelReportNamePrefix
+    , uelBucketName
+
+    -- ** ZoneList
+    , ZoneList
+    , zoneList
+    , zlNextPageToken
+    , zlKind
+    , zlItems
+    , zlSelfLink
+    , zlId
+
+    -- ** RegionStatus
+    , RegionStatus (..)
+
+    -- ** ManagedInstance
+    , ManagedInstance
+    , managedInstance
+    , miLastAttempt
+    , miCurrentAction
+    , miId
+    , miInstanceStatus
+    , miInstance
+
+    -- ** InstanceGroupManagerAggregatedListItems
+    , InstanceGroupManagerAggregatedListItems
+    , instanceGroupManagerAggregatedListItems
+    , igmaliAddtional
+
+    -- ** InstanceGroupManagersDeleteInstancesRequest
+    , InstanceGroupManagersDeleteInstancesRequest
+    , instanceGroupManagersDeleteInstancesRequest
+    , igmdirInstances
+
+    -- ** Backend
+    , Backend
+    , backend
+    , bGroup
+    , bBalancingMode
+    , bMaxUtilization
+    , bMaxRate
+    , bMaxRatePerInstance
+    , bDescription
+    , bCapacityScaler
+
+    -- ** TargetVPNGatewaysScopedListWarning
+    , TargetVPNGatewaysScopedListWarning
+    , targetVPNGatewaysScopedListWarning
+    , tvgslwData
+    , tvgslwCode
+    , tvgslwMessage
+
+    -- ** AddressList
+    , AddressList
+    , addressList
+    , alNextPageToken
+    , alKind
+    , alItems
+    , alSelfLink
+    , alId
+
+    -- ** ForwardingRuleAggregatedListItems
+    , ForwardingRuleAggregatedListItems
+    , forwardingRuleAggregatedListItems
+    , fraliAddtional
+
+    -- ** OperationAggregatedListItems
+    , OperationAggregatedListItems
+    , operationAggregatedListItems
+    , oaliAddtional
+
+    -- ** InstanceGroupManagerActionsSummary
+    , InstanceGroupManagerActionsSummary
+    , instanceGroupManagerActionsSummary
+    , igmasDeleting
+    , igmasRestarting
+    , igmasNone
+    , igmasCreating
+    , igmasRefreshing
+    , igmasRecreating
+    , igmasAbandoning
+
+    -- ** VPNTunnelStatus
+    , VPNTunnelStatus (..)
+
+    -- ** ServiceAccount
+    , ServiceAccount
+    , serviceAccount
+    , saEmail
+    , saScopes
+
+    -- ** NetworkList
+    , NetworkList
+    , networkList
+    , nlNextPageToken
+    , nlKind
+    , nlItems
+    , nlSelfLink
+    , nlId
+
+    -- ** InstanceGroupsListInstancesRequest
+    , InstanceGroupsListInstancesRequest
+    , instanceGroupsListInstancesRequest
+    , iglirInstanceState
+
+    -- ** BackendBalancingMode
+    , BackendBalancingMode (..)
+
+    -- ** TargetPoolAggregatedListItems
+    , TargetPoolAggregatedListItems
+    , targetPoolAggregatedListItems
+    , tpaliAddtional
+
+    -- ** TargetInstancesScopedList
+    , TargetInstancesScopedList
+    , targetInstancesScopedList
+    , tislWarning
+    , tislTargetInstances
+
+    -- ** AddressAggregatedListItems
+    , AddressAggregatedListItems
+    , addressAggregatedListItems
+    , aAddtional
+
+    -- ** AutoscalerList
+    , AutoscalerList
+    , autoscalerList
+    , autNextPageToken
+    , autKind
+    , autItems
+    , autSelfLink
+    , autId
+
+    -- ** VPNTunnelAggregatedList
+    , VPNTunnelAggregatedList
+    , vpnTunnelAggregatedList
+    , vtalNextPageToken
+    , vtalKind
+    , vtalItems
+    , vtalSelfLink
+    , vtalId
+
+    -- ** AttachedDisk
+    , AttachedDisk
+    , attachedDisk
+    , adKind
+    , adMode
+    , adBoot
+    , adAutoDelete
+    , adInitializeParams
+    , adDeviceName
+    , adInterface
+    , adSource
+    , adLicenses
+    , adType
+    , adIndex
+
+    -- ** DiskTypeList
+    , DiskTypeList
+    , diskTypeList
+    , dtlNextPageToken
+    , dtlKind
+    , dtlItems
+    , dtlSelfLink
+    , dtlId
+
+    -- ** MachineTypeList
+    , MachineTypeList
+    , machineTypeList
+    , mtlNextPageToken
+    , mtlKind
+    , mtlItems
+    , mtlSelfLink
+    , mtlId
+
+    -- ** TargetHTTPProxyList
+    , TargetHTTPProxyList
+    , targetHTTPProxyList
+    , thttpplNextPageToken
+    , thttpplKind
+    , thttpplItems
+    , thttpplSelfLink
+    , thttpplId
+
+    -- ** ForwardingRuleIPProtocol
+    , ForwardingRuleIPProtocol (..)
+
+    -- ** DiskTypesScopedList
+    , DiskTypesScopedList
+    , diskTypesScopedList
+    , dtslDiskTypes
+    , dtslWarning
+
+    -- ** AddressStatus
+    , AddressStatus (..)
+
+    -- ** DiskTypeAggregatedList
+    , DiskTypeAggregatedList
+    , diskTypeAggregatedList
+    , dtalNextPageToken
+    , dtalKind
+    , dtalItems
+    , dtalSelfLink
+    , dtalId
+
+    -- ** HTTPHealthCheck
+    , HTTPHealthCheck
+    , hTTPHealthCheck
+    , httphcHealthyThreshold
+    , httphcKind
+    , httphcRequestPath
+    , httphcSelfLink
+    , httphcCheckIntervalSec
+    , httphcName
+    , httphcCreationTimestamp
+    , httphcId
+    , httphcHost
+    , httphcTimeoutSec
+    , httphcDescription
+    , httphcUnhealthyThreshold
+    , httphcPort
+
+    -- ** BackendServiceGroupHealth
+    , BackendServiceGroupHealth
+    , backendServiceGroupHealth
+    , bsghKind
+    , bsghHealthStatus
+
+    -- ** InstanceGroupsListInstancesRequestInstanceState
+    , InstanceGroupsListInstancesRequestInstanceState (..)
+
+    -- ** AutoscalersScopedList
+    , AutoscalersScopedList
+    , autoscalersScopedList
+    , aAutoscalers
+    , aWarning
+
+    -- ** AutoscalerAggregatedList
+    , AutoscalerAggregatedList
+    , autoscalerAggregatedList
+    , aalNextPageToken
+    , aalKind
+    , aalItems
+    , aalSelfLink
+    , aalId
+
+    -- ** AutoscalingPolicy
+    , AutoscalingPolicy
+    , autoscalingPolicy
+    , apCustomMetricUtilizations
+    , apMaxNumReplicas
+    , apCPUUtilization
+    , apLoadBalancingUtilization
+    , apMinNumReplicas
+    , apCoolDownPeriodSec
+
+    -- ** RegionList
+    , RegionList
+    , regionList
+    , regNextPageToken
+    , regKind
+    , regItems
+    , regSelfLink
+    , regId
+
+    -- ** AttachedDiskInterface
+    , AttachedDiskInterface (..)
+
+    -- ** ZoneStatus
+    , ZoneStatus (..)
+
+    -- ** VPNTunnelList
+    , VPNTunnelList
+    , vpnTunnelList
+    , vtlNextPageToken
+    , vtlKind
+    , vtlItems
+    , vtlSelfLink
+    , vtlId
+
+    -- ** MachineTypeScratchDisksItem
+    , MachineTypeScratchDisksItem
+    , machineTypeScratchDisksItem
+    , mtsdiDiskGb
+
+    -- ** MachineTypesScopedList
+    , MachineTypesScopedList
+    , machineTypesScopedList
+    , mtslMachineTypes
+    , mtslWarning
+
+    -- ** MachineTypeAggregatedList
+    , MachineTypeAggregatedList
+    , machineTypeAggregatedList
+    , mtalNextPageToken
+    , mtalKind
+    , mtalItems
+    , mtalSelfLink
+    , mtalId
+
+    -- ** QuotaMetric
+    , QuotaMetric (..)
+
+    -- ** DiskType
+    , DiskType
+    , diskType
+    , dtKind
+    , dtZone
+    , dtSelfLink
+    , dtName
+    , dtCreationTimestamp
+    , dtId
+    , dtValidDiskSize
+    , dtDescription
+    , dtDefaultDiskSizeGb
+    , dtDeprecated
+
+    -- ** URLMapValidationResult
+    , URLMapValidationResult
+    , urlMapValidationResult
+    , umvrLoadErrors
+    , umvrLoadSucceeded
+    , umvrTestPassed
+    , umvrTestFailures
+
+    -- ** Metadata
+    , Metadata
+    , metadata
+    , mKind
+    , mFingerprint
+    , mItems
+
+    -- ** RouteWarningsItem
+    , RouteWarningsItem
+    , routeWarningsItem
+    , rwiData
+    , rwiCode
+    , rwiMessage
+
+    -- ** MachineTypesScopedListWarningDataItem
+    , MachineTypesScopedListWarningDataItem
+    , machineTypesScopedListWarningDataItem
+    , mtslwdiValue
+    , mtslwdiKey
+
+    -- ** InstanceStatus
+    , InstanceStatus (..)
+
+    -- ** MachineTypesScopedListWarningCode
+    , MachineTypesScopedListWarningCode (..)
+
+    -- ** DiskTypesScopedListWarningDataItem
+    , DiskTypesScopedListWarningDataItem
+    , diskTypesScopedListWarningDataItem
+    , dtslwdiValue
+    , dtslwdiKey
+
+    -- ** TargetHTTPProxy
+    , TargetHTTPProxy
+    , targetHTTPProxy
+    , thttppURLMap
+    , thttppKind
+    , thttppSelfLink
+    , thttppName
+    , thttppCreationTimestamp
+    , thttppId
+    , thttppDescription
+
+    -- ** MachineType
+    , MachineType
+    , machineType
+    , mtKind
+    , mtImageSpaceGb
+    , mtZone
+    , mtSelfLink
+    , mtName
+    , mtCreationTimestamp
+    , mtScratchDisks
+    , mtId
+    , mtGuestCPUs
+    , mtMaximumPersistentDisksSizeGb
+    , mtMaximumPersistentDisks
+    , mtMemoryMb
+    , mtDescription
+    , mtDeprecated
+
+    -- ** DiskTypesScopedListWarningCode
+    , DiskTypesScopedListWarningCode (..)
+
+    -- ** OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- ** TargetInstancesScopedListWarning
+    , TargetInstancesScopedListWarning
+    , targetInstancesScopedListWarning
+    , tislwData
+    , tislwCode
+    , tislwMessage
+
+    -- ** AutoscalersScopedListWarningDataItem
+    , AutoscalersScopedListWarningDataItem
+    , autoscalersScopedListWarningDataItem
+    , aValue
+    , aKey
+
+    -- ** AutoscalersScopedListWarningCode
+    , AutoscalersScopedListWarningCode (..)
+
+    -- ** InstanceGroupsListInstances
+    , InstanceGroupsListInstances
+    , instanceGroupsListInstances
+    , igliNextPageToken
+    , igliKind
+    , igliItems
+    , igliSelfLink
+    , igliId
+
+    -- ** Autoscaler
+    , Autoscaler
+    , autoscaler
+    , aaKind
+    , aaZone
+    , aaSelfLink
+    , aaName
+    , aaCreationTimestamp
+    , aaAutoscalingPolicy
+    , aaId
+    , aaDescription
+    , aaTarget
+
+    -- ** DisksScopedListWarning
+    , DisksScopedListWarning
+    , disksScopedListWarning
+    , dslwData
+    , dslwCode
+    , dslwMessage
+
+    -- ** TargetVPNGatewayAggregatedListItems
+    , TargetVPNGatewayAggregatedListItems
+    , targetVPNGatewayAggregatedListItems
+    , tvgaliAddtional
+
+    -- ** TargetPoolsScopedListWarning
+    , TargetPoolsScopedListWarning
+    , targetPoolsScopedListWarning
+    , tpslwData
+    , tpslwCode
+    , tpslwMessage
+
+    -- ** HealthStatus
+    , HealthStatus
+    , healthStatus
+    , hsIPAddress
+    , hsHealthState
+    , hsPort
+    , hsInstance
+
+    -- ** Region
+    , Region
+    , region
+    , rrStatus
+    , rrZones
+    , rrKind
+    , rrSelfLink
+    , rrName
+    , rrCreationTimestamp
+    , rrQuotas
+    , rrId
+    , rrDescription
+    , rrDeprecated
+
+    -- ** VPNTunnel
+    , VPNTunnel
+    , vpnTunnel
+    , vtDetailedStatus
+    , vtStatus
+    , vtKind
+    , vtPeerIP
+    , vtTargetVPNGateway
+    , vtSelfLink
+    , vtSharedSecret
+    , vtName
+    , vtCreationTimestamp
+    , vtSharedSecretHash
+    , vtId
+    , vtIkeVersion
+    , vtRegion
+    , vtDescription
+
+    -- ** VPNTunnelsScopedListWarningCode
+    , VPNTunnelsScopedListWarningCode (..)
+
+    -- ** OperationsScopedListWarning
+    , OperationsScopedListWarning
+    , operationsScopedListWarning
+    , oslwData
+    , oslwCode
+    , oslwMessage
+
+    -- ** Scheduling
+    , Scheduling
+    , scheduling
+    , sAutomaticRestart
+    , sOnHostMaintenance
+    , sPreemptible
+
+    -- ** VPNTunnelsScopedListWarningDataItem
+    , VPNTunnelsScopedListWarningDataItem
+    , vpnTunnelsScopedListWarningDataItem
+    , vtslwdiValue
+    , vtslwdiKey
+
+    -- ** ForwardingRulesScopedListWarning
+    , ForwardingRulesScopedListWarning
+    , forwardingRulesScopedListWarning
+    , frslwData
+    , frslwCode
+    , frslwMessage
+
+    -- ** HTTPHealthCheckList
+    , HTTPHealthCheckList
+    , hTTPHealthCheckList
+    , httphclNextPageToken
+    , httphclKind
+    , httphclItems
+    , httphclSelfLink
+    , httphclId
+
+    -- ** InstanceGroupManagersScopedListWarning
+    , InstanceGroupManagersScopedListWarning
+    , instanceGroupManagersScopedListWarning
+    , igmslwData
+    , igmslwCode
+    , igmslwMessage
+
+    -- ** URLMapsValidateRequest
+    , URLMapsValidateRequest
+    , urlMapsValidateRequest
+    , umvrResource
+
+    -- ** InstanceGroupManagersSetTargetPoolsRequest
+    , InstanceGroupManagersSetTargetPoolsRequest
+    , instanceGroupManagersSetTargetPoolsRequest
+    , igmstprFingerprint
+    , igmstprTargetPools
+
+    -- ** HTTPSHealthCheckList
+    , HTTPSHealthCheckList
+    , httpsHealthCheckList
+    , hhclNextPageToken
+    , hhclKind
+    , hhclItems
+    , hhclSelfLink
+    , hhclId
+
+    -- ** OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- ** License
+    , License
+    , license
+    , lChargesUseFee
+    , lKind
+    , lSelfLink
+    , lName
+
+    -- ** PathRule
+    , PathRule
+    , pathRule
+    , prService
+    , prPaths
+
+    -- ** InstanceList
+    , InstanceList
+    , instanceList
+    , insNextPageToken
+    , insKind
+    , insItems
+    , insSelfLink
+    , insId
+
+    -- ** ManagedInstanceLastAttempt
+    , ManagedInstanceLastAttempt
+    , managedInstanceLastAttempt
+    , milaErrors
+
+    -- ** BackendServiceList
+    , BackendServiceList
+    , backendServiceList
+    , bslNextPageToken
+    , bslKind
+    , bslItems
+    , bslSelfLink
+    , bslId
+
+    -- ** InstanceGroupsScopedListWarning
+    , InstanceGroupsScopedListWarning
+    , instanceGroupsScopedListWarning
+    , igslwData
+    , igslwCode
+    , igslwMessage
+
+    -- ** AutoscalingPolicyCPUUtilization
+    , AutoscalingPolicyCPUUtilization
+    , autoscalingPolicyCPUUtilization
+    , apcuUtilizationTarget
+
+    -- ** InstanceGroupsScopedListWarningCode
+    , InstanceGroupsScopedListWarningCode (..)
+
+    -- ** InstanceGroupsScopedListWarningDataItem
+    , InstanceGroupsScopedListWarningDataItem
+    , instanceGroupsScopedListWarningDataItem
+    , igslwdiValue
+    , igslwdiKey
+
+    -- ** ResourceGroupReference
+    , ResourceGroupReference
+    , resourceGroupReference
+    , rgrGroup
+
+    -- ** Firewall
+    , Firewall
+    , firewall
+    , fSourceTags
+    , fKind
+    , fTargetTags
+    , fNetwork
+    , fSourceRanges
+    , fSelfLink
+    , fName
+    , fCreationTimestamp
+    , fId
+    , fAllowed
+    , fDescription
+
+    -- ** HostRule
+    , HostRule
+    , hostRule
+    , hrHosts
+    , hrDescription
+    , hrPathMatcher
+
+    -- ** Quota
+    , Quota
+    , quota
+    , qMetric
+    , qLimit
+    , qUsage
+
+    -- ** InstanceGroup
+    , InstanceGroup
+    , instanceGroup
+    , iiSize
+    , iiKind
+    , iiFingerprint
+    , iiNetwork
+    , iiZone
+    , iiSelfLink
+    , iiName
+    , iiCreationTimestamp
+    , iiId
+    , iiDescription
+    , iiNamedPorts
+
+    -- ** InstanceWithNamedPortsStatus
+    , InstanceWithNamedPortsStatus (..)
+
+    -- ** SnapshotList
+    , SnapshotList
+    , snapshotList
+    , slNextPageToken
+    , slKind
+    , slItems
+    , slSelfLink
+    , slId
+
+    -- ** TestFailure
+    , TestFailure
+    , testFailure
+    , tfPath
+    , tfExpectedService
+    , tfHost
+    , tfActualService
+
+    -- ** SerialPortOutput
+    , SerialPortOutput
+    , serialPortOutput
+    , spoContents
+    , spoKind
+    , spoSelfLink
+
+    -- ** TargetVPNGatewayAggregatedList
+    , TargetVPNGatewayAggregatedList
+    , targetVPNGatewayAggregatedList
+    , tvgalNextPageToken
+    , tvgalKind
+    , tvgalItems
+    , tvgalSelfLink
+    , tvgalId
+
+    -- ** MetadataItemsItem
+    , MetadataItemsItem
+    , metadataItemsItem
+    , miiValue
+    , miiKey
+
+    -- ** TargetHTTPSProxy
+    , TargetHTTPSProxy
+    , targetHTTPSProxy
+    , thpURLMap
+    , thpSSLCertificates
+    , thpKind
+    , thpSelfLink
+    , thpName
+    , thpCreationTimestamp
+    , thpId
+    , thpDescription
+
+    -- ** TargetVPNGatewaysScopedList
+    , TargetVPNGatewaysScopedList
+    , targetVPNGatewaysScopedList
+    , tvgslTargetVPNGateways
+    , tvgslWarning
+
+    -- ** AccessConfig
+    , AccessConfig
+    , accessConfig
+    , acKind
+    , acName
+    , acNATIP
+    , acType
+
+    -- ** ManagedInstanceLastAttemptErrorsErrorsItem
+    , ManagedInstanceLastAttemptErrorsErrorsItem
+    , managedInstanceLastAttemptErrorsErrorsItem
+    , milaeeiLocation
+    , milaeeiCode
+    , milaeeiMessage
+
+    -- ** InstancesScopedListWarningCode
+    , InstancesScopedListWarningCode (..)
+
+    -- ** InstancesScopedListWarningDataItem
+    , InstancesScopedListWarningDataItem
+    , instancesScopedListWarningDataItem
+    , islwdiValue
+    , islwdiKey
+
+    -- ** BackendService
+    , BackendService
+    , backendService
+    , bsBackends
+    , bsKind
+    , bsFingerprint
+    , bsProtocol
+    , bsSelfLink
+    , bsName
+    , bsCreationTimestamp
+    , bsId
+    , bsTimeoutSec
+    , bsDescription
+    , bsPortName
+    , bsHealthChecks
+    , bsPort
+
+    -- ** InstanceMoveRequest
+    , InstanceMoveRequest
+    , instanceMoveRequest
+    , imrTargetInstance
+    , imrDestinationZone
+
+    -- ** TargetPoolSessionAffinity
+    , TargetPoolSessionAffinity (..)
+
+    -- ** InstanceGroupsScopedList
+    , InstanceGroupsScopedList
+    , instanceGroupsScopedList
+    , igslWarning
+    , igslInstanceGroups
+
+    -- ** HTTPSHealthCheck
+    , HTTPSHealthCheck
+    , httpsHealthCheck
+    , hhcHealthyThreshold
+    , hhcKind
+    , hhcRequestPath
+    , hhcSelfLink
+    , hhcCheckIntervalSec
+    , hhcName
+    , hhcCreationTimestamp
+    , hhcId
+    , hhcHost
+    , hhcTimeoutSec
+    , hhcDescription
+    , hhcUnhealthyThreshold
+    , hhcPort
+
+    -- ** ImageRawDiskContainerType
+    , ImageRawDiskContainerType (..)
+
+    -- ** VPNTunnelAggregatedListItems
+    , VPNTunnelAggregatedListItems
+    , vpnTunnelAggregatedListItems
+    , vtaliAddtional
+
+    -- ** Tags
+    , Tags
+    , tags
+    , tFingerprint
+    , tItems
+
+    -- ** AddressAggregatedList
+    , AddressAggregatedList
+    , addressAggregatedList
+    , addNextPageToken
+    , addKind
+    , addItems
+    , addSelfLink
+    , addId
+
+    -- ** OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+
+    -- ** URLMapTest
+    , URLMapTest
+    , urlMapTest
+    , umtPath
+    , umtService
+    , umtHost
+    , umtDescription
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , insnStatus
+    , insnServiceAccounts
+    , insnNetworkInterfaces
+    , insnKind
+    , insnZone
+    , insnCPUPlatform
+    , insnSelfLink
+    , insnName
+    , insnStatusMessage
+    , insnCreationTimestamp
+    , insnMachineType
+    , insnMetadata
+    , insnId
+    , insnScheduling
+    , insnDisks
+    , insnCanIPForward
+    , insnDescription
+    , insnTags
+
+    -- ** PathMatcher
+    , PathMatcher
+    , pathMatcher
+    , pmDefaultService
+    , pmName
+    , pmPathRules
+    , pmDescription
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.Compute.Addresses.AggregatedList
+import           Network.Google.Resource.Compute.Addresses.Delete
+import           Network.Google.Resource.Compute.Addresses.Get
+import           Network.Google.Resource.Compute.Addresses.Insert
+import           Network.Google.Resource.Compute.Addresses.List
+import           Network.Google.Resource.Compute.Autoscalers.AggregatedList
+import           Network.Google.Resource.Compute.Autoscalers.Delete
+import           Network.Google.Resource.Compute.Autoscalers.Get
+import           Network.Google.Resource.Compute.Autoscalers.Insert
+import           Network.Google.Resource.Compute.Autoscalers.List
+import           Network.Google.Resource.Compute.Autoscalers.Patch
+import           Network.Google.Resource.Compute.Autoscalers.Update
+import           Network.Google.Resource.Compute.BackendServices.Delete
+import           Network.Google.Resource.Compute.BackendServices.Get
+import           Network.Google.Resource.Compute.BackendServices.GetHealth
+import           Network.Google.Resource.Compute.BackendServices.Insert
+import           Network.Google.Resource.Compute.BackendServices.List
+import           Network.Google.Resource.Compute.BackendServices.Patch
+import           Network.Google.Resource.Compute.BackendServices.Update
+import           Network.Google.Resource.Compute.Disks.AggregatedList
+import           Network.Google.Resource.Compute.Disks.CreateSnapshot
+import           Network.Google.Resource.Compute.Disks.Delete
+import           Network.Google.Resource.Compute.Disks.Get
+import           Network.Google.Resource.Compute.Disks.Insert
+import           Network.Google.Resource.Compute.Disks.List
+import           Network.Google.Resource.Compute.DiskTypes.AggregatedList
+import           Network.Google.Resource.Compute.DiskTypes.Get
+import           Network.Google.Resource.Compute.DiskTypes.List
+import           Network.Google.Resource.Compute.Firewalls.Delete
+import           Network.Google.Resource.Compute.Firewalls.Get
+import           Network.Google.Resource.Compute.Firewalls.Insert
+import           Network.Google.Resource.Compute.Firewalls.List
+import           Network.Google.Resource.Compute.Firewalls.Patch
+import           Network.Google.Resource.Compute.Firewalls.Update
+import           Network.Google.Resource.Compute.ForwardingRules.AggregatedList
+import           Network.Google.Resource.Compute.ForwardingRules.Delete
+import           Network.Google.Resource.Compute.ForwardingRules.Get
+import           Network.Google.Resource.Compute.ForwardingRules.Insert
+import           Network.Google.Resource.Compute.ForwardingRules.List
+import           Network.Google.Resource.Compute.ForwardingRules.SetTarget
+import           Network.Google.Resource.Compute.GlobalAddresses.Delete
+import           Network.Google.Resource.Compute.GlobalAddresses.Get
+import           Network.Google.Resource.Compute.GlobalAddresses.Insert
+import           Network.Google.Resource.Compute.GlobalAddresses.List
+import           Network.Google.Resource.Compute.GlobalForwardingRules.Delete
+import           Network.Google.Resource.Compute.GlobalForwardingRules.Get
+import           Network.Google.Resource.Compute.GlobalForwardingRules.Insert
+import           Network.Google.Resource.Compute.GlobalForwardingRules.List
+import           Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
+import           Network.Google.Resource.Compute.GlobalOperations.AggregatedList
+import           Network.Google.Resource.Compute.GlobalOperations.Delete
+import           Network.Google.Resource.Compute.GlobalOperations.Get
+import           Network.Google.Resource.Compute.GlobalOperations.List
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Delete
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Get
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Insert
+import           Network.Google.Resource.Compute.HTTPHealthChecks.List
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Patch
+import           Network.Google.Resource.Compute.HTTPHealthChecks.Update
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Get
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.List
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
+import           Network.Google.Resource.Compute.HTTPSHealthChecks.Update
+import           Network.Google.Resource.Compute.Images.Delete
+import           Network.Google.Resource.Compute.Images.Deprecate
+import           Network.Google.Resource.Compute.Images.Get
+import           Network.Google.Resource.Compute.Images.Insert
+import           Network.Google.Resource.Compute.Images.List
+import           Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Delete
+import           Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Get
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Insert
+import           Network.Google.Resource.Compute.InstanceGroupManagers.List
+import           Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
+import           Network.Google.Resource.Compute.InstanceGroupManagers.Resize
+import           Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
+import           Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
+import           Network.Google.Resource.Compute.InstanceGroups.AddInstances
+import           Network.Google.Resource.Compute.InstanceGroups.AggregatedList
+import           Network.Google.Resource.Compute.InstanceGroups.Delete
+import           Network.Google.Resource.Compute.InstanceGroups.Get
+import           Network.Google.Resource.Compute.InstanceGroups.Insert
+import           Network.Google.Resource.Compute.InstanceGroups.List
+import           Network.Google.Resource.Compute.InstanceGroups.ListInstances
+import           Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
+import           Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
+import           Network.Google.Resource.Compute.Instances.AddAccessConfig
+import           Network.Google.Resource.Compute.Instances.AggregatedList
+import           Network.Google.Resource.Compute.Instances.AttachDisk
+import           Network.Google.Resource.Compute.Instances.Delete
+import           Network.Google.Resource.Compute.Instances.DeleteAccessConfig
+import           Network.Google.Resource.Compute.Instances.DetachDisk
+import           Network.Google.Resource.Compute.Instances.Get
+import           Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+import           Network.Google.Resource.Compute.Instances.Insert
+import           Network.Google.Resource.Compute.Instances.List
+import           Network.Google.Resource.Compute.Instances.Reset
+import           Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+import           Network.Google.Resource.Compute.Instances.SetMetadata
+import           Network.Google.Resource.Compute.Instances.SetScheduling
+import           Network.Google.Resource.Compute.Instances.SetTags
+import           Network.Google.Resource.Compute.Instances.Start
+import           Network.Google.Resource.Compute.Instances.Stop
+import           Network.Google.Resource.Compute.InstanceTemplates.Delete
+import           Network.Google.Resource.Compute.InstanceTemplates.Get
+import           Network.Google.Resource.Compute.InstanceTemplates.Insert
+import           Network.Google.Resource.Compute.InstanceTemplates.List
+import           Network.Google.Resource.Compute.Licenses.Get
+import           Network.Google.Resource.Compute.MachineTypes.AggregatedList
+import           Network.Google.Resource.Compute.MachineTypes.Get
+import           Network.Google.Resource.Compute.MachineTypes.List
+import           Network.Google.Resource.Compute.Networks.Delete
+import           Network.Google.Resource.Compute.Networks.Get
+import           Network.Google.Resource.Compute.Networks.Insert
+import           Network.Google.Resource.Compute.Networks.List
+import           Network.Google.Resource.Compute.Projects.Get
+import           Network.Google.Resource.Compute.Projects.MoveDisk
+import           Network.Google.Resource.Compute.Projects.MoveInstance
+import           Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+import           Network.Google.Resource.Compute.Projects.SetUsageExportBucket
+import           Network.Google.Resource.Compute.RegionOperations.Delete
+import           Network.Google.Resource.Compute.RegionOperations.Get
+import           Network.Google.Resource.Compute.RegionOperations.List
+import           Network.Google.Resource.Compute.Regions.Get
+import           Network.Google.Resource.Compute.Regions.List
+import           Network.Google.Resource.Compute.Routes.Delete
+import           Network.Google.Resource.Compute.Routes.Get
+import           Network.Google.Resource.Compute.Routes.Insert
+import           Network.Google.Resource.Compute.Routes.List
+import           Network.Google.Resource.Compute.Snapshots.Delete
+import           Network.Google.Resource.Compute.Snapshots.Get
+import           Network.Google.Resource.Compute.Snapshots.List
+import           Network.Google.Resource.Compute.SSLCertificates.Delete
+import           Network.Google.Resource.Compute.SSLCertificates.Get
+import           Network.Google.Resource.Compute.SSLCertificates.Insert
+import           Network.Google.Resource.Compute.SSLCertificates.List
+import           Network.Google.Resource.Compute.TargetHTTPProxies.Delete
+import           Network.Google.Resource.Compute.TargetHTTPProxies.Get
+import           Network.Google.Resource.Compute.TargetHTTPProxies.Insert
+import           Network.Google.Resource.Compute.TargetHTTPProxies.List
+import           Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.Get
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.List
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+import           Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
+import           Network.Google.Resource.Compute.TargetInstances.AggregatedList
+import           Network.Google.Resource.Compute.TargetInstances.Delete
+import           Network.Google.Resource.Compute.TargetInstances.Get
+import           Network.Google.Resource.Compute.TargetInstances.Insert
+import           Network.Google.Resource.Compute.TargetInstances.List
+import           Network.Google.Resource.Compute.TargetPools.AddHealthCheck
+import           Network.Google.Resource.Compute.TargetPools.AddInstance
+import           Network.Google.Resource.Compute.TargetPools.AggregatedList
+import           Network.Google.Resource.Compute.TargetPools.Delete
+import           Network.Google.Resource.Compute.TargetPools.Get
+import           Network.Google.Resource.Compute.TargetPools.GetHealth
+import           Network.Google.Resource.Compute.TargetPools.Insert
+import           Network.Google.Resource.Compute.TargetPools.List
+import           Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
+import           Network.Google.Resource.Compute.TargetPools.RemoveInstance
+import           Network.Google.Resource.Compute.TargetPools.SetBackup
+import           Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
+import           Network.Google.Resource.Compute.TargetVPNGateways.Delete
+import           Network.Google.Resource.Compute.TargetVPNGateways.Get
+import           Network.Google.Resource.Compute.TargetVPNGateways.Insert
+import           Network.Google.Resource.Compute.TargetVPNGateways.List
+import           Network.Google.Resource.Compute.URLMaps.Delete
+import           Network.Google.Resource.Compute.URLMaps.Get
+import           Network.Google.Resource.Compute.URLMaps.Insert
+import           Network.Google.Resource.Compute.URLMaps.List
+import           Network.Google.Resource.Compute.URLMaps.Patch
+import           Network.Google.Resource.Compute.URLMaps.Update
+import           Network.Google.Resource.Compute.URLMaps.Validate
+import           Network.Google.Resource.Compute.VPNTunnels.AggregatedList
+import           Network.Google.Resource.Compute.VPNTunnels.Delete
+import           Network.Google.Resource.Compute.VPNTunnels.Get
+import           Network.Google.Resource.Compute.VPNTunnels.Insert
+import           Network.Google.Resource.Compute.VPNTunnels.List
+import           Network.Google.Resource.Compute.ZoneOperations.Delete
+import           Network.Google.Resource.Compute.ZoneOperations.Get
+import           Network.Google.Resource.Compute.ZoneOperations.List
+import           Network.Google.Resource.Compute.Zones.Get
+import           Network.Google.Resource.Compute.Zones.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Compute Engine API service.
+type ComputeAPI =
+     ImagesInsertResource :<|> ImagesListResource :<|>
+       ImagesGetResource
+       :<|> ImagesDeprecateResource
+       :<|> ImagesDeleteResource
+       :<|> URLMapsInsertResource
+       :<|> URLMapsListResource
+       :<|> URLMapsPatchResource
+       :<|> URLMapsGetResource
+       :<|> URLMapsValidateResource
+       :<|> URLMapsDeleteResource
+       :<|> URLMapsUpdateResource
+       :<|> RoutesInsertResource
+       :<|> RoutesListResource
+       :<|> RoutesGetResource
+       :<|> RoutesDeleteResource
+       :<|> InstanceTemplatesInsertResource
+       :<|> InstanceTemplatesListResource
+       :<|> InstanceTemplatesGetResource
+       :<|> InstanceTemplatesDeleteResource
+       :<|> TargetVPNGatewaysAggregatedListResource
+       :<|> TargetVPNGatewaysInsertResource
+       :<|> TargetVPNGatewaysListResource
+       :<|> TargetVPNGatewaysGetResource
+       :<|> TargetVPNGatewaysDeleteResource
+       :<|> SSLCertificatesInsertResource
+       :<|> SSLCertificatesListResource
+       :<|> SSLCertificatesGetResource
+       :<|> SSLCertificatesDeleteResource
+       :<|> ZonesListResource
+       :<|> ZonesGetResource
+       :<|> GlobalForwardingRulesInsertResource
+       :<|> GlobalForwardingRulesListResource
+       :<|> GlobalForwardingRulesGetResource
+       :<|> GlobalForwardingRulesSetTargetResource
+       :<|> GlobalForwardingRulesDeleteResource
+       :<|> NetworksInsertResource
+       :<|> NetworksListResource
+       :<|> NetworksGetResource
+       :<|> NetworksDeleteResource
+       :<|> AddressesAggregatedListResource
+       :<|> AddressesInsertResource
+       :<|> AddressesListResource
+       :<|> AddressesGetResource
+       :<|> AddressesDeleteResource
+       :<|> GlobalAddressesInsertResource
+       :<|> GlobalAddressesListResource
+       :<|> GlobalAddressesGetResource
+       :<|> GlobalAddressesDeleteResource
+       :<|> RegionsListResource
+       :<|> RegionsGetResource
+       :<|> TargetHTTPProxiesInsertResource
+       :<|> TargetHTTPProxiesListResource
+       :<|> TargetHTTPProxiesSetURLMapResource
+       :<|> TargetHTTPProxiesGetResource
+       :<|> TargetHTTPProxiesDeleteResource
+       :<|> VPNTunnelsAggregatedListResource
+       :<|> VPNTunnelsInsertResource
+       :<|> VPNTunnelsListResource
+       :<|> VPNTunnelsGetResource
+       :<|> VPNTunnelsDeleteResource
+       :<|> AutoscalersAggregatedListResource
+       :<|> AutoscalersInsertResource
+       :<|> AutoscalersListResource
+       :<|> AutoscalersPatchResource
+       :<|> AutoscalersGetResource
+       :<|> AutoscalersDeleteResource
+       :<|> AutoscalersUpdateResource
+       :<|> DiskTypesAggregatedListResource
+       :<|> DiskTypesListResource
+       :<|> DiskTypesGetResource
+       :<|> RegionOperationsListResource
+       :<|> RegionOperationsGetResource
+       :<|> RegionOperationsDeleteResource
+       :<|> MachineTypesAggregatedListResource
+       :<|> MachineTypesListResource
+       :<|> MachineTypesGetResource
+       :<|> HTTPHealthChecksInsertResource
+       :<|> HTTPHealthChecksListResource
+       :<|> HTTPHealthChecksPatchResource
+       :<|> HTTPHealthChecksGetResource
+       :<|> HTTPHealthChecksDeleteResource
+       :<|> HTTPHealthChecksUpdateResource
+       :<|> SnapshotsListResource
+       :<|> SnapshotsGetResource
+       :<|> SnapshotsDeleteResource
+       :<|> HTTPSHealthChecksInsertResource
+       :<|> HTTPSHealthChecksListResource
+       :<|> HTTPSHealthChecksPatchResource
+       :<|> HTTPSHealthChecksGetResource
+       :<|> HTTPSHealthChecksDeleteResource
+       :<|> HTTPSHealthChecksUpdateResource
+       :<|> InstancesAddAccessConfigResource
+       :<|> InstancesAggregatedListResource
+       :<|> InstancesInsertResource
+       :<|> InstancesDetachDiskResource
+       :<|> InstancesListResource
+       :<|> InstancesStartResource
+       :<|> InstancesGetResource
+       :<|> InstancesDeleteAccessConfigResource
+       :<|> InstancesSetMetadataResource
+       :<|> InstancesSetSchedulingResource
+       :<|> InstancesResetResource
+       :<|> InstancesStopResource
+       :<|> InstancesGetSerialPortOutputResource
+       :<|> InstancesSetTagsResource
+       :<|> InstancesAttachDiskResource
+       :<|> InstancesDeleteResource
+       :<|> InstancesSetDiskAutoDeleteResource
+       :<|> BackendServicesInsertResource
+       :<|> BackendServicesListResource
+       :<|> BackendServicesGetHealthResource
+       :<|> BackendServicesPatchResource
+       :<|> BackendServicesGetResource
+       :<|> BackendServicesDeleteResource
+       :<|> BackendServicesUpdateResource
+       :<|> InstanceGroupsRemoveInstancesResource
+       :<|> InstanceGroupsAggregatedListResource
+       :<|> InstanceGroupsInsertResource
+       :<|> InstanceGroupsListResource
+       :<|> InstanceGroupsAddInstancesResource
+       :<|> InstanceGroupsGetResource
+       :<|> InstanceGroupsListInstancesResource
+       :<|> InstanceGroupsSetNamedPortsResource
+       :<|> InstanceGroupsDeleteResource
+       :<|> FirewallsInsertResource
+       :<|> FirewallsListResource
+       :<|> FirewallsPatchResource
+       :<|> FirewallsGetResource
+       :<|> FirewallsDeleteResource
+       :<|> FirewallsUpdateResource
+       :<|> GlobalOperationsAggregatedListResource
+       :<|> GlobalOperationsListResource
+       :<|> GlobalOperationsGetResource
+       :<|> GlobalOperationsDeleteResource
+       :<|> LicensesGetResource
+       :<|> ZoneOperationsListResource
+       :<|> ZoneOperationsGetResource
+       :<|> ZoneOperationsDeleteResource
+       :<|> TargetHTTPSProxiesInsertResource
+       :<|> TargetHTTPSProxiesListResource
+       :<|> TargetHTTPSProxiesSetURLMapResource
+       :<|> TargetHTTPSProxiesSetSSLCertificatesResource
+       :<|> TargetHTTPSProxiesGetResource
+       :<|> TargetHTTPSProxiesDeleteResource
+       :<|> TargetInstancesAggregatedListResource
+       :<|> TargetInstancesInsertResource
+       :<|> TargetInstancesListResource
+       :<|> TargetInstancesGetResource
+       :<|> TargetInstancesDeleteResource
+       :<|> DisksAggregatedListResource
+       :<|> DisksInsertResource
+       :<|> DisksListResource
+       :<|> DisksGetResource
+       :<|> DisksCreateSnapshotResource
+       :<|> DisksDeleteResource
+       :<|> ForwardingRulesAggregatedListResource
+       :<|> ForwardingRulesInsertResource
+       :<|> ForwardingRulesListResource
+       :<|> ForwardingRulesGetResource
+       :<|> ForwardingRulesSetTargetResource
+       :<|> ForwardingRulesDeleteResource
+       :<|> InstanceGroupManagersSetTargetPoolsResource
+       :<|> InstanceGroupManagersAggregatedListResource
+       :<|> InstanceGroupManagersInsertResource
+       :<|> InstanceGroupManagersResizeResource
+       :<|> InstanceGroupManagersListResource
+       :<|>
+       InstanceGroupManagersListManagedInstancesResource
+       :<|> InstanceGroupManagersAbandonInstancesResource
+       :<|> InstanceGroupManagersSetInstanceTemplateResource
+       :<|> InstanceGroupManagersGetResource
+       :<|> InstanceGroupManagersDeleteInstancesResource
+       :<|> InstanceGroupManagersDeleteResource
+       :<|> InstanceGroupManagersRecreateInstancesResource
+       :<|> ProjectsSetUsageExportBucketResource
+       :<|> ProjectsMoveInstanceResource
+       :<|> ProjectsGetResource
+       :<|> ProjectsMoveDiskResource
+       :<|> ProjectsSetCommonInstanceMetadataResource
+       :<|> TargetPoolsAggregatedListResource
+       :<|> TargetPoolsRemoveInstanceResource
+       :<|> TargetPoolsInsertResource
+       :<|> TargetPoolsListResource
+       :<|> TargetPoolsGetHealthResource
+       :<|> TargetPoolsGetResource
+       :<|> TargetPoolsRemoveHealthCheckResource
+       :<|> TargetPoolsSetBackupResource
+       :<|> TargetPoolsAddInstanceResource
+       :<|> TargetPoolsAddHealthCheckResource
+       :<|> TargetPoolsDeleteResource
diff --git a/gen/Network/Google/Compute/Types.hs b/gen/Network/Google/Compute/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Compute/Types.hs
@@ -0,0 +1,1874 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Compute.Types
+-- Copyright   : (c) 2015 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.Compute.Types
+    (
+    -- * Service Configuration
+      computeService
+
+    -- * OAuth Scopes
+    , computeScope
+    , cloudPlatformScope
+    , devstorageReadOnlyScope
+    , devstorageReadWriteScope
+    , computeReadonlyScope
+    , devstorageFullControlScope
+
+    -- * TargetHTTPSProxyList
+    , TargetHTTPSProxyList
+    , targetHTTPSProxyList
+    , thplNextPageToken
+    , thplKind
+    , thplItems
+    , thplSelfLink
+    , thplId
+
+    -- * AddressesScopedList
+    , AddressesScopedList
+    , addressesScopedList
+    , aslAddresses
+    , aslWarning
+
+    -- * OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- * SchedulingOnHostMaintenance
+    , SchedulingOnHostMaintenance (..)
+
+    -- * AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+    , AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType (..)
+
+    -- * InstanceGroupManagersAbandonInstancesRequest
+    , InstanceGroupManagersAbandonInstancesRequest
+    , instanceGroupManagersAbandonInstancesRequest
+    , igmairInstances
+
+    -- * MachineTypeAggregatedListItems
+    , MachineTypeAggregatedListItems
+    , machineTypeAggregatedListItems
+    , mtaliAddtional
+
+    -- * DiskTypeAggregatedListItems
+    , DiskTypeAggregatedListItems
+    , diskTypeAggregatedListItems
+    , dtaliAddtional
+
+    -- * FirewallList
+    , FirewallList
+    , firewallList
+    , flNextPageToken
+    , flKind
+    , flItems
+    , flSelfLink
+    , flId
+
+    -- * InstancesScopedListWarning
+    , InstancesScopedListWarning
+    , instancesScopedListWarning
+    , islwData
+    , islwCode
+    , islwMessage
+
+    -- * InstanceGroupList
+    , InstanceGroupList
+    , instanceGroupList
+    , iglNextPageToken
+    , iglKind
+    , iglItems
+    , iglSelfLink
+    , iglId
+
+    -- * AutoscalerAggregatedListItems
+    , AutoscalerAggregatedListItems
+    , autoscalerAggregatedListItems
+    , aaliAddtional
+
+    -- * InstanceGroupManagersSetInstanceTemplateRequest
+    , InstanceGroupManagersSetInstanceTemplateRequest
+    , instanceGroupManagersSetInstanceTemplateRequest
+    , igmsitrInstanceTemplate
+
+    -- * DeprecationStatus
+    , DeprecationStatus
+    , deprecationStatus
+    , dsState
+    , dsDeleted
+    , dsReplacement
+    , dsObsolete
+    , dsDeprecated
+
+    -- * OperationWarningsItemCode
+    , OperationWarningsItemCode (..)
+
+    -- * Snapshot
+    , Snapshot
+    , snapshot
+    , sStorageBytesStatus
+    , sStatus
+    , sDiskSizeGb
+    , sSourceDiskId
+    , sKind
+    , sStorageBytes
+    , sSelfLink
+    , sName
+    , sCreationTimestamp
+    , sId
+    , sLicenses
+    , sSourceDisk
+    , sDescription
+
+    -- * AutoscalingPolicyCustomMetricUtilization
+    , AutoscalingPolicyCustomMetricUtilization
+    , autoscalingPolicyCustomMetricUtilization
+    , apcmuUtilizationTarget
+    , apcmuMetric
+    , apcmuUtilizationTargetType
+
+    -- * ForwardingRuleList
+    , ForwardingRuleList
+    , forwardingRuleList
+    , frlNextPageToken
+    , frlKind
+    , frlItems
+    , frlSelfLink
+    , frlId
+
+    -- * VPNTunnelsScopedList
+    , VPNTunnelsScopedList
+    , vpnTunnelsScopedList
+    , vtslVPNTunnels
+    , vtslWarning
+
+    -- * BackendServiceProtocol
+    , BackendServiceProtocol (..)
+
+    -- * InstanceGroupsSetNamedPortsRequest
+    , InstanceGroupsSetNamedPortsRequest
+    , instanceGroupsSetNamedPortsRequest
+    , igsnprFingerprint
+    , igsnprNamedPorts
+
+    -- * OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olId
+
+    -- * DiskList
+    , DiskList
+    , diskList
+    , dlNextPageToken
+    , dlKind
+    , dlItems
+    , dlSelfLink
+    , dlId
+
+    -- * TargetPoolsAddInstanceRequest
+    , TargetPoolsAddInstanceRequest
+    , targetPoolsAddInstanceRequest
+    , tpairInstances
+
+    -- * InstanceGroupsAddInstancesRequest
+    , InstanceGroupsAddInstancesRequest
+    , instanceGroupsAddInstancesRequest
+    , igairInstances
+
+    -- * InstanceGroupManagerList
+    , InstanceGroupManagerList
+    , instanceGroupManagerList
+    , igmlNextPageToken
+    , igmlKind
+    , igmlItems
+    , igmlSelfLink
+    , igmlId
+
+    -- * AttachedDiskType
+    , AttachedDiskType (..)
+
+    -- * Image
+    , Image
+    , image
+    , iStatus
+    , iDiskSizeGb
+    , iSourceType
+    , iSourceDiskId
+    , iKind
+    , iArchiveSizeBytes
+    , iRawDisk
+    , iSelfLink
+    , iName
+    , iCreationTimestamp
+    , iId
+    , iLicenses
+    , iSourceDisk
+    , iDescription
+    , iDeprecated
+
+    -- * URLMap
+    , URLMap
+    , urlMap
+    , umTests
+    , umKind
+    , umFingerprint
+    , umDefaultService
+    , umSelfLink
+    , umName
+    , umCreationTimestamp
+    , umPathMatchers
+    , umId
+    , umHostRules
+    , umDescription
+
+    -- * InstanceGroupAggregatedListItems
+    , InstanceGroupAggregatedListItems
+    , instanceGroupAggregatedListItems
+    , igaliAddtional
+
+    -- * TargetPoolList
+    , TargetPoolList
+    , targetPoolList
+    , tplNextPageToken
+    , tplKind
+    , tplItems
+    , tplSelfLink
+    , tplId
+
+    -- * TargetInstanceAggregatedList
+    , TargetInstanceAggregatedList
+    , targetInstanceAggregatedList
+    , tialNextPageToken
+    , tialKind
+    , tialItems
+    , tialSelfLink
+    , tialId
+
+    -- * DisksScopedList
+    , DisksScopedList
+    , disksScopedList
+    , dslWarning
+    , dslDisks
+
+    -- * InstanceGroupManagersScopedList
+    , InstanceGroupManagersScopedList
+    , instanceGroupManagersScopedList
+    , igmslWarning
+    , igmslInstanceGroupManagers
+
+    -- * DiskAggregatedList
+    , DiskAggregatedList
+    , diskAggregatedList
+    , dalNextPageToken
+    , dalKind
+    , dalItems
+    , dalSelfLink
+    , dalId
+
+    -- * InstanceWithNamedPorts
+    , InstanceWithNamedPorts
+    , instanceWithNamedPorts
+    , iwnpStatus
+    , iwnpNamedPorts
+    , iwnpInstance
+
+    -- * ForwardingRulesScopedList
+    , ForwardingRulesScopedList
+    , forwardingRulesScopedList
+    , frslWarning
+    , frslForwardingRules
+
+    -- * InstanceReference
+    , InstanceReference
+    , instanceReference
+    , iInstance
+
+    -- * OperationAggregatedList
+    , OperationAggregatedList
+    , operationAggregatedList
+    , oalNextPageToken
+    , oalKind
+    , oalItems
+    , oalSelfLink
+    , oalId
+
+    -- * OperationsScopedList
+    , OperationsScopedList
+    , operationsScopedList
+    , oslWarning
+    , oslOperations
+
+    -- * NamedPort
+    , NamedPort
+    , namedPort
+    , npName
+    , npPort
+
+    -- * TargetInstanceList
+    , TargetInstanceList
+    , targetInstanceList
+    , tilNextPageToken
+    , tilKind
+    , tilItems
+    , tilSelfLink
+    , tilId
+
+    -- * InstanceGroupManagerAggregatedList
+    , InstanceGroupManagerAggregatedList
+    , instanceGroupManagerAggregatedList
+    , igmalNextPageToken
+    , igmalKind
+    , igmalItems
+    , igmalSelfLink
+    , igmalId
+
+    -- * ImageSourceType
+    , ImageSourceType (..)
+
+    -- * TargetPoolsScopedList
+    , TargetPoolsScopedList
+    , targetPoolsScopedList
+    , tpslWarning
+    , tpslTargetPools
+
+    -- * ForwardingRuleAggregatedList
+    , ForwardingRuleAggregatedList
+    , forwardingRuleAggregatedList
+    , fralNextPageToken
+    , fralKind
+    , fralItems
+    , fralSelfLink
+    , fralId
+
+    -- * TargetReference
+    , TargetReference
+    , targetReference
+    , trTarget
+
+    -- * TargetPoolAggregatedList
+    , TargetPoolAggregatedList
+    , targetPoolAggregatedList
+    , tpalNextPageToken
+    , tpalKind
+    , tpalItems
+    , tpalSelfLink
+    , tpalId
+
+    -- * OperationsScopedListWarningDataItem
+    , OperationsScopedListWarningDataItem
+    , operationsScopedListWarningDataItem
+    , oslwdiValue
+    , oslwdiKey
+
+    -- * TargetPool
+    , TargetPool
+    , targetPool
+    , tpSessionAffinity
+    , tpBackupPool
+    , tpKind
+    , tpSelfLink
+    , tpName
+    , tpCreationTimestamp
+    , tpInstances
+    , tpId
+    , tpFailoverRatio
+    , tpRegion
+    , tpDescription
+    , tpHealthChecks
+
+    -- * ImageList
+    , ImageList
+    , imageList
+    , ilNextPageToken
+    , ilKind
+    , ilItems
+    , ilSelfLink
+    , ilId
+
+    -- * VPNTunnelsScopedListWarning
+    , VPNTunnelsScopedListWarning
+    , vpnTunnelsScopedListWarning
+    , vtslwData
+    , vtslwCode
+    , vtslwMessage
+
+    -- * ForwardingRulesScopedListWarningCode
+    , ForwardingRulesScopedListWarningCode (..)
+
+    -- * OperationsScopedListWarningCode
+    , OperationsScopedListWarningCode (..)
+
+    -- * ForwardingRule
+    , ForwardingRule
+    , forwardingRule
+    , frIPAddress
+    , frKind
+    , frPortRange
+    , frSelfLink
+    , frName
+    , frIPProtocol
+    , frCreationTimestamp
+    , frId
+    , frRegion
+    , frDescription
+    , frTarget
+
+    -- * URLMapList
+    , URLMapList
+    , urlMapList
+    , umlNextPageToken
+    , umlKind
+    , umlItems
+    , umlSelfLink
+    , umlId
+
+    -- * ForwardingRulesScopedListWarningDataItem
+    , ForwardingRulesScopedListWarningDataItem
+    , forwardingRulesScopedListWarningDataItem
+    , frslwdiValue
+    , frslwdiKey
+
+    -- * InstanceGroupManagersScopedListWarningDataItem
+    , InstanceGroupManagersScopedListWarningDataItem
+    , instanceGroupManagersScopedListWarningDataItem
+    , igmslwdiValue
+    , igmslwdiKey
+
+    -- * DisksScopedListWarningCode
+    , DisksScopedListWarningCode (..)
+
+    -- * Project
+    , Project
+    , project
+    , pKind
+    , pUsageExportLocation
+    , pSelfLink
+    , pName
+    , pCreationTimestamp
+    , pEnabledFeatures
+    , pQuotas
+    , pId
+    , pDescription
+    , pCommonInstanceMetadata
+
+    -- * Operation
+    , Operation
+    , operation
+    , oTargetId
+    , oStatus
+    , oInsertTime
+    , oProgress
+    , oStartTime
+    , oKind
+    , oError
+    , oHTTPErrorMessage
+    , oZone
+    , oWarnings
+    , oHTTPErrorStatusCode
+    , oUser
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oCreationTimestamp
+    , oEndTime
+    , oId
+    , oOperationType
+    , oRegion
+    , oTargetLink
+    , oClientOperationId
+
+    -- * DisksScopedListWarningDataItem
+    , DisksScopedListWarningDataItem
+    , disksScopedListWarningDataItem
+    , dslwdiValue
+    , dslwdiKey
+
+    -- * InstanceGroupManagersScopedListWarningCode
+    , InstanceGroupManagersScopedListWarningCode (..)
+
+    -- * Disk
+    , Disk
+    , disk
+    , dStatus
+    , dSourceSnapshotId
+    , dLastAttachTimestamp
+    , dUsers
+    , dSourceImage
+    , dSizeGb
+    , dKind
+    , dLastDetachTimestamp
+    , dZone
+    , dSelfLink
+    , dName
+    , dSourceImageId
+    , dCreationTimestamp
+    , dId
+    , dLicenses
+    , dOptions
+    , dType
+    , dDescription
+    , dSourceSnapshot
+
+    -- * DiskMoveRequest
+    , DiskMoveRequest
+    , diskMoveRequest
+    , dmrTargetDisk
+    , dmrDestinationZone
+
+    -- * AutoscalingPolicyLoadBalancingUtilization
+    , AutoscalingPolicyLoadBalancingUtilization
+    , autoscalingPolicyLoadBalancingUtilization
+    , aplbuUtilizationTarget
+
+    -- * TargetPoolsScopedListWarningDataItem
+    , TargetPoolsScopedListWarningDataItem
+    , targetPoolsScopedListWarningDataItem
+    , tpslwdiValue
+    , tpslwdiKey
+
+    -- * InstanceGroupManager
+    , InstanceGroupManager
+    , instanceGroupManager
+    , igmKind
+    , igmFingerprint
+    , igmBaseInstanceName
+    , igmZone
+    , igmInstanceTemplate
+    , igmTargetSize
+    , igmSelfLink
+    , igmCurrentActions
+    , igmName
+    , igmCreationTimestamp
+    , igmId
+    , igmTargetPools
+    , igmDescription
+    , igmInstanceGroup
+
+    -- * TargetPoolsScopedListWarningCode
+    , TargetPoolsScopedListWarningCode (..)
+
+    -- * TargetVPNGatewayStatus
+    , TargetVPNGatewayStatus (..)
+
+    -- * InstanceGroupsRemoveInstancesRequest
+    , InstanceGroupsRemoveInstancesRequest
+    , instanceGroupsRemoveInstancesRequest
+    , igrirInstances
+
+    -- * SnapshotStatus
+    , SnapshotStatus (..)
+
+    -- * RouteWarningsItemDataItem
+    , RouteWarningsItemDataItem
+    , routeWarningsItemDataItem
+    , rwidiValue
+    , rwidiKey
+
+    -- * TargetInstancesScopedListWarningCode
+    , TargetInstancesScopedListWarningCode (..)
+
+    -- * InstanceAggregatedListItems
+    , InstanceAggregatedListItems
+    , instanceAggregatedListItems
+    , ialiAddtional
+
+    -- * AutoscalersScopedListWarning
+    , AutoscalersScopedListWarning
+    , autoscalersScopedListWarning
+    , aslwData
+    , aslwCode
+    , aslwMessage
+
+    -- * ManagedInstanceLastAttemptErrors
+    , ManagedInstanceLastAttemptErrors
+    , managedInstanceLastAttemptErrors
+    , milaeErrors
+
+    -- * RouteWarningsItemCode
+    , RouteWarningsItemCode (..)
+
+    -- * TargetPoolsRemoveInstanceRequest
+    , TargetPoolsRemoveInstanceRequest
+    , targetPoolsRemoveInstanceRequest
+    , tprirInstances
+
+    -- * TargetInstancesScopedListWarningDataItem
+    , TargetInstancesScopedListWarningDataItem
+    , targetInstancesScopedListWarningDataItem
+    , tislwdiValue
+    , tislwdiKey
+
+    -- * MachineTypesScopedListWarning
+    , MachineTypesScopedListWarning
+    , machineTypesScopedListWarning
+    , mtslwData
+    , mtslwCode
+    , mtslwMessage
+
+    -- * TargetInstance
+    , TargetInstance
+    , targetInstance
+    , tiKind
+    , tiNATPolicy
+    , tiZone
+    , tiSelfLink
+    , tiName
+    , tiCreationTimestamp
+    , tiId
+    , tiDescription
+    , tiInstance
+
+    -- * TargetPoolInstanceHealth
+    , TargetPoolInstanceHealth
+    , targetPoolInstanceHealth
+    , tpihKind
+    , tpihHealthStatus
+
+    -- * SnapshotStorageBytesStatus
+    , SnapshotStorageBytesStatus (..)
+
+    -- * InstanceGroupManagersListManagedInstancesResponse
+    , InstanceGroupManagersListManagedInstancesResponse
+    , instanceGroupManagersListManagedInstancesResponse
+    , igmlmirManagedInstances
+
+    -- * InstanceProperties
+    , InstanceProperties
+    , instanceProperties
+    , ipServiceAccounts
+    , ipNetworkInterfaces
+    , ipMachineType
+    , ipMetadata
+    , ipScheduling
+    , ipDisks
+    , ipCanIPForward
+    , ipDescription
+    , ipTags
+
+    -- * DiskTypesScopedListWarning
+    , DiskTypesScopedListWarning
+    , diskTypesScopedListWarning
+    , dtslwData
+    , dtslwCode
+    , dtslwMessage
+
+    -- * AddressesScopedListWarningCode
+    , AddressesScopedListWarningCode (..)
+
+    -- * AttachedDiskInitializeParams
+    , AttachedDiskInitializeParams
+    , attachedDiskInitializeParams
+    , adipSourceImage
+    , adipDiskSizeGb
+    , adipDiskName
+    , adipDiskType
+
+    -- * AddressesScopedListWarningDataItem
+    , AddressesScopedListWarningDataItem
+    , addressesScopedListWarningDataItem
+    , aslwdiValue
+    , aslwdiKey
+
+    -- * ImageStatus
+    , ImageStatus (..)
+
+    -- * NetworkInterface
+    , NetworkInterface
+    , networkInterface
+    , niNetwork
+    , niName
+    , niNetworkIP
+    , niAccessConfigs
+
+    -- * TargetPoolsRemoveHealthCheckRequest
+    , TargetPoolsRemoveHealthCheckRequest
+    , targetPoolsRemoveHealthCheckRequest
+    , tprhcrHealthChecks
+
+    -- * HealthStatusHealthState
+    , HealthStatusHealthState (..)
+
+    -- * InstanceTemplateList
+    , InstanceTemplateList
+    , instanceTemplateList
+    , itlNextPageToken
+    , itlKind
+    , itlItems
+    , itlSelfLink
+    , itlId
+
+    -- * RouteList
+    , RouteList
+    , routeList
+    , rlNextPageToken
+    , rlKind
+    , rlItems
+    , rlSelfLink
+    , rlId
+
+    -- * DeprecationStatusState
+    , DeprecationStatusState (..)
+
+    -- * ManagedInstanceCurrentAction
+    , ManagedInstanceCurrentAction (..)
+
+    -- * TargetVPNGatewayList
+    , TargetVPNGatewayList
+    , targetVPNGatewayList
+    , tvglNextPageToken
+    , tvglKind
+    , tvglItems
+    , tvglSelfLink
+    , tvglId
+
+    -- * TargetInstanceNATPolicy
+    , TargetInstanceNATPolicy (..)
+
+    -- * SSLCertificateList
+    , SSLCertificateList
+    , sslCertificateList
+    , sclNextPageToken
+    , sclKind
+    , sclItems
+    , sclSelfLink
+    , sclId
+
+    -- * FirewallAllowedItem
+    , FirewallAllowedItem
+    , firewallAllowedItem
+    , faiIPProtocol
+    , faiPorts
+
+    -- * Network
+    , Network
+    , network
+    , nKind
+    , nIPv4Range
+    , nSelfLink
+    , nName
+    , nCreationTimestamp
+    , nId
+    , nGatewayIPv4
+    , nDescription
+
+    -- * AccessConfigType
+    , AccessConfigType (..)
+
+    -- * AddressesScopedListWarning
+    , AddressesScopedListWarning
+    , addressesScopedListWarning
+    , aData
+    , aCode
+    , aMessage
+
+    -- * ImageRawDisk
+    , ImageRawDisk
+    , imageRawDisk
+    , irdContainerType
+    , irdSource
+    , irdSha1Checksum
+
+    -- * InstanceAggregatedList
+    , InstanceAggregatedList
+    , instanceAggregatedList
+    , ialNextPageToken
+    , ialKind
+    , ialItems
+    , ialSelfLink
+    , ialId
+
+    -- * Address
+    , Address
+    , address
+    , aStatus
+    , aUsers
+    , aKind
+    , aAddress
+    , aSelfLink
+    , aName
+    , aCreationTimestamp
+    , aId
+    , aRegion
+    , aDescription
+
+    -- * Zone
+    , Zone
+    , zone
+    , zStatus
+    , zMaintenanceWindows
+    , zKind
+    , zSelfLink
+    , zName
+    , zCreationTimestamp
+    , zId
+    , zRegion
+    , zDescription
+    , zDeprecated
+
+    -- * InstanceGroupManagersRecreateInstancesRequest
+    , InstanceGroupManagersRecreateInstancesRequest
+    , instanceGroupManagersRecreateInstancesRequest
+    , igmrirInstances
+
+    -- * InstancesScopedList
+    , InstancesScopedList
+    , instancesScopedList
+    , islWarning
+    , islInstances
+
+    -- * HealthCheckReference
+    , HealthCheckReference
+    , healthCheckReference
+    , hcrHealthCheck
+
+    -- * TargetInstanceAggregatedListItems
+    , TargetInstanceAggregatedListItems
+    , targetInstanceAggregatedListItems
+    , tialiAddtional
+
+    -- * InstanceGroupAggregatedList
+    , InstanceGroupAggregatedList
+    , instanceGroupAggregatedList
+    , igalNextPageToken
+    , igalKind
+    , igalItems
+    , igalSelfLink
+    , igalId
+
+    -- * OperationStatus
+    , OperationStatus (..)
+
+    -- * Route
+    , Route
+    , route
+    , rPriority
+    , rKind
+    , rNextHopGateway
+    , rNextHopNetwork
+    , rNetwork
+    , rWarnings
+    , rNextHopIP
+    , rDestRange
+    , rSelfLink
+    , rName
+    , rCreationTimestamp
+    , rId
+    , rNextHopVPNTunnel
+    , rDescription
+    , rTags
+    , rNextHopInstance
+
+    -- * TargetVPNGatewaysScopedListWarningDataItem
+    , TargetVPNGatewaysScopedListWarningDataItem
+    , targetVPNGatewaysScopedListWarningDataItem
+    , tvgslwdiValue
+    , tvgslwdiKey
+
+    -- * TargetVPNGatewaysScopedListWarningCode
+    , TargetVPNGatewaysScopedListWarningCode (..)
+
+    -- * TargetHTTPSProxiesSetSSLCertificatesRequest
+    , TargetHTTPSProxiesSetSSLCertificatesRequest
+    , targetHTTPSProxiesSetSSLCertificatesRequest
+    , thpsscrSSLCertificates
+
+    -- * InstanceTemplate
+    , InstanceTemplate
+    , instanceTemplate
+    , itKind
+    , itSelfLink
+    , itName
+    , itCreationTimestamp
+    , itId
+    , itDescription
+    , itProperties
+
+    -- * ZoneMaintenanceWindowsItem
+    , ZoneMaintenanceWindowsItem
+    , zoneMaintenanceWindowsItem
+    , zmwiBeginTime
+    , zmwiName
+    , zmwiEndTime
+    , zmwiDescription
+
+    -- * TargetVPNGateway
+    , TargetVPNGateway
+    , targetVPNGateway
+    , tvgStatus
+    , tvgKind
+    , tvgNetwork
+    , tvgSelfLink
+    , tvgName
+    , tvgCreationTimestamp
+    , tvgId
+    , tvgRegion
+    , tvgTunnels
+    , tvgDescription
+    , tvgForwardingRules
+
+    -- * DiskStatus
+    , DiskStatus (..)
+
+    -- * ManagedInstanceInstanceStatus
+    , ManagedInstanceInstanceStatus (..)
+
+    -- * URLMapsValidateResponse
+    , URLMapsValidateResponse
+    , urlMapsValidateResponse
+    , umvrResult
+
+    -- * SSLCertificate
+    , SSLCertificate
+    , sslCertificate
+    , scPrivateKey
+    , scKind
+    , scSelfLink
+    , scName
+    , scCreationTimestamp
+    , scId
+    , scCertificate
+    , scDescription
+
+    -- * URLMapReference
+    , URLMapReference
+    , urlMapReference
+    , umrURLMap
+
+    -- * AttachedDiskMode
+    , AttachedDiskMode (..)
+
+    -- * TargetPoolsAddHealthCheckRequest
+    , TargetPoolsAddHealthCheckRequest
+    , targetPoolsAddHealthCheckRequest
+    , tpahcrHealthChecks
+
+    -- * DiskAggregatedListItems
+    , DiskAggregatedListItems
+    , diskAggregatedListItems
+    , daliAddtional
+
+    -- * UsageExportLocation
+    , UsageExportLocation
+    , usageExportLocation
+    , uelReportNamePrefix
+    , uelBucketName
+
+    -- * ZoneList
+    , ZoneList
+    , zoneList
+    , zlNextPageToken
+    , zlKind
+    , zlItems
+    , zlSelfLink
+    , zlId
+
+    -- * RegionStatus
+    , RegionStatus (..)
+
+    -- * ManagedInstance
+    , ManagedInstance
+    , managedInstance
+    , miLastAttempt
+    , miCurrentAction
+    , miId
+    , miInstanceStatus
+    , miInstance
+
+    -- * InstanceGroupManagerAggregatedListItems
+    , InstanceGroupManagerAggregatedListItems
+    , instanceGroupManagerAggregatedListItems
+    , igmaliAddtional
+
+    -- * InstanceGroupManagersDeleteInstancesRequest
+    , InstanceGroupManagersDeleteInstancesRequest
+    , instanceGroupManagersDeleteInstancesRequest
+    , igmdirInstances
+
+    -- * Backend
+    , Backend
+    , backend
+    , bGroup
+    , bBalancingMode
+    , bMaxUtilization
+    , bMaxRate
+    , bMaxRatePerInstance
+    , bDescription
+    , bCapacityScaler
+
+    -- * TargetVPNGatewaysScopedListWarning
+    , TargetVPNGatewaysScopedListWarning
+    , targetVPNGatewaysScopedListWarning
+    , tvgslwData
+    , tvgslwCode
+    , tvgslwMessage
+
+    -- * AddressList
+    , AddressList
+    , addressList
+    , alNextPageToken
+    , alKind
+    , alItems
+    , alSelfLink
+    , alId
+
+    -- * ForwardingRuleAggregatedListItems
+    , ForwardingRuleAggregatedListItems
+    , forwardingRuleAggregatedListItems
+    , fraliAddtional
+
+    -- * OperationAggregatedListItems
+    , OperationAggregatedListItems
+    , operationAggregatedListItems
+    , oaliAddtional
+
+    -- * InstanceGroupManagerActionsSummary
+    , InstanceGroupManagerActionsSummary
+    , instanceGroupManagerActionsSummary
+    , igmasDeleting
+    , igmasRestarting
+    , igmasNone
+    , igmasCreating
+    , igmasRefreshing
+    , igmasRecreating
+    , igmasAbandoning
+
+    -- * VPNTunnelStatus
+    , VPNTunnelStatus (..)
+
+    -- * ServiceAccount
+    , ServiceAccount
+    , serviceAccount
+    , saEmail
+    , saScopes
+
+    -- * NetworkList
+    , NetworkList
+    , networkList
+    , nlNextPageToken
+    , nlKind
+    , nlItems
+    , nlSelfLink
+    , nlId
+
+    -- * InstanceGroupsListInstancesRequest
+    , InstanceGroupsListInstancesRequest
+    , instanceGroupsListInstancesRequest
+    , iglirInstanceState
+
+    -- * BackendBalancingMode
+    , BackendBalancingMode (..)
+
+    -- * TargetPoolAggregatedListItems
+    , TargetPoolAggregatedListItems
+    , targetPoolAggregatedListItems
+    , tpaliAddtional
+
+    -- * TargetInstancesScopedList
+    , TargetInstancesScopedList
+    , targetInstancesScopedList
+    , tislWarning
+    , tislTargetInstances
+
+    -- * AddressAggregatedListItems
+    , AddressAggregatedListItems
+    , addressAggregatedListItems
+    , aAddtional
+
+    -- * AutoscalerList
+    , AutoscalerList
+    , autoscalerList
+    , autNextPageToken
+    , autKind
+    , autItems
+    , autSelfLink
+    , autId
+
+    -- * VPNTunnelAggregatedList
+    , VPNTunnelAggregatedList
+    , vpnTunnelAggregatedList
+    , vtalNextPageToken
+    , vtalKind
+    , vtalItems
+    , vtalSelfLink
+    , vtalId
+
+    -- * AttachedDisk
+    , AttachedDisk
+    , attachedDisk
+    , adKind
+    , adMode
+    , adBoot
+    , adAutoDelete
+    , adInitializeParams
+    , adDeviceName
+    , adInterface
+    , adSource
+    , adLicenses
+    , adType
+    , adIndex
+
+    -- * DiskTypeList
+    , DiskTypeList
+    , diskTypeList
+    , dtlNextPageToken
+    , dtlKind
+    , dtlItems
+    , dtlSelfLink
+    , dtlId
+
+    -- * MachineTypeList
+    , MachineTypeList
+    , machineTypeList
+    , mtlNextPageToken
+    , mtlKind
+    , mtlItems
+    , mtlSelfLink
+    , mtlId
+
+    -- * TargetHTTPProxyList
+    , TargetHTTPProxyList
+    , targetHTTPProxyList
+    , thttpplNextPageToken
+    , thttpplKind
+    , thttpplItems
+    , thttpplSelfLink
+    , thttpplId
+
+    -- * ForwardingRuleIPProtocol
+    , ForwardingRuleIPProtocol (..)
+
+    -- * DiskTypesScopedList
+    , DiskTypesScopedList
+    , diskTypesScopedList
+    , dtslDiskTypes
+    , dtslWarning
+
+    -- * AddressStatus
+    , AddressStatus (..)
+
+    -- * DiskTypeAggregatedList
+    , DiskTypeAggregatedList
+    , diskTypeAggregatedList
+    , dtalNextPageToken
+    , dtalKind
+    , dtalItems
+    , dtalSelfLink
+    , dtalId
+
+    -- * HTTPHealthCheck
+    , HTTPHealthCheck
+    , hTTPHealthCheck
+    , httphcHealthyThreshold
+    , httphcKind
+    , httphcRequestPath
+    , httphcSelfLink
+    , httphcCheckIntervalSec
+    , httphcName
+    , httphcCreationTimestamp
+    , httphcId
+    , httphcHost
+    , httphcTimeoutSec
+    , httphcDescription
+    , httphcUnhealthyThreshold
+    , httphcPort
+
+    -- * BackendServiceGroupHealth
+    , BackendServiceGroupHealth
+    , backendServiceGroupHealth
+    , bsghKind
+    , bsghHealthStatus
+
+    -- * InstanceGroupsListInstancesRequestInstanceState
+    , InstanceGroupsListInstancesRequestInstanceState (..)
+
+    -- * AutoscalersScopedList
+    , AutoscalersScopedList
+    , autoscalersScopedList
+    , aAutoscalers
+    , aWarning
+
+    -- * AutoscalerAggregatedList
+    , AutoscalerAggregatedList
+    , autoscalerAggregatedList
+    , aalNextPageToken
+    , aalKind
+    , aalItems
+    , aalSelfLink
+    , aalId
+
+    -- * AutoscalingPolicy
+    , AutoscalingPolicy
+    , autoscalingPolicy
+    , apCustomMetricUtilizations
+    , apMaxNumReplicas
+    , apCPUUtilization
+    , apLoadBalancingUtilization
+    , apMinNumReplicas
+    , apCoolDownPeriodSec
+
+    -- * RegionList
+    , RegionList
+    , regionList
+    , regNextPageToken
+    , regKind
+    , regItems
+    , regSelfLink
+    , regId
+
+    -- * AttachedDiskInterface
+    , AttachedDiskInterface (..)
+
+    -- * ZoneStatus
+    , ZoneStatus (..)
+
+    -- * VPNTunnelList
+    , VPNTunnelList
+    , vpnTunnelList
+    , vtlNextPageToken
+    , vtlKind
+    , vtlItems
+    , vtlSelfLink
+    , vtlId
+
+    -- * MachineTypeScratchDisksItem
+    , MachineTypeScratchDisksItem
+    , machineTypeScratchDisksItem
+    , mtsdiDiskGb
+
+    -- * MachineTypesScopedList
+    , MachineTypesScopedList
+    , machineTypesScopedList
+    , mtslMachineTypes
+    , mtslWarning
+
+    -- * MachineTypeAggregatedList
+    , MachineTypeAggregatedList
+    , machineTypeAggregatedList
+    , mtalNextPageToken
+    , mtalKind
+    , mtalItems
+    , mtalSelfLink
+    , mtalId
+
+    -- * QuotaMetric
+    , QuotaMetric (..)
+
+    -- * DiskType
+    , DiskType
+    , diskType
+    , dtKind
+    , dtZone
+    , dtSelfLink
+    , dtName
+    , dtCreationTimestamp
+    , dtId
+    , dtValidDiskSize
+    , dtDescription
+    , dtDefaultDiskSizeGb
+    , dtDeprecated
+
+    -- * URLMapValidationResult
+    , URLMapValidationResult
+    , urlMapValidationResult
+    , umvrLoadErrors
+    , umvrLoadSucceeded
+    , umvrTestPassed
+    , umvrTestFailures
+
+    -- * Metadata
+    , Metadata
+    , metadata
+    , mKind
+    , mFingerprint
+    , mItems
+
+    -- * RouteWarningsItem
+    , RouteWarningsItem
+    , routeWarningsItem
+    , rwiData
+    , rwiCode
+    , rwiMessage
+
+    -- * MachineTypesScopedListWarningDataItem
+    , MachineTypesScopedListWarningDataItem
+    , machineTypesScopedListWarningDataItem
+    , mtslwdiValue
+    , mtslwdiKey
+
+    -- * InstanceStatus
+    , InstanceStatus (..)
+
+    -- * MachineTypesScopedListWarningCode
+    , MachineTypesScopedListWarningCode (..)
+
+    -- * DiskTypesScopedListWarningDataItem
+    , DiskTypesScopedListWarningDataItem
+    , diskTypesScopedListWarningDataItem
+    , dtslwdiValue
+    , dtslwdiKey
+
+    -- * TargetHTTPProxy
+    , TargetHTTPProxy
+    , targetHTTPProxy
+    , thttppURLMap
+    , thttppKind
+    , thttppSelfLink
+    , thttppName
+    , thttppCreationTimestamp
+    , thttppId
+    , thttppDescription
+
+    -- * MachineType
+    , MachineType
+    , machineType
+    , mtKind
+    , mtImageSpaceGb
+    , mtZone
+    , mtSelfLink
+    , mtName
+    , mtCreationTimestamp
+    , mtScratchDisks
+    , mtId
+    , mtGuestCPUs
+    , mtMaximumPersistentDisksSizeGb
+    , mtMaximumPersistentDisks
+    , mtMemoryMb
+    , mtDescription
+    , mtDeprecated
+
+    -- * DiskTypesScopedListWarningCode
+    , DiskTypesScopedListWarningCode (..)
+
+    -- * OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- * TargetInstancesScopedListWarning
+    , TargetInstancesScopedListWarning
+    , targetInstancesScopedListWarning
+    , tislwData
+    , tislwCode
+    , tislwMessage
+
+    -- * AutoscalersScopedListWarningDataItem
+    , AutoscalersScopedListWarningDataItem
+    , autoscalersScopedListWarningDataItem
+    , aValue
+    , aKey
+
+    -- * AutoscalersScopedListWarningCode
+    , AutoscalersScopedListWarningCode (..)
+
+    -- * InstanceGroupsListInstances
+    , InstanceGroupsListInstances
+    , instanceGroupsListInstances
+    , igliNextPageToken
+    , igliKind
+    , igliItems
+    , igliSelfLink
+    , igliId
+
+    -- * Autoscaler
+    , Autoscaler
+    , autoscaler
+    , aaKind
+    , aaZone
+    , aaSelfLink
+    , aaName
+    , aaCreationTimestamp
+    , aaAutoscalingPolicy
+    , aaId
+    , aaDescription
+    , aaTarget
+
+    -- * DisksScopedListWarning
+    , DisksScopedListWarning
+    , disksScopedListWarning
+    , dslwData
+    , dslwCode
+    , dslwMessage
+
+    -- * TargetVPNGatewayAggregatedListItems
+    , TargetVPNGatewayAggregatedListItems
+    , targetVPNGatewayAggregatedListItems
+    , tvgaliAddtional
+
+    -- * TargetPoolsScopedListWarning
+    , TargetPoolsScopedListWarning
+    , targetPoolsScopedListWarning
+    , tpslwData
+    , tpslwCode
+    , tpslwMessage
+
+    -- * HealthStatus
+    , HealthStatus
+    , healthStatus
+    , hsIPAddress
+    , hsHealthState
+    , hsPort
+    , hsInstance
+
+    -- * Region
+    , Region
+    , region
+    , rrStatus
+    , rrZones
+    , rrKind
+    , rrSelfLink
+    , rrName
+    , rrCreationTimestamp
+    , rrQuotas
+    , rrId
+    , rrDescription
+    , rrDeprecated
+
+    -- * VPNTunnel
+    , VPNTunnel
+    , vpnTunnel
+    , vtDetailedStatus
+    , vtStatus
+    , vtKind
+    , vtPeerIP
+    , vtTargetVPNGateway
+    , vtSelfLink
+    , vtSharedSecret
+    , vtName
+    , vtCreationTimestamp
+    , vtSharedSecretHash
+    , vtId
+    , vtIkeVersion
+    , vtRegion
+    , vtDescription
+
+    -- * VPNTunnelsScopedListWarningCode
+    , VPNTunnelsScopedListWarningCode (..)
+
+    -- * OperationsScopedListWarning
+    , OperationsScopedListWarning
+    , operationsScopedListWarning
+    , oslwData
+    , oslwCode
+    , oslwMessage
+
+    -- * Scheduling
+    , Scheduling
+    , scheduling
+    , sAutomaticRestart
+    , sOnHostMaintenance
+    , sPreemptible
+
+    -- * VPNTunnelsScopedListWarningDataItem
+    , VPNTunnelsScopedListWarningDataItem
+    , vpnTunnelsScopedListWarningDataItem
+    , vtslwdiValue
+    , vtslwdiKey
+
+    -- * ForwardingRulesScopedListWarning
+    , ForwardingRulesScopedListWarning
+    , forwardingRulesScopedListWarning
+    , frslwData
+    , frslwCode
+    , frslwMessage
+
+    -- * HTTPHealthCheckList
+    , HTTPHealthCheckList
+    , hTTPHealthCheckList
+    , httphclNextPageToken
+    , httphclKind
+    , httphclItems
+    , httphclSelfLink
+    , httphclId
+
+    -- * InstanceGroupManagersScopedListWarning
+    , InstanceGroupManagersScopedListWarning
+    , instanceGroupManagersScopedListWarning
+    , igmslwData
+    , igmslwCode
+    , igmslwMessage
+
+    -- * URLMapsValidateRequest
+    , URLMapsValidateRequest
+    , urlMapsValidateRequest
+    , umvrResource
+
+    -- * InstanceGroupManagersSetTargetPoolsRequest
+    , InstanceGroupManagersSetTargetPoolsRequest
+    , instanceGroupManagersSetTargetPoolsRequest
+    , igmstprFingerprint
+    , igmstprTargetPools
+
+    -- * HTTPSHealthCheckList
+    , HTTPSHealthCheckList
+    , httpsHealthCheckList
+    , hhclNextPageToken
+    , hhclKind
+    , hhclItems
+    , hhclSelfLink
+    , hhclId
+
+    -- * OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- * License
+    , License
+    , license
+    , lChargesUseFee
+    , lKind
+    , lSelfLink
+    , lName
+
+    -- * PathRule
+    , PathRule
+    , pathRule
+    , prService
+    , prPaths
+
+    -- * InstanceList
+    , InstanceList
+    , instanceList
+    , insNextPageToken
+    , insKind
+    , insItems
+    , insSelfLink
+    , insId
+
+    -- * ManagedInstanceLastAttempt
+    , ManagedInstanceLastAttempt
+    , managedInstanceLastAttempt
+    , milaErrors
+
+    -- * BackendServiceList
+    , BackendServiceList
+    , backendServiceList
+    , bslNextPageToken
+    , bslKind
+    , bslItems
+    , bslSelfLink
+    , bslId
+
+    -- * InstanceGroupsScopedListWarning
+    , InstanceGroupsScopedListWarning
+    , instanceGroupsScopedListWarning
+    , igslwData
+    , igslwCode
+    , igslwMessage
+
+    -- * AutoscalingPolicyCPUUtilization
+    , AutoscalingPolicyCPUUtilization
+    , autoscalingPolicyCPUUtilization
+    , apcuUtilizationTarget
+
+    -- * InstanceGroupsScopedListWarningCode
+    , InstanceGroupsScopedListWarningCode (..)
+
+    -- * InstanceGroupsScopedListWarningDataItem
+    , InstanceGroupsScopedListWarningDataItem
+    , instanceGroupsScopedListWarningDataItem
+    , igslwdiValue
+    , igslwdiKey
+
+    -- * ResourceGroupReference
+    , ResourceGroupReference
+    , resourceGroupReference
+    , rgrGroup
+
+    -- * Firewall
+    , Firewall
+    , firewall
+    , fSourceTags
+    , fKind
+    , fTargetTags
+    , fNetwork
+    , fSourceRanges
+    , fSelfLink
+    , fName
+    , fCreationTimestamp
+    , fId
+    , fAllowed
+    , fDescription
+
+    -- * HostRule
+    , HostRule
+    , hostRule
+    , hrHosts
+    , hrDescription
+    , hrPathMatcher
+
+    -- * Quota
+    , Quota
+    , quota
+    , qMetric
+    , qLimit
+    , qUsage
+
+    -- * InstanceGroup
+    , InstanceGroup
+    , instanceGroup
+    , iiSize
+    , iiKind
+    , iiFingerprint
+    , iiNetwork
+    , iiZone
+    , iiSelfLink
+    , iiName
+    , iiCreationTimestamp
+    , iiId
+    , iiDescription
+    , iiNamedPorts
+
+    -- * InstanceWithNamedPortsStatus
+    , InstanceWithNamedPortsStatus (..)
+
+    -- * SnapshotList
+    , SnapshotList
+    , snapshotList
+    , slNextPageToken
+    , slKind
+    , slItems
+    , slSelfLink
+    , slId
+
+    -- * TestFailure
+    , TestFailure
+    , testFailure
+    , tfPath
+    , tfExpectedService
+    , tfHost
+    , tfActualService
+
+    -- * SerialPortOutput
+    , SerialPortOutput
+    , serialPortOutput
+    , spoContents
+    , spoKind
+    , spoSelfLink
+
+    -- * TargetVPNGatewayAggregatedList
+    , TargetVPNGatewayAggregatedList
+    , targetVPNGatewayAggregatedList
+    , tvgalNextPageToken
+    , tvgalKind
+    , tvgalItems
+    , tvgalSelfLink
+    , tvgalId
+
+    -- * MetadataItemsItem
+    , MetadataItemsItem
+    , metadataItemsItem
+    , miiValue
+    , miiKey
+
+    -- * TargetHTTPSProxy
+    , TargetHTTPSProxy
+    , targetHTTPSProxy
+    , thpURLMap
+    , thpSSLCertificates
+    , thpKind
+    , thpSelfLink
+    , thpName
+    , thpCreationTimestamp
+    , thpId
+    , thpDescription
+
+    -- * TargetVPNGatewaysScopedList
+    , TargetVPNGatewaysScopedList
+    , targetVPNGatewaysScopedList
+    , tvgslTargetVPNGateways
+    , tvgslWarning
+
+    -- * AccessConfig
+    , AccessConfig
+    , accessConfig
+    , acKind
+    , acName
+    , acNATIP
+    , acType
+
+    -- * ManagedInstanceLastAttemptErrorsErrorsItem
+    , ManagedInstanceLastAttemptErrorsErrorsItem
+    , managedInstanceLastAttemptErrorsErrorsItem
+    , milaeeiLocation
+    , milaeeiCode
+    , milaeeiMessage
+
+    -- * InstancesScopedListWarningCode
+    , InstancesScopedListWarningCode (..)
+
+    -- * InstancesScopedListWarningDataItem
+    , InstancesScopedListWarningDataItem
+    , instancesScopedListWarningDataItem
+    , islwdiValue
+    , islwdiKey
+
+    -- * BackendService
+    , BackendService
+    , backendService
+    , bsBackends
+    , bsKind
+    , bsFingerprint
+    , bsProtocol
+    , bsSelfLink
+    , bsName
+    , bsCreationTimestamp
+    , bsId
+    , bsTimeoutSec
+    , bsDescription
+    , bsPortName
+    , bsHealthChecks
+    , bsPort
+
+    -- * InstanceMoveRequest
+    , InstanceMoveRequest
+    , instanceMoveRequest
+    , imrTargetInstance
+    , imrDestinationZone
+
+    -- * TargetPoolSessionAffinity
+    , TargetPoolSessionAffinity (..)
+
+    -- * InstanceGroupsScopedList
+    , InstanceGroupsScopedList
+    , instanceGroupsScopedList
+    , igslWarning
+    , igslInstanceGroups
+
+    -- * HTTPSHealthCheck
+    , HTTPSHealthCheck
+    , httpsHealthCheck
+    , hhcHealthyThreshold
+    , hhcKind
+    , hhcRequestPath
+    , hhcSelfLink
+    , hhcCheckIntervalSec
+    , hhcName
+    , hhcCreationTimestamp
+    , hhcId
+    , hhcHost
+    , hhcTimeoutSec
+    , hhcDescription
+    , hhcUnhealthyThreshold
+    , hhcPort
+
+    -- * ImageRawDiskContainerType
+    , ImageRawDiskContainerType (..)
+
+    -- * VPNTunnelAggregatedListItems
+    , VPNTunnelAggregatedListItems
+    , vpnTunnelAggregatedListItems
+    , vtaliAddtional
+
+    -- * Tags
+    , Tags
+    , tags
+    , tFingerprint
+    , tItems
+
+    -- * AddressAggregatedList
+    , AddressAggregatedList
+    , addressAggregatedList
+    , addNextPageToken
+    , addKind
+    , addItems
+    , addSelfLink
+    , addId
+
+    -- * OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+
+    -- * URLMapTest
+    , URLMapTest
+    , urlMapTest
+    , umtPath
+    , umtService
+    , umtHost
+    , umtDescription
+
+    -- * Instance
+    , Instance
+    , instance'
+    , insnStatus
+    , insnServiceAccounts
+    , insnNetworkInterfaces
+    , insnKind
+    , insnZone
+    , insnCPUPlatform
+    , insnSelfLink
+    , insnName
+    , insnStatusMessage
+    , insnCreationTimestamp
+    , insnMachineType
+    , insnMetadata
+    , insnId
+    , insnScheduling
+    , insnDisks
+    , insnCanIPForward
+    , insnDescription
+    , insnTags
+
+    -- * PathMatcher
+    , PathMatcher
+    , pathMatcher
+    , pmDefaultService
+    , pmName
+    , pmPathRules
+    , pmDescription
+    ) where
+
+import           Network.Google.Compute.Types.Product
+import           Network.Google.Compute.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1' of the Compute Engine API. This contains the host and root path used as a starting point for constructing service requests.
+computeService :: Service
+computeService
+  = defaultService (ServiceId "compute:v1")
+      "www.googleapis.com"
+
+-- | View and manage your Google Compute Engine resources
+computeScope :: OAuthScope
+computeScope = "https://www.googleapis.com/auth/compute";
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: OAuthScope
+cloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform";
+
+-- | View your data in Google Cloud Storage
+devstorageReadOnlyScope :: OAuthScope
+devstorageReadOnlyScope = "https://www.googleapis.com/auth/devstorage.read_only";
+
+-- | Manage your data in Google Cloud Storage
+devstorageReadWriteScope :: OAuthScope
+devstorageReadWriteScope = "https://www.googleapis.com/auth/devstorage.read_write";
+
+-- | View your Google Compute Engine resources
+computeReadonlyScope :: OAuthScope
+computeReadonlyScope = "https://www.googleapis.com/auth/compute.readonly";
+
+-- | Manage your data and permissions in Google Cloud Storage
+devstorageFullControlScope :: OAuthScope
+devstorageFullControlScope = "https://www.googleapis.com/auth/devstorage.full_control";
diff --git a/gen/Network/Google/Compute/Types/Product.hs b/gen/Network/Google/Compute/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Compute/Types/Product.hs
@@ -0,0 +1,15819 @@
+{-# 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.Compute.Types.Product
+-- Copyright   : (c) 2015 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.Compute.Types.Product where
+
+import           Network.Google.Compute.Types.Sum
+import           Network.Google.Prelude
+
+-- | Contains a list of TargetHttpsProxy resources.
+--
+-- /See:/ 'targetHTTPSProxyList' smart constructor.
+data TargetHTTPSProxyList = TargetHTTPSProxyList
+    { _thplNextPageToken :: !(Maybe Text)
+    , _thplKind          :: !Text
+    , _thplItems         :: !(Maybe [TargetHTTPSProxy])
+    , _thplSelfLink      :: !(Maybe Text)
+    , _thplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thplNextPageToken'
+--
+-- * 'thplKind'
+--
+-- * 'thplItems'
+--
+-- * 'thplSelfLink'
+--
+-- * 'thplId'
+targetHTTPSProxyList
+    :: TargetHTTPSProxyList
+targetHTTPSProxyList =
+    TargetHTTPSProxyList
+    { _thplNextPageToken = Nothing
+    , _thplKind = "compute#targetHttpsProxyList"
+    , _thplItems = Nothing
+    , _thplSelfLink = Nothing
+    , _thplId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+thplNextPageToken :: Lens' TargetHTTPSProxyList (Maybe Text)
+thplNextPageToken
+  = lens _thplNextPageToken
+      (\ s a -> s{_thplNextPageToken = a})
+
+-- | Type of resource.
+thplKind :: Lens' TargetHTTPSProxyList Text
+thplKind = lens _thplKind (\ s a -> s{_thplKind = a})
+
+-- | A list of TargetHttpsProxy resources.
+thplItems :: Lens' TargetHTTPSProxyList [TargetHTTPSProxy]
+thplItems
+  = lens _thplItems (\ s a -> s{_thplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+thplSelfLink :: Lens' TargetHTTPSProxyList (Maybe Text)
+thplSelfLink
+  = lens _thplSelfLink (\ s a -> s{_thplSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+thplId :: Lens' TargetHTTPSProxyList (Maybe Text)
+thplId = lens _thplId (\ s a -> s{_thplId = a})
+
+instance FromJSON TargetHTTPSProxyList where
+        parseJSON
+          = withObject "TargetHTTPSProxyList"
+              (\ o ->
+                 TargetHTTPSProxyList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetHttpsProxyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetHTTPSProxyList where
+        toJSON TargetHTTPSProxyList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _thplNextPageToken,
+                  Just ("kind" .= _thplKind),
+                  ("items" .=) <$> _thplItems,
+                  ("selfLink" .=) <$> _thplSelfLink,
+                  ("id" .=) <$> _thplId])
+
+--
+-- /See:/ 'addressesScopedList' smart constructor.
+data AddressesScopedList = AddressesScopedList
+    { _aslAddresses :: !(Maybe [Address])
+    , _aslWarning   :: !(Maybe AddressesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslAddresses'
+--
+-- * 'aslWarning'
+addressesScopedList
+    :: AddressesScopedList
+addressesScopedList =
+    AddressesScopedList
+    { _aslAddresses = Nothing
+    , _aslWarning = Nothing
+    }
+
+-- | [Output Only] List of addresses contained in this scope.
+aslAddresses :: Lens' AddressesScopedList [Address]
+aslAddresses
+  = lens _aslAddresses (\ s a -> s{_aslAddresses = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+aslWarning :: Lens' AddressesScopedList (Maybe AddressesScopedListWarning)
+aslWarning
+  = lens _aslWarning (\ s a -> s{_aslWarning = a})
+
+instance FromJSON AddressesScopedList where
+        parseJSON
+          = withObject "AddressesScopedList"
+              (\ o ->
+                 AddressesScopedList <$>
+                   (o .:? "addresses" .!= mempty) <*> (o .:? "warning"))
+
+instance ToJSON AddressesScopedList where
+        toJSON AddressesScopedList{..}
+          = object
+              (catMaybes
+                 [("addresses" .=) <$> _aslAddresses,
+                  ("warning" .=) <$> _aslWarning])
+
+--
+-- /See:/ 'operationWarningsItemDataItem' smart constructor.
+data OperationWarningsItemDataItem = OperationWarningsItemDataItem
+    { _owidiValue :: !(Maybe Text)
+    , _owidiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationWarningsItemDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'owidiValue'
+--
+-- * 'owidiKey'
+operationWarningsItemDataItem
+    :: OperationWarningsItemDataItem
+operationWarningsItemDataItem =
+    OperationWarningsItemDataItem
+    { _owidiValue = Nothing
+    , _owidiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiValue
+  = lens _owidiValue (\ s a -> s{_owidiValue = a})
+
+-- | [Output Only] A key for the warning data.
+owidiKey :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiKey = lens _owidiKey (\ s a -> s{_owidiKey = a})
+
+instance FromJSON OperationWarningsItemDataItem where
+        parseJSON
+          = withObject "OperationWarningsItemDataItem"
+              (\ o ->
+                 OperationWarningsItemDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON OperationWarningsItemDataItem where
+        toJSON OperationWarningsItemDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _owidiValue,
+                  ("key" .=) <$> _owidiKey])
+
+--
+-- /See:/ 'instanceGroupManagersAbandonInstancesRequest' smart constructor.
+newtype InstanceGroupManagersAbandonInstancesRequest = InstanceGroupManagersAbandonInstancesRequest
+    { _igmairInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersAbandonInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmairInstances'
+instanceGroupManagersAbandonInstancesRequest
+    :: InstanceGroupManagersAbandonInstancesRequest
+instanceGroupManagersAbandonInstancesRequest =
+    InstanceGroupManagersAbandonInstancesRequest
+    { _igmairInstances = Nothing
+    }
+
+-- | The URL for one or more instances to abandon from the managed instance
+-- group.
+igmairInstances :: Lens' InstanceGroupManagersAbandonInstancesRequest [Text]
+igmairInstances
+  = lens _igmairInstances
+      (\ s a -> s{_igmairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersAbandonInstancesRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersAbandonInstancesRequest"
+              (\ o ->
+                 InstanceGroupManagersAbandonInstancesRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersAbandonInstancesRequest where
+        toJSON
+          InstanceGroupManagersAbandonInstancesRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igmairInstances])
+
+-- | [Output Only] A map of scoped machine type lists.
+--
+-- /See:/ 'machineTypeAggregatedListItems' smart constructor.
+newtype MachineTypeAggregatedListItems = MachineTypeAggregatedListItems
+    { _mtaliAddtional :: HashMap Text MachineTypesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtaliAddtional'
+machineTypeAggregatedListItems
+    :: HashMap Text MachineTypesScopedList -- ^ 'mtaliAddtional'
+    -> MachineTypeAggregatedListItems
+machineTypeAggregatedListItems pMtaliAddtional_ =
+    MachineTypeAggregatedListItems
+    { _mtaliAddtional = _Coerce # pMtaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of machine types.
+mtaliAddtional :: Lens' MachineTypeAggregatedListItems (HashMap Text MachineTypesScopedList)
+mtaliAddtional
+  = lens _mtaliAddtional
+      (\ s a -> s{_mtaliAddtional = a})
+      . _Coerce
+
+instance FromJSON MachineTypeAggregatedListItems
+         where
+        parseJSON
+          = withObject "MachineTypeAggregatedListItems"
+              (\ o ->
+                 MachineTypeAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON MachineTypeAggregatedListItems where
+        toJSON = toJSON . _mtaliAddtional
+
+-- | [Output Only] A map of scoped disk type lists.
+--
+-- /See:/ 'diskTypeAggregatedListItems' smart constructor.
+newtype DiskTypeAggregatedListItems = DiskTypeAggregatedListItems
+    { _dtaliAddtional :: HashMap Text DiskTypesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtaliAddtional'
+diskTypeAggregatedListItems
+    :: HashMap Text DiskTypesScopedList -- ^ 'dtaliAddtional'
+    -> DiskTypeAggregatedListItems
+diskTypeAggregatedListItems pDtaliAddtional_ =
+    DiskTypeAggregatedListItems
+    { _dtaliAddtional = _Coerce # pDtaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of disk types.
+dtaliAddtional :: Lens' DiskTypeAggregatedListItems (HashMap Text DiskTypesScopedList)
+dtaliAddtional
+  = lens _dtaliAddtional
+      (\ s a -> s{_dtaliAddtional = a})
+      . _Coerce
+
+instance FromJSON DiskTypeAggregatedListItems where
+        parseJSON
+          = withObject "DiskTypeAggregatedListItems"
+              (\ o ->
+                 DiskTypeAggregatedListItems <$> (parseJSONObject o))
+
+instance ToJSON DiskTypeAggregatedListItems where
+        toJSON = toJSON . _dtaliAddtional
+
+-- | Contains a list of Firewall resources.
+--
+-- /See:/ 'firewallList' smart constructor.
+data FirewallList = FirewallList
+    { _flNextPageToken :: !(Maybe Text)
+    , _flKind          :: !Text
+    , _flItems         :: !(Maybe [Firewall])
+    , _flSelfLink      :: !(Maybe Text)
+    , _flId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flNextPageToken'
+--
+-- * 'flKind'
+--
+-- * 'flItems'
+--
+-- * 'flSelfLink'
+--
+-- * 'flId'
+firewallList
+    :: FirewallList
+firewallList =
+    FirewallList
+    { _flNextPageToken = Nothing
+    , _flKind = "compute#firewallList"
+    , _flItems = Nothing
+    , _flSelfLink = Nothing
+    , _flId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+flNextPageToken :: Lens' FirewallList (Maybe Text)
+flNextPageToken
+  = lens _flNextPageToken
+      (\ s a -> s{_flNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#firewallList for lists of
+-- firewalls.
+flKind :: Lens' FirewallList Text
+flKind = lens _flKind (\ s a -> s{_flKind = a})
+
+-- | [Output Only] A list of Firewall resources.
+flItems :: Lens' FirewallList [Firewall]
+flItems
+  = lens _flItems (\ s a -> s{_flItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+flSelfLink :: Lens' FirewallList (Maybe Text)
+flSelfLink
+  = lens _flSelfLink (\ s a -> s{_flSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+flId :: Lens' FirewallList (Maybe Text)
+flId = lens _flId (\ s a -> s{_flId = a})
+
+instance FromJSON FirewallList where
+        parseJSON
+          = withObject "FirewallList"
+              (\ o ->
+                 FirewallList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#firewallList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON FirewallList where
+        toJSON FirewallList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _flNextPageToken,
+                  Just ("kind" .= _flKind), ("items" .=) <$> _flItems,
+                  ("selfLink" .=) <$> _flSelfLink,
+                  ("id" .=) <$> _flId])
+
+-- | [Output Only] Informational warning which replaces the list of instances
+-- when the list is empty.
+--
+-- /See:/ 'instancesScopedListWarning' smart constructor.
+data InstancesScopedListWarning = InstancesScopedListWarning
+    { _islwData    :: !(Maybe [InstancesScopedListWarningDataItem])
+    , _islwCode    :: !(Maybe InstancesScopedListWarningCode)
+    , _islwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islwData'
+--
+-- * 'islwCode'
+--
+-- * 'islwMessage'
+instancesScopedListWarning
+    :: InstancesScopedListWarning
+instancesScopedListWarning =
+    InstancesScopedListWarning
+    { _islwData = Nothing
+    , _islwCode = Nothing
+    , _islwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+islwData :: Lens' InstancesScopedListWarning [InstancesScopedListWarningDataItem]
+islwData
+  = lens _islwData (\ s a -> s{_islwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+islwCode :: Lens' InstancesScopedListWarning (Maybe InstancesScopedListWarningCode)
+islwCode = lens _islwCode (\ s a -> s{_islwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+islwMessage :: Lens' InstancesScopedListWarning (Maybe Text)
+islwMessage
+  = lens _islwMessage (\ s a -> s{_islwMessage = a})
+
+instance FromJSON InstancesScopedListWarning where
+        parseJSON
+          = withObject "InstancesScopedListWarning"
+              (\ o ->
+                 InstancesScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstancesScopedListWarning where
+        toJSON InstancesScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _islwData,
+                  ("code" .=) <$> _islwCode,
+                  ("message" .=) <$> _islwMessage])
+
+-- | A list of InstanceGroup resources.
+--
+-- /See:/ 'instanceGroupList' smart constructor.
+data InstanceGroupList = InstanceGroupList
+    { _iglNextPageToken :: !(Maybe Text)
+    , _iglKind          :: !Text
+    , _iglItems         :: !(Maybe [InstanceGroup])
+    , _iglSelfLink      :: !(Maybe Text)
+    , _iglId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglNextPageToken'
+--
+-- * 'iglKind'
+--
+-- * 'iglItems'
+--
+-- * 'iglSelfLink'
+--
+-- * 'iglId'
+instanceGroupList
+    :: InstanceGroupList
+instanceGroupList =
+    InstanceGroupList
+    { _iglNextPageToken = Nothing
+    , _iglKind = "compute#instanceGroupList"
+    , _iglItems = Nothing
+    , _iglSelfLink = Nothing
+    , _iglId = Nothing
+    }
+
+-- | [Output Only] A token that is used to continue a truncated list request.
+iglNextPageToken :: Lens' InstanceGroupList (Maybe Text)
+iglNextPageToken
+  = lens _iglNextPageToken
+      (\ s a -> s{_iglNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupList for instance group lists.
+iglKind :: Lens' InstanceGroupList Text
+iglKind = lens _iglKind (\ s a -> s{_iglKind = a})
+
+-- | A list of instance groups.
+iglItems :: Lens' InstanceGroupList [InstanceGroup]
+iglItems
+  = lens _iglItems (\ s a -> s{_iglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The URL for this resource type. The server generates this
+-- URL.
+iglSelfLink :: Lens' InstanceGroupList (Maybe Text)
+iglSelfLink
+  = lens _iglSelfLink (\ s a -> s{_iglSelfLink = a})
+
+-- | [Output Only] A unique identifier for this list of instance groups. The
+-- server generates this identifier.
+iglId :: Lens' InstanceGroupList (Maybe Text)
+iglId = lens _iglId (\ s a -> s{_iglId = a})
+
+instance FromJSON InstanceGroupList where
+        parseJSON
+          = withObject "InstanceGroupList"
+              (\ o ->
+                 InstanceGroupList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceGroupList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupList where
+        toJSON InstanceGroupList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _iglNextPageToken,
+                  Just ("kind" .= _iglKind),
+                  ("items" .=) <$> _iglItems,
+                  ("selfLink" .=) <$> _iglSelfLink,
+                  ("id" .=) <$> _iglId])
+
+-- | A map of scoped autoscaler lists.
+--
+-- /See:/ 'autoscalerAggregatedListItems' smart constructor.
+newtype AutoscalerAggregatedListItems = AutoscalerAggregatedListItems
+    { _aaliAddtional :: HashMap Text AutoscalersScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaliAddtional'
+autoscalerAggregatedListItems
+    :: HashMap Text AutoscalersScopedList -- ^ 'aaliAddtional'
+    -> AutoscalerAggregatedListItems
+autoscalerAggregatedListItems pAaliAddtional_ =
+    AutoscalerAggregatedListItems
+    { _aaliAddtional = _Coerce # pAaliAddtional_
+    }
+
+-- | Name of the scope containing this set of autoscalers.
+aaliAddtional :: Lens' AutoscalerAggregatedListItems (HashMap Text AutoscalersScopedList)
+aaliAddtional
+  = lens _aaliAddtional
+      (\ s a -> s{_aaliAddtional = a})
+      . _Coerce
+
+instance FromJSON AutoscalerAggregatedListItems where
+        parseJSON
+          = withObject "AutoscalerAggregatedListItems"
+              (\ o ->
+                 AutoscalerAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON AutoscalerAggregatedListItems where
+        toJSON = toJSON . _aaliAddtional
+
+--
+-- /See:/ 'instanceGroupManagersSetInstanceTemplateRequest' smart constructor.
+newtype InstanceGroupManagersSetInstanceTemplateRequest = InstanceGroupManagersSetInstanceTemplateRequest
+    { _igmsitrInstanceTemplate :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersSetInstanceTemplateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmsitrInstanceTemplate'
+instanceGroupManagersSetInstanceTemplateRequest
+    :: InstanceGroupManagersSetInstanceTemplateRequest
+instanceGroupManagersSetInstanceTemplateRequest =
+    InstanceGroupManagersSetInstanceTemplateRequest
+    { _igmsitrInstanceTemplate = Nothing
+    }
+
+-- | The URL of the instance template that is specified for this managed
+-- instance group. The group uses this template to create all new instances
+-- in the managed instance group.
+igmsitrInstanceTemplate :: Lens' InstanceGroupManagersSetInstanceTemplateRequest (Maybe Text)
+igmsitrInstanceTemplate
+  = lens _igmsitrInstanceTemplate
+      (\ s a -> s{_igmsitrInstanceTemplate = a})
+
+instance FromJSON
+         InstanceGroupManagersSetInstanceTemplateRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersSetInstanceTemplateRequest"
+              (\ o ->
+                 InstanceGroupManagersSetInstanceTemplateRequest <$>
+                   (o .:? "instanceTemplate"))
+
+instance ToJSON
+         InstanceGroupManagersSetInstanceTemplateRequest where
+        toJSON
+          InstanceGroupManagersSetInstanceTemplateRequest{..}
+          = object
+              (catMaybes
+                 [("instanceTemplate" .=) <$>
+                    _igmsitrInstanceTemplate])
+
+-- | Deprecation status for a public resource.
+--
+-- /See:/ 'deprecationStatus' smart constructor.
+data DeprecationStatus = DeprecationStatus
+    { _dsState       :: !(Maybe DeprecationStatusState)
+    , _dsDeleted     :: !(Maybe Text)
+    , _dsReplacement :: !(Maybe Text)
+    , _dsObsolete    :: !(Maybe Text)
+    , _dsDeprecated  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeprecationStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsState'
+--
+-- * 'dsDeleted'
+--
+-- * 'dsReplacement'
+--
+-- * 'dsObsolete'
+--
+-- * 'dsDeprecated'
+deprecationStatus
+    :: DeprecationStatus
+deprecationStatus =
+    DeprecationStatus
+    { _dsState = Nothing
+    , _dsDeleted = Nothing
+    , _dsReplacement = Nothing
+    , _dsObsolete = Nothing
+    , _dsDeprecated = Nothing
+    }
+
+-- | The deprecation state of this resource. This can be DEPRECATED,
+-- OBSOLETE, or DELETED. Operations which create a new resource using a
+-- DEPRECATED resource will return successfully, but with a warning
+-- indicating the deprecated resource and recommending its replacement.
+-- Operations which use OBSOLETE or DELETED resources will be rejected and
+-- result in an error.
+dsState :: Lens' DeprecationStatus (Maybe DeprecationStatusState)
+dsState = lens _dsState (\ s a -> s{_dsState = a})
+
+-- | An optional RFC3339 timestamp on or after which the deprecation state of
+-- this resource will be changed to DELETED.
+dsDeleted :: Lens' DeprecationStatus (Maybe Text)
+dsDeleted
+  = lens _dsDeleted (\ s a -> s{_dsDeleted = a})
+
+-- | The URL of the suggested replacement for a deprecated resource. The
+-- suggested replacement resource must be the same kind of resource as the
+-- deprecated resource.
+dsReplacement :: Lens' DeprecationStatus (Maybe Text)
+dsReplacement
+  = lens _dsReplacement
+      (\ s a -> s{_dsReplacement = a})
+
+-- | An optional RFC3339 timestamp on or after which the deprecation state of
+-- this resource will be changed to OBSOLETE.
+dsObsolete :: Lens' DeprecationStatus (Maybe Text)
+dsObsolete
+  = lens _dsObsolete (\ s a -> s{_dsObsolete = a})
+
+-- | An optional RFC3339 timestamp on or after which the deprecation state of
+-- this resource will be changed to DEPRECATED.
+dsDeprecated :: Lens' DeprecationStatus (Maybe Text)
+dsDeprecated
+  = lens _dsDeprecated (\ s a -> s{_dsDeprecated = a})
+
+instance FromJSON DeprecationStatus where
+        parseJSON
+          = withObject "DeprecationStatus"
+              (\ o ->
+                 DeprecationStatus <$>
+                   (o .:? "state") <*> (o .:? "deleted") <*>
+                     (o .:? "replacement")
+                     <*> (o .:? "obsolete")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON DeprecationStatus where
+        toJSON DeprecationStatus{..}
+          = object
+              (catMaybes
+                 [("state" .=) <$> _dsState,
+                  ("deleted" .=) <$> _dsDeleted,
+                  ("replacement" .=) <$> _dsReplacement,
+                  ("obsolete" .=) <$> _dsObsolete,
+                  ("deprecated" .=) <$> _dsDeprecated])
+
+-- | A persistent disk snapshot resource.
+--
+-- /See:/ 'snapshot' smart constructor.
+data Snapshot = Snapshot
+    { _sStorageBytesStatus :: !(Maybe SnapshotStorageBytesStatus)
+    , _sStatus             :: !(Maybe SnapshotStatus)
+    , _sDiskSizeGb         :: !(Maybe (Textual Int64))
+    , _sSourceDiskId       :: !(Maybe Text)
+    , _sKind               :: !Text
+    , _sStorageBytes       :: !(Maybe (Textual Int64))
+    , _sSelfLink           :: !(Maybe Text)
+    , _sName               :: !(Maybe Text)
+    , _sCreationTimestamp  :: !(Maybe Text)
+    , _sId                 :: !(Maybe (Textual Word64))
+    , _sLicenses           :: !(Maybe [Text])
+    , _sSourceDisk         :: !(Maybe Text)
+    , _sDescription        :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Snapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sStorageBytesStatus'
+--
+-- * 'sStatus'
+--
+-- * 'sDiskSizeGb'
+--
+-- * 'sSourceDiskId'
+--
+-- * 'sKind'
+--
+-- * 'sStorageBytes'
+--
+-- * 'sSelfLink'
+--
+-- * 'sName'
+--
+-- * 'sCreationTimestamp'
+--
+-- * 'sId'
+--
+-- * 'sLicenses'
+--
+-- * 'sSourceDisk'
+--
+-- * 'sDescription'
+snapshot
+    :: Snapshot
+snapshot =
+    Snapshot
+    { _sStorageBytesStatus = Nothing
+    , _sStatus = Nothing
+    , _sDiskSizeGb = Nothing
+    , _sSourceDiskId = Nothing
+    , _sKind = "compute#snapshot"
+    , _sStorageBytes = Nothing
+    , _sSelfLink = Nothing
+    , _sName = Nothing
+    , _sCreationTimestamp = Nothing
+    , _sId = Nothing
+    , _sLicenses = Nothing
+    , _sSourceDisk = Nothing
+    , _sDescription = Nothing
+    }
+
+-- | [Output Only] An indicator whether storageBytes is in a stable state or
+-- it is being adjusted as a result of shared storage reallocation.
+sStorageBytesStatus :: Lens' Snapshot (Maybe SnapshotStorageBytesStatus)
+sStorageBytesStatus
+  = lens _sStorageBytesStatus
+      (\ s a -> s{_sStorageBytesStatus = a})
+
+-- | [Output Only] The status of the snapshot.
+sStatus :: Lens' Snapshot (Maybe SnapshotStatus)
+sStatus = lens _sStatus (\ s a -> s{_sStatus = a})
+
+-- | [Output Only] Size of the snapshot, specified in GB.
+sDiskSizeGb :: Lens' Snapshot (Maybe Int64)
+sDiskSizeGb
+  = lens _sDiskSizeGb (\ s a -> s{_sDiskSizeGb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The ID value of the disk used to create this snapshot.
+-- This value may be used to determine whether the snapshot was taken from
+-- the current or a previous instance of a given disk name.
+sSourceDiskId :: Lens' Snapshot (Maybe Text)
+sSourceDiskId
+  = lens _sSourceDiskId
+      (\ s a -> s{_sSourceDiskId = a})
+
+-- | [Output Only] Type of the resource. Always compute#snapshot for Snapshot
+-- resources.
+sKind :: Lens' Snapshot Text
+sKind = lens _sKind (\ s a -> s{_sKind = a})
+
+-- | [Output Only] A size of the the storage used by the snapshot. As
+-- snapshots share storage, this number is expected to change with snapshot
+-- creation\/deletion.
+sStorageBytes :: Lens' Snapshot (Maybe Int64)
+sStorageBytes
+  = lens _sStorageBytes
+      (\ s a -> s{_sStorageBytes = a})
+      . mapping _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+sSelfLink :: Lens' Snapshot (Maybe Text)
+sSelfLink
+  = lens _sSelfLink (\ s a -> s{_sSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+sName :: Lens' Snapshot (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+sCreationTimestamp :: Lens' Snapshot (Maybe Text)
+sCreationTimestamp
+  = lens _sCreationTimestamp
+      (\ s a -> s{_sCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+sId :: Lens' Snapshot (Maybe Word64)
+sId
+  = lens _sId (\ s a -> s{_sId = a}) . mapping _Coerce
+
+-- | Public visible licenses.
+sLicenses :: Lens' Snapshot [Text]
+sLicenses
+  = lens _sLicenses (\ s a -> s{_sLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | The source disk used to create this snapshot.
+sSourceDisk :: Lens' Snapshot (Maybe Text)
+sSourceDisk
+  = lens _sSourceDisk (\ s a -> s{_sSourceDisk = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+sDescription :: Lens' Snapshot (Maybe Text)
+sDescription
+  = lens _sDescription (\ s a -> s{_sDescription = a})
+
+instance FromJSON Snapshot where
+        parseJSON
+          = withObject "Snapshot"
+              (\ o ->
+                 Snapshot <$>
+                   (o .:? "storageBytesStatus") <*> (o .:? "status") <*>
+                     (o .:? "diskSizeGb")
+                     <*> (o .:? "sourceDiskId")
+                     <*> (o .:? "kind" .!= "compute#snapshot")
+                     <*> (o .:? "storageBytes")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "sourceDisk")
+                     <*> (o .:? "description"))
+
+instance ToJSON Snapshot where
+        toJSON Snapshot{..}
+          = object
+              (catMaybes
+                 [("storageBytesStatus" .=) <$> _sStorageBytesStatus,
+                  ("status" .=) <$> _sStatus,
+                  ("diskSizeGb" .=) <$> _sDiskSizeGb,
+                  ("sourceDiskId" .=) <$> _sSourceDiskId,
+                  Just ("kind" .= _sKind),
+                  ("storageBytes" .=) <$> _sStorageBytes,
+                  ("selfLink" .=) <$> _sSelfLink,
+                  ("name" .=) <$> _sName,
+                  ("creationTimestamp" .=) <$> _sCreationTimestamp,
+                  ("id" .=) <$> _sId, ("licenses" .=) <$> _sLicenses,
+                  ("sourceDisk" .=) <$> _sSourceDisk,
+                  ("description" .=) <$> _sDescription])
+
+-- | Custom utilization metric policy.
+--
+-- /See:/ 'autoscalingPolicyCustomMetricUtilization' smart constructor.
+data AutoscalingPolicyCustomMetricUtilization = AutoscalingPolicyCustomMetricUtilization
+    { _apcmuUtilizationTarget     :: !(Maybe (Textual Double))
+    , _apcmuMetric                :: !(Maybe Text)
+    , _apcmuUtilizationTargetType :: !(Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicyCustomMetricUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apcmuUtilizationTarget'
+--
+-- * 'apcmuMetric'
+--
+-- * 'apcmuUtilizationTargetType'
+autoscalingPolicyCustomMetricUtilization
+    :: AutoscalingPolicyCustomMetricUtilization
+autoscalingPolicyCustomMetricUtilization =
+    AutoscalingPolicyCustomMetricUtilization
+    { _apcmuUtilizationTarget = Nothing
+    , _apcmuMetric = Nothing
+    , _apcmuUtilizationTargetType = Nothing
+    }
+
+-- | Target value of the metric which Autoscaler should maintain. Must be a
+-- positive value.
+apcmuUtilizationTarget :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Double)
+apcmuUtilizationTarget
+  = lens _apcmuUtilizationTarget
+      (\ s a -> s{_apcmuUtilizationTarget = a})
+      . mapping _Coerce
+
+-- | Identifier of the metric. It should be a Cloud Monitoring metric. The
+-- metric can not have negative values. The metric should be an utilization
+-- metric (increasing number of VMs handling requests x times should reduce
+-- average value of the metric roughly x times). For example you could use:
+-- compute.googleapis.com\/instance\/network\/received_bytes_count.
+apcmuMetric :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe Text)
+apcmuMetric
+  = lens _apcmuMetric (\ s a -> s{_apcmuMetric = a})
+
+-- | Defines type in which utilization_target is expressed.
+apcmuUtilizationTargetType :: Lens' AutoscalingPolicyCustomMetricUtilization (Maybe AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType)
+apcmuUtilizationTargetType
+  = lens _apcmuUtilizationTargetType
+      (\ s a -> s{_apcmuUtilizationTargetType = a})
+
+instance FromJSON
+         AutoscalingPolicyCustomMetricUtilization where
+        parseJSON
+          = withObject
+              "AutoscalingPolicyCustomMetricUtilization"
+              (\ o ->
+                 AutoscalingPolicyCustomMetricUtilization <$>
+                   (o .:? "utilizationTarget") <*> (o .:? "metric") <*>
+                     (o .:? "utilizationTargetType"))
+
+instance ToJSON
+         AutoscalingPolicyCustomMetricUtilization where
+        toJSON AutoscalingPolicyCustomMetricUtilization{..}
+          = object
+              (catMaybes
+                 [("utilizationTarget" .=) <$>
+                    _apcmuUtilizationTarget,
+                  ("metric" .=) <$> _apcmuMetric,
+                  ("utilizationTargetType" .=) <$>
+                    _apcmuUtilizationTargetType])
+
+-- | Contains a list of ForwardingRule resources.
+--
+-- /See:/ 'forwardingRuleList' smart constructor.
+data ForwardingRuleList = ForwardingRuleList
+    { _frlNextPageToken :: !(Maybe Text)
+    , _frlKind          :: !Text
+    , _frlItems         :: !(Maybe [ForwardingRule])
+    , _frlSelfLink      :: !(Maybe Text)
+    , _frlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frlNextPageToken'
+--
+-- * 'frlKind'
+--
+-- * 'frlItems'
+--
+-- * 'frlSelfLink'
+--
+-- * 'frlId'
+forwardingRuleList
+    :: ForwardingRuleList
+forwardingRuleList =
+    ForwardingRuleList
+    { _frlNextPageToken = Nothing
+    , _frlKind = "compute#forwardingRuleList"
+    , _frlItems = Nothing
+    , _frlSelfLink = Nothing
+    , _frlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+frlNextPageToken :: Lens' ForwardingRuleList (Maybe Text)
+frlNextPageToken
+  = lens _frlNextPageToken
+      (\ s a -> s{_frlNextPageToken = a})
+
+-- | Type of resource.
+frlKind :: Lens' ForwardingRuleList Text
+frlKind = lens _frlKind (\ s a -> s{_frlKind = a})
+
+-- | A list of ForwardingRule resources.
+frlItems :: Lens' ForwardingRuleList [ForwardingRule]
+frlItems
+  = lens _frlItems (\ s a -> s{_frlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+frlSelfLink :: Lens' ForwardingRuleList (Maybe Text)
+frlSelfLink
+  = lens _frlSelfLink (\ s a -> s{_frlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Set by the server.
+frlId :: Lens' ForwardingRuleList (Maybe Text)
+frlId = lens _frlId (\ s a -> s{_frlId = a})
+
+instance FromJSON ForwardingRuleList where
+        parseJSON
+          = withObject "ForwardingRuleList"
+              (\ o ->
+                 ForwardingRuleList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#forwardingRuleList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON ForwardingRuleList where
+        toJSON ForwardingRuleList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _frlNextPageToken,
+                  Just ("kind" .= _frlKind),
+                  ("items" .=) <$> _frlItems,
+                  ("selfLink" .=) <$> _frlSelfLink,
+                  ("id" .=) <$> _frlId])
+
+--
+-- /See:/ 'vpnTunnelsScopedList' smart constructor.
+data VPNTunnelsScopedList = VPNTunnelsScopedList
+    { _vtslVPNTunnels :: !(Maybe [VPNTunnel])
+    , _vtslWarning    :: !(Maybe VPNTunnelsScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtslVPNTunnels'
+--
+-- * 'vtslWarning'
+vpnTunnelsScopedList
+    :: VPNTunnelsScopedList
+vpnTunnelsScopedList =
+    VPNTunnelsScopedList
+    { _vtslVPNTunnels = Nothing
+    , _vtslWarning = Nothing
+    }
+
+-- | List of vpn tunnels contained in this scope.
+vtslVPNTunnels :: Lens' VPNTunnelsScopedList [VPNTunnel]
+vtslVPNTunnels
+  = lens _vtslVPNTunnels
+      (\ s a -> s{_vtslVPNTunnels = a})
+      . _Default
+      . _Coerce
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+vtslWarning :: Lens' VPNTunnelsScopedList (Maybe VPNTunnelsScopedListWarning)
+vtslWarning
+  = lens _vtslWarning (\ s a -> s{_vtslWarning = a})
+
+instance FromJSON VPNTunnelsScopedList where
+        parseJSON
+          = withObject "VPNTunnelsScopedList"
+              (\ o ->
+                 VPNTunnelsScopedList <$>
+                   (o .:? "vpnTunnels" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON VPNTunnelsScopedList where
+        toJSON VPNTunnelsScopedList{..}
+          = object
+              (catMaybes
+                 [("vpnTunnels" .=) <$> _vtslVPNTunnels,
+                  ("warning" .=) <$> _vtslWarning])
+
+--
+-- /See:/ 'instanceGroupsSetNamedPortsRequest' smart constructor.
+data InstanceGroupsSetNamedPortsRequest = InstanceGroupsSetNamedPortsRequest
+    { _igsnprFingerprint :: !(Maybe (Textual Word8))
+    , _igsnprNamedPorts  :: !(Maybe [NamedPort])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsSetNamedPortsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igsnprFingerprint'
+--
+-- * 'igsnprNamedPorts'
+instanceGroupsSetNamedPortsRequest
+    :: InstanceGroupsSetNamedPortsRequest
+instanceGroupsSetNamedPortsRequest =
+    InstanceGroupsSetNamedPortsRequest
+    { _igsnprFingerprint = Nothing
+    , _igsnprNamedPorts = Nothing
+    }
+
+-- | The fingerprint of the named ports information for this instance group.
+-- Use this optional property to prevent conflicts when multiple users
+-- change the named ports settings concurrently. Obtain the fingerprint
+-- with the instanceGroups.get method. Then, include the fingerprint in
+-- your request to ensure that you do not overwrite changes that were
+-- applied from another concurrent request.
+igsnprFingerprint :: Lens' InstanceGroupsSetNamedPortsRequest (Maybe Word8)
+igsnprFingerprint
+  = lens _igsnprFingerprint
+      (\ s a -> s{_igsnprFingerprint = a})
+      . mapping _Coerce
+
+-- | The list of named ports to set for this instance group.
+igsnprNamedPorts :: Lens' InstanceGroupsSetNamedPortsRequest [NamedPort]
+igsnprNamedPorts
+  = lens _igsnprNamedPorts
+      (\ s a -> s{_igsnprNamedPorts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupsSetNamedPortsRequest
+         where
+        parseJSON
+          = withObject "InstanceGroupsSetNamedPortsRequest"
+              (\ o ->
+                 InstanceGroupsSetNamedPortsRequest <$>
+                   (o .:? "fingerprint") <*>
+                     (o .:? "namedPorts" .!= mempty))
+
+instance ToJSON InstanceGroupsSetNamedPortsRequest
+         where
+        toJSON InstanceGroupsSetNamedPortsRequest{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _igsnprFingerprint,
+                  ("namedPorts" .=) <$> _igsnprNamedPorts])
+
+-- | Contains a list of Operation resources.
+--
+-- /See:/ 'operationList' smart constructor.
+data OperationList = OperationList
+    { _olNextPageToken :: !(Maybe Text)
+    , _olKind          :: !Text
+    , _olItems         :: !(Maybe [Operation])
+    , _olSelfLink      :: !(Maybe Text)
+    , _olId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'olNextPageToken'
+--
+-- * 'olKind'
+--
+-- * 'olItems'
+--
+-- * 'olSelfLink'
+--
+-- * 'olId'
+operationList
+    :: OperationList
+operationList =
+    OperationList
+    { _olNextPageToken = Nothing
+    , _olKind = "compute#operationList"
+    , _olItems = Nothing
+    , _olSelfLink = Nothing
+    , _olId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncate.
+olNextPageToken :: Lens' OperationList (Maybe Text)
+olNextPageToken
+  = lens _olNextPageToken
+      (\ s a -> s{_olNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#operations for Operations
+-- resource.
+olKind :: Lens' OperationList Text
+olKind = lens _olKind (\ s a -> s{_olKind = a})
+
+-- | [Output Only] The Operation resources.
+olItems :: Lens' OperationList [Operation]
+olItems
+  = lens _olItems (\ s a -> s{_olItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+olSelfLink :: Lens' OperationList (Maybe Text)
+olSelfLink
+  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+olId :: Lens' OperationList (Maybe Text)
+olId = lens _olId (\ s a -> s{_olId = a})
+
+instance FromJSON OperationList where
+        parseJSON
+          = withObject "OperationList"
+              (\ o ->
+                 OperationList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#operationList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON OperationList where
+        toJSON OperationList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _olNextPageToken,
+                  Just ("kind" .= _olKind), ("items" .=) <$> _olItems,
+                  ("selfLink" .=) <$> _olSelfLink,
+                  ("id" .=) <$> _olId])
+
+-- | A list of Disk resources.
+--
+-- /See:/ 'diskList' smart constructor.
+data DiskList = DiskList
+    { _dlNextPageToken :: !(Maybe Text)
+    , _dlKind          :: !Text
+    , _dlItems         :: !(Maybe [Disk])
+    , _dlSelfLink      :: !(Maybe Text)
+    , _dlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlNextPageToken'
+--
+-- * 'dlKind'
+--
+-- * 'dlItems'
+--
+-- * 'dlSelfLink'
+--
+-- * 'dlId'
+diskList
+    :: DiskList
+diskList =
+    DiskList
+    { _dlNextPageToken = Nothing
+    , _dlKind = "compute#diskList"
+    , _dlItems = Nothing
+    , _dlSelfLink = Nothing
+    , _dlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+dlNextPageToken :: Lens' DiskList (Maybe Text)
+dlNextPageToken
+  = lens _dlNextPageToken
+      (\ s a -> s{_dlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskList for lists of
+-- disks.
+dlKind :: Lens' DiskList Text
+dlKind = lens _dlKind (\ s a -> s{_dlKind = a})
+
+-- | [Output Only] A list of persistent disks.
+dlItems :: Lens' DiskList [Disk]
+dlItems
+  = lens _dlItems (\ s a -> s{_dlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+dlSelfLink :: Lens' DiskList (Maybe Text)
+dlSelfLink
+  = lens _dlSelfLink (\ s a -> s{_dlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dlId :: Lens' DiskList (Maybe Text)
+dlId = lens _dlId (\ s a -> s{_dlId = a})
+
+instance FromJSON DiskList where
+        parseJSON
+          = withObject "DiskList"
+              (\ o ->
+                 DiskList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskList where
+        toJSON DiskList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dlNextPageToken,
+                  Just ("kind" .= _dlKind), ("items" .=) <$> _dlItems,
+                  ("selfLink" .=) <$> _dlSelfLink,
+                  ("id" .=) <$> _dlId])
+
+--
+-- /See:/ 'targetPoolsAddInstanceRequest' smart constructor.
+newtype TargetPoolsAddInstanceRequest = TargetPoolsAddInstanceRequest
+    { _tpairInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAddInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpairInstances'
+targetPoolsAddInstanceRequest
+    :: TargetPoolsAddInstanceRequest
+targetPoolsAddInstanceRequest =
+    TargetPoolsAddInstanceRequest
+    { _tpairInstances = Nothing
+    }
+
+-- | URLs of the instances to be added to targetPool.
+tpairInstances :: Lens' TargetPoolsAddInstanceRequest [InstanceReference]
+tpairInstances
+  = lens _tpairInstances
+      (\ s a -> s{_tpairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsAddInstanceRequest where
+        parseJSON
+          = withObject "TargetPoolsAddInstanceRequest"
+              (\ o ->
+                 TargetPoolsAddInstanceRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON TargetPoolsAddInstanceRequest where
+        toJSON TargetPoolsAddInstanceRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _tpairInstances])
+
+--
+-- /See:/ 'instanceGroupsAddInstancesRequest' smart constructor.
+newtype InstanceGroupsAddInstancesRequest = InstanceGroupsAddInstancesRequest
+    { _igairInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsAddInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igairInstances'
+instanceGroupsAddInstancesRequest
+    :: InstanceGroupsAddInstancesRequest
+instanceGroupsAddInstancesRequest =
+    InstanceGroupsAddInstancesRequest
+    { _igairInstances = Nothing
+    }
+
+-- | The list of instances to add to the instance group.
+igairInstances :: Lens' InstanceGroupsAddInstancesRequest [InstanceReference]
+igairInstances
+  = lens _igairInstances
+      (\ s a -> s{_igairInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupsAddInstancesRequest
+         where
+        parseJSON
+          = withObject "InstanceGroupsAddInstancesRequest"
+              (\ o ->
+                 InstanceGroupsAddInstancesRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON InstanceGroupsAddInstancesRequest
+         where
+        toJSON InstanceGroupsAddInstancesRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igairInstances])
+
+-- | [Output Only] A list of managed instance groups.
+--
+-- /See:/ 'instanceGroupManagerList' smart constructor.
+data InstanceGroupManagerList = InstanceGroupManagerList
+    { _igmlNextPageToken :: !(Maybe Text)
+    , _igmlKind          :: !Text
+    , _igmlItems         :: !(Maybe [InstanceGroupManager])
+    , _igmlSelfLink      :: !(Maybe Text)
+    , _igmlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlNextPageToken'
+--
+-- * 'igmlKind'
+--
+-- * 'igmlItems'
+--
+-- * 'igmlSelfLink'
+--
+-- * 'igmlId'
+instanceGroupManagerList
+    :: InstanceGroupManagerList
+instanceGroupManagerList =
+    InstanceGroupManagerList
+    { _igmlNextPageToken = Nothing
+    , _igmlKind = "compute#instanceGroupManagerList"
+    , _igmlItems = Nothing
+    , _igmlSelfLink = Nothing
+    , _igmlId = Nothing
+    }
+
+-- | [Output Only] A token that is used to continue a truncated list request.
+igmlNextPageToken :: Lens' InstanceGroupManagerList (Maybe Text)
+igmlNextPageToken
+  = lens _igmlNextPageToken
+      (\ s a -> s{_igmlNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManagerList for a list of managed instance groups.
+igmlKind :: Lens' InstanceGroupManagerList Text
+igmlKind = lens _igmlKind (\ s a -> s{_igmlKind = a})
+
+-- | [Output Only] A list of managed instance groups.
+igmlItems :: Lens' InstanceGroupManagerList [InstanceGroupManager]
+igmlItems
+  = lens _igmlItems (\ s a -> s{_igmlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The URL for this resource type. The server generates this
+-- URL.
+igmlSelfLink :: Lens' InstanceGroupManagerList (Maybe Text)
+igmlSelfLink
+  = lens _igmlSelfLink (\ s a -> s{_igmlSelfLink = a})
+
+-- | [Output Only] A unique identifier for this resource type. The server
+-- generates this identifier.
+igmlId :: Lens' InstanceGroupManagerList (Maybe Text)
+igmlId = lens _igmlId (\ s a -> s{_igmlId = a})
+
+instance FromJSON InstanceGroupManagerList where
+        parseJSON
+          = withObject "InstanceGroupManagerList"
+              (\ o ->
+                 InstanceGroupManagerList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceGroupManagerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupManagerList where
+        toJSON InstanceGroupManagerList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igmlNextPageToken,
+                  Just ("kind" .= _igmlKind),
+                  ("items" .=) <$> _igmlItems,
+                  ("selfLink" .=) <$> _igmlSelfLink,
+                  ("id" .=) <$> _igmlId])
+
+-- | An Image resource.
+--
+-- /See:/ 'image' smart constructor.
+data Image = Image
+    { _iStatus            :: !(Maybe ImageStatus)
+    , _iDiskSizeGb        :: !(Maybe (Textual Int64))
+    , _iSourceType        :: !ImageSourceType
+    , _iSourceDiskId      :: !(Maybe Text)
+    , _iKind              :: !Text
+    , _iArchiveSizeBytes  :: !(Maybe (Textual Int64))
+    , _iRawDisk           :: !(Maybe ImageRawDisk)
+    , _iSelfLink          :: !(Maybe Text)
+    , _iName              :: !(Maybe Text)
+    , _iCreationTimestamp :: !(Maybe Text)
+    , _iId                :: !(Maybe (Textual Word64))
+    , _iLicenses          :: !(Maybe [Text])
+    , _iSourceDisk        :: !(Maybe Text)
+    , _iDescription       :: !(Maybe Text)
+    , _iDeprecated        :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Image' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iStatus'
+--
+-- * 'iDiskSizeGb'
+--
+-- * 'iSourceType'
+--
+-- * 'iSourceDiskId'
+--
+-- * 'iKind'
+--
+-- * 'iArchiveSizeBytes'
+--
+-- * 'iRawDisk'
+--
+-- * 'iSelfLink'
+--
+-- * 'iName'
+--
+-- * 'iCreationTimestamp'
+--
+-- * 'iId'
+--
+-- * 'iLicenses'
+--
+-- * 'iSourceDisk'
+--
+-- * 'iDescription'
+--
+-- * 'iDeprecated'
+image
+    :: Image
+image =
+    Image
+    { _iStatus = Nothing
+    , _iDiskSizeGb = Nothing
+    , _iSourceType = Raw
+    , _iSourceDiskId = Nothing
+    , _iKind = "compute#image"
+    , _iArchiveSizeBytes = Nothing
+    , _iRawDisk = Nothing
+    , _iSelfLink = Nothing
+    , _iName = Nothing
+    , _iCreationTimestamp = Nothing
+    , _iId = Nothing
+    , _iLicenses = Nothing
+    , _iSourceDisk = Nothing
+    , _iDescription = Nothing
+    , _iDeprecated = Nothing
+    }
+
+-- | [Output Only] The status of the image. An image can be used to create
+-- other resources, such as instances, only after the image has been
+-- successfully created and the status is set to READY. Possible values are
+-- FAILED, PENDING, or READY.
+iStatus :: Lens' Image (Maybe ImageStatus)
+iStatus = lens _iStatus (\ s a -> s{_iStatus = a})
+
+-- | Size of the image when restored onto a persistent disk (in GB).
+iDiskSizeGb :: Lens' Image (Maybe Int64)
+iDiskSizeGb
+  = lens _iDiskSizeGb (\ s a -> s{_iDiskSizeGb = a}) .
+      mapping _Coerce
+
+-- | The type of the image used to create this disk. The default and only
+-- value is RAW
+iSourceType :: Lens' Image ImageSourceType
+iSourceType
+  = lens _iSourceType (\ s a -> s{_iSourceType = a})
+
+-- | The ID value of the disk used to create this image. This value may be
+-- used to determine whether the image was taken from the current or a
+-- previous instance of a given disk name.
+iSourceDiskId :: Lens' Image (Maybe Text)
+iSourceDiskId
+  = lens _iSourceDiskId
+      (\ s a -> s{_iSourceDiskId = a})
+
+-- | [Output Only] Type of the resource. Always compute#image for images.
+iKind :: Lens' Image Text
+iKind = lens _iKind (\ s a -> s{_iKind = a})
+
+-- | Size of the image tar.gz archive stored in Google Cloud Storage (in
+-- bytes).
+iArchiveSizeBytes :: Lens' Image (Maybe Int64)
+iArchiveSizeBytes
+  = lens _iArchiveSizeBytes
+      (\ s a -> s{_iArchiveSizeBytes = a})
+      . mapping _Coerce
+
+-- | The parameters of the raw disk image.
+iRawDisk :: Lens' Image (Maybe ImageRawDisk)
+iRawDisk = lens _iRawDisk (\ s a -> s{_iRawDisk = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+iSelfLink :: Lens' Image (Maybe Text)
+iSelfLink
+  = lens _iSelfLink (\ s a -> s{_iSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+iName :: Lens' Image (Maybe Text)
+iName = lens _iName (\ s a -> s{_iName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+iCreationTimestamp :: Lens' Image (Maybe Text)
+iCreationTimestamp
+  = lens _iCreationTimestamp
+      (\ s a -> s{_iCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+iId :: Lens' Image (Maybe Word64)
+iId
+  = lens _iId (\ s a -> s{_iId = a}) . mapping _Coerce
+
+-- | Any applicable publicly visible licenses.
+iLicenses :: Lens' Image [Text]
+iLicenses
+  = lens _iLicenses (\ s a -> s{_iLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | URL of the The source disk used to create this image. This can be a full
+-- or valid partial URL. You must provide either this property or the
+-- rawDisk.source property but not both to create an image. For example,
+-- the following are valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disk\/disk
+-- - projects\/project\/zones\/zone\/disk\/disk - zones\/zone\/disks\/disk
+iSourceDisk :: Lens' Image (Maybe Text)
+iSourceDisk
+  = lens _iSourceDisk (\ s a -> s{_iSourceDisk = a})
+
+-- | Textual description of the resource; provided by the client when the
+-- resource is created.
+iDescription :: Lens' Image (Maybe Text)
+iDescription
+  = lens _iDescription (\ s a -> s{_iDescription = a})
+
+-- | The deprecation status associated with this image.
+iDeprecated :: Lens' Image (Maybe DeprecationStatus)
+iDeprecated
+  = lens _iDeprecated (\ s a -> s{_iDeprecated = a})
+
+instance FromJSON Image where
+        parseJSON
+          = withObject "Image"
+              (\ o ->
+                 Image <$>
+                   (o .:? "status") <*> (o .:? "diskSizeGb") <*>
+                     (o .:? "sourceType" .!= Raw)
+                     <*> (o .:? "sourceDiskId")
+                     <*> (o .:? "kind" .!= "compute#image")
+                     <*> (o .:? "archiveSizeBytes")
+                     <*> (o .:? "rawDisk")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "sourceDisk")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON Image where
+        toJSON Image{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _iStatus,
+                  ("diskSizeGb" .=) <$> _iDiskSizeGb,
+                  Just ("sourceType" .= _iSourceType),
+                  ("sourceDiskId" .=) <$> _iSourceDiskId,
+                  Just ("kind" .= _iKind),
+                  ("archiveSizeBytes" .=) <$> _iArchiveSizeBytes,
+                  ("rawDisk" .=) <$> _iRawDisk,
+                  ("selfLink" .=) <$> _iSelfLink,
+                  ("name" .=) <$> _iName,
+                  ("creationTimestamp" .=) <$> _iCreationTimestamp,
+                  ("id" .=) <$> _iId, ("licenses" .=) <$> _iLicenses,
+                  ("sourceDisk" .=) <$> _iSourceDisk,
+                  ("description" .=) <$> _iDescription,
+                  ("deprecated" .=) <$> _iDeprecated])
+
+-- | A UrlMap resource. This resource defines the mapping from URL to the
+-- BackendService resource, based on the \"longest-match\" of the URL\'s
+-- host and path.
+--
+-- /See:/ 'urlMap' smart constructor.
+data URLMap = URLMap
+    { _umTests             :: !(Maybe [URLMapTest])
+    , _umKind              :: !Text
+    , _umFingerprint       :: !(Maybe (Textual Word8))
+    , _umDefaultService    :: !(Maybe Text)
+    , _umSelfLink          :: !(Maybe Text)
+    , _umName              :: !(Maybe Text)
+    , _umCreationTimestamp :: !(Maybe Text)
+    , _umPathMatchers      :: !(Maybe [PathMatcher])
+    , _umId                :: !(Maybe (Textual Word64))
+    , _umHostRules         :: !(Maybe [HostRule])
+    , _umDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMap' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umTests'
+--
+-- * 'umKind'
+--
+-- * 'umFingerprint'
+--
+-- * 'umDefaultService'
+--
+-- * 'umSelfLink'
+--
+-- * 'umName'
+--
+-- * 'umCreationTimestamp'
+--
+-- * 'umPathMatchers'
+--
+-- * 'umId'
+--
+-- * 'umHostRules'
+--
+-- * 'umDescription'
+urlMap
+    :: URLMap
+urlMap =
+    URLMap
+    { _umTests = Nothing
+    , _umKind = "compute#urlMap"
+    , _umFingerprint = Nothing
+    , _umDefaultService = Nothing
+    , _umSelfLink = Nothing
+    , _umName = Nothing
+    , _umCreationTimestamp = Nothing
+    , _umPathMatchers = Nothing
+    , _umId = Nothing
+    , _umHostRules = Nothing
+    , _umDescription = Nothing
+    }
+
+-- | The list of expected URL mappings. Request to update this UrlMap will
+-- succeed only all of the test cases pass.
+umTests :: Lens' URLMap [URLMapTest]
+umTests
+  = lens _umTests (\ s a -> s{_umTests = a}) . _Default
+      . _Coerce
+
+-- | Type of the resource.
+umKind :: Lens' URLMap Text
+umKind = lens _umKind (\ s a -> s{_umKind = a})
+
+-- | Fingerprint of this resource. A hash of the contents stored in this
+-- object. This field is used in optimistic locking. This field will be
+-- ignored when inserting a UrlMap. An up-to-date fingerprint must be
+-- provided in order to update the UrlMap.
+umFingerprint :: Lens' URLMap (Maybe Word8)
+umFingerprint
+  = lens _umFingerprint
+      (\ s a -> s{_umFingerprint = a})
+      . mapping _Coerce
+
+-- | The URL of the BackendService resource if none of the hostRules match.
+umDefaultService :: Lens' URLMap (Maybe Text)
+umDefaultService
+  = lens _umDefaultService
+      (\ s a -> s{_umDefaultService = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+umSelfLink :: Lens' URLMap (Maybe Text)
+umSelfLink
+  = lens _umSelfLink (\ s a -> s{_umSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+umName :: Lens' URLMap (Maybe Text)
+umName = lens _umName (\ s a -> s{_umName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+umCreationTimestamp :: Lens' URLMap (Maybe Text)
+umCreationTimestamp
+  = lens _umCreationTimestamp
+      (\ s a -> s{_umCreationTimestamp = a})
+
+-- | The list of named PathMatchers to use against the URL.
+umPathMatchers :: Lens' URLMap [PathMatcher]
+umPathMatchers
+  = lens _umPathMatchers
+      (\ s a -> s{_umPathMatchers = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Unique identifier for the resource. Set by the server.
+umId :: Lens' URLMap (Maybe Word64)
+umId
+  = lens _umId (\ s a -> s{_umId = a}) .
+      mapping _Coerce
+
+-- | The list of HostRules to use against the URL.
+umHostRules :: Lens' URLMap [HostRule]
+umHostRules
+  = lens _umHostRules (\ s a -> s{_umHostRules = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+umDescription :: Lens' URLMap (Maybe Text)
+umDescription
+  = lens _umDescription
+      (\ s a -> s{_umDescription = a})
+
+instance FromJSON URLMap where
+        parseJSON
+          = withObject "URLMap"
+              (\ o ->
+                 URLMap <$>
+                   (o .:? "tests" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#urlMap")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "defaultService")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "pathMatchers" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "hostRules" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON URLMap where
+        toJSON URLMap{..}
+          = object
+              (catMaybes
+                 [("tests" .=) <$> _umTests, Just ("kind" .= _umKind),
+                  ("fingerprint" .=) <$> _umFingerprint,
+                  ("defaultService" .=) <$> _umDefaultService,
+                  ("selfLink" .=) <$> _umSelfLink,
+                  ("name" .=) <$> _umName,
+                  ("creationTimestamp" .=) <$> _umCreationTimestamp,
+                  ("pathMatchers" .=) <$> _umPathMatchers,
+                  ("id" .=) <$> _umId,
+                  ("hostRules" .=) <$> _umHostRules,
+                  ("description" .=) <$> _umDescription])
+
+-- | A map of scoped instance group lists.
+--
+-- /See:/ 'instanceGroupAggregatedListItems' smart constructor.
+newtype InstanceGroupAggregatedListItems = InstanceGroupAggregatedListItems
+    { _igaliAddtional :: HashMap Text InstanceGroupsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igaliAddtional'
+instanceGroupAggregatedListItems
+    :: HashMap Text InstanceGroupsScopedList -- ^ 'igaliAddtional'
+    -> InstanceGroupAggregatedListItems
+instanceGroupAggregatedListItems pIgaliAddtional_ =
+    InstanceGroupAggregatedListItems
+    { _igaliAddtional = _Coerce # pIgaliAddtional_
+    }
+
+-- | The name of the scope that contains this set of instance groups.
+igaliAddtional :: Lens' InstanceGroupAggregatedListItems (HashMap Text InstanceGroupsScopedList)
+igaliAddtional
+  = lens _igaliAddtional
+      (\ s a -> s{_igaliAddtional = a})
+      . _Coerce
+
+instance FromJSON InstanceGroupAggregatedListItems
+         where
+        parseJSON
+          = withObject "InstanceGroupAggregatedListItems"
+              (\ o ->
+                 InstanceGroupAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON InstanceGroupAggregatedListItems
+         where
+        toJSON = toJSON . _igaliAddtional
+
+-- | Contains a list of TargetPool resources.
+--
+-- /See:/ 'targetPoolList' smart constructor.
+data TargetPoolList = TargetPoolList
+    { _tplNextPageToken :: !(Maybe Text)
+    , _tplKind          :: !Text
+    , _tplItems         :: !(Maybe [TargetPool])
+    , _tplSelfLink      :: !(Maybe Text)
+    , _tplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tplNextPageToken'
+--
+-- * 'tplKind'
+--
+-- * 'tplItems'
+--
+-- * 'tplSelfLink'
+--
+-- * 'tplId'
+targetPoolList
+    :: TargetPoolList
+targetPoolList =
+    TargetPoolList
+    { _tplNextPageToken = Nothing
+    , _tplKind = "compute#targetPoolList"
+    , _tplItems = Nothing
+    , _tplSelfLink = Nothing
+    , _tplId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+tplNextPageToken :: Lens' TargetPoolList (Maybe Text)
+tplNextPageToken
+  = lens _tplNextPageToken
+      (\ s a -> s{_tplNextPageToken = a})
+
+-- | Type of resource.
+tplKind :: Lens' TargetPoolList Text
+tplKind = lens _tplKind (\ s a -> s{_tplKind = a})
+
+-- | A list of TargetPool resources.
+tplItems :: Lens' TargetPoolList [TargetPool]
+tplItems
+  = lens _tplItems (\ s a -> s{_tplItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+tplSelfLink :: Lens' TargetPoolList (Maybe Text)
+tplSelfLink
+  = lens _tplSelfLink (\ s a -> s{_tplSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+tplId :: Lens' TargetPoolList (Maybe Text)
+tplId = lens _tplId (\ s a -> s{_tplId = a})
+
+instance FromJSON TargetPoolList where
+        parseJSON
+          = withObject "TargetPoolList"
+              (\ o ->
+                 TargetPoolList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetPoolList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetPoolList where
+        toJSON TargetPoolList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tplNextPageToken,
+                  Just ("kind" .= _tplKind),
+                  ("items" .=) <$> _tplItems,
+                  ("selfLink" .=) <$> _tplSelfLink,
+                  ("id" .=) <$> _tplId])
+
+--
+-- /See:/ 'targetInstanceAggregatedList' smart constructor.
+data TargetInstanceAggregatedList = TargetInstanceAggregatedList
+    { _tialNextPageToken :: !(Maybe Text)
+    , _tialKind          :: !Text
+    , _tialItems         :: !(Maybe TargetInstanceAggregatedListItems)
+    , _tialSelfLink      :: !(Maybe Text)
+    , _tialId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialNextPageToken'
+--
+-- * 'tialKind'
+--
+-- * 'tialItems'
+--
+-- * 'tialSelfLink'
+--
+-- * 'tialId'
+targetInstanceAggregatedList
+    :: TargetInstanceAggregatedList
+targetInstanceAggregatedList =
+    TargetInstanceAggregatedList
+    { _tialNextPageToken = Nothing
+    , _tialKind = "compute#targetInstanceAggregatedList"
+    , _tialItems = Nothing
+    , _tialSelfLink = Nothing
+    , _tialId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+tialNextPageToken :: Lens' TargetInstanceAggregatedList (Maybe Text)
+tialNextPageToken
+  = lens _tialNextPageToken
+      (\ s a -> s{_tialNextPageToken = a})
+
+-- | Type of resource.
+tialKind :: Lens' TargetInstanceAggregatedList Text
+tialKind = lens _tialKind (\ s a -> s{_tialKind = a})
+
+-- | A map of scoped target instance lists.
+tialItems :: Lens' TargetInstanceAggregatedList (Maybe TargetInstanceAggregatedListItems)
+tialItems
+  = lens _tialItems (\ s a -> s{_tialItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+tialSelfLink :: Lens' TargetInstanceAggregatedList (Maybe Text)
+tialSelfLink
+  = lens _tialSelfLink (\ s a -> s{_tialSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tialId :: Lens' TargetInstanceAggregatedList (Maybe Text)
+tialId = lens _tialId (\ s a -> s{_tialId = a})
+
+instance FromJSON TargetInstanceAggregatedList where
+        parseJSON
+          = withObject "TargetInstanceAggregatedList"
+              (\ o ->
+                 TargetInstanceAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#targetInstanceAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetInstanceAggregatedList where
+        toJSON TargetInstanceAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tialNextPageToken,
+                  Just ("kind" .= _tialKind),
+                  ("items" .=) <$> _tialItems,
+                  ("selfLink" .=) <$> _tialSelfLink,
+                  ("id" .=) <$> _tialId])
+
+--
+-- /See:/ 'disksScopedList' smart constructor.
+data DisksScopedList = DisksScopedList
+    { _dslWarning :: !(Maybe DisksScopedListWarning)
+    , _dslDisks   :: !(Maybe [Disk])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslWarning'
+--
+-- * 'dslDisks'
+disksScopedList
+    :: DisksScopedList
+disksScopedList =
+    DisksScopedList
+    { _dslWarning = Nothing
+    , _dslDisks = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of disks
+-- when the list is empty.
+dslWarning :: Lens' DisksScopedList (Maybe DisksScopedListWarning)
+dslWarning
+  = lens _dslWarning (\ s a -> s{_dslWarning = a})
+
+-- | [Output Only] List of disks contained in this scope.
+dslDisks :: Lens' DisksScopedList [Disk]
+dslDisks
+  = lens _dslDisks (\ s a -> s{_dslDisks = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON DisksScopedList where
+        parseJSON
+          = withObject "DisksScopedList"
+              (\ o ->
+                 DisksScopedList <$>
+                   (o .:? "warning") <*> (o .:? "disks" .!= mempty))
+
+instance ToJSON DisksScopedList where
+        toJSON DisksScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _dslWarning,
+                  ("disks" .=) <$> _dslDisks])
+
+--
+-- /See:/ 'instanceGroupManagersScopedList' smart constructor.
+data InstanceGroupManagersScopedList = InstanceGroupManagersScopedList
+    { _igmslWarning               :: !(Maybe InstanceGroupManagersScopedListWarning)
+    , _igmslInstanceGroupManagers :: !(Maybe [InstanceGroupManager])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmslWarning'
+--
+-- * 'igmslInstanceGroupManagers'
+instanceGroupManagersScopedList
+    :: InstanceGroupManagersScopedList
+instanceGroupManagersScopedList =
+    InstanceGroupManagersScopedList
+    { _igmslWarning = Nothing
+    , _igmslInstanceGroupManagers = Nothing
+    }
+
+-- | [Output Only] The warning that replaces the list of managed instance
+-- groups when the list is empty.
+igmslWarning :: Lens' InstanceGroupManagersScopedList (Maybe InstanceGroupManagersScopedListWarning)
+igmslWarning
+  = lens _igmslWarning (\ s a -> s{_igmslWarning = a})
+
+-- | [Output Only] The list of managed instance groups that are contained in
+-- the specified project and zone.
+igmslInstanceGroupManagers :: Lens' InstanceGroupManagersScopedList [InstanceGroupManager]
+igmslInstanceGroupManagers
+  = lens _igmslInstanceGroupManagers
+      (\ s a -> s{_igmslInstanceGroupManagers = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupManagersScopedList
+         where
+        parseJSON
+          = withObject "InstanceGroupManagersScopedList"
+              (\ o ->
+                 InstanceGroupManagersScopedList <$>
+                   (o .:? "warning") <*>
+                     (o .:? "instanceGroupManagers" .!= mempty))
+
+instance ToJSON InstanceGroupManagersScopedList where
+        toJSON InstanceGroupManagersScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _igmslWarning,
+                  ("instanceGroupManagers" .=) <$>
+                    _igmslInstanceGroupManagers])
+
+--
+-- /See:/ 'diskAggregatedList' smart constructor.
+data DiskAggregatedList = DiskAggregatedList
+    { _dalNextPageToken :: !(Maybe Text)
+    , _dalKind          :: !Text
+    , _dalItems         :: !(Maybe DiskAggregatedListItems)
+    , _dalSelfLink      :: !(Maybe Text)
+    , _dalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dalNextPageToken'
+--
+-- * 'dalKind'
+--
+-- * 'dalItems'
+--
+-- * 'dalSelfLink'
+--
+-- * 'dalId'
+diskAggregatedList
+    :: DiskAggregatedList
+diskAggregatedList =
+    DiskAggregatedList
+    { _dalNextPageToken = Nothing
+    , _dalKind = "compute#diskAggregatedList"
+    , _dalItems = Nothing
+    , _dalSelfLink = Nothing
+    , _dalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+dalNextPageToken :: Lens' DiskAggregatedList (Maybe Text)
+dalNextPageToken
+  = lens _dalNextPageToken
+      (\ s a -> s{_dalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskAggregatedList for
+-- aggregated lists of persistent disks.
+dalKind :: Lens' DiskAggregatedList Text
+dalKind = lens _dalKind (\ s a -> s{_dalKind = a})
+
+-- | [Output Only] A map of scoped disk lists.
+dalItems :: Lens' DiskAggregatedList (Maybe DiskAggregatedListItems)
+dalItems = lens _dalItems (\ s a -> s{_dalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+dalSelfLink :: Lens' DiskAggregatedList (Maybe Text)
+dalSelfLink
+  = lens _dalSelfLink (\ s a -> s{_dalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dalId :: Lens' DiskAggregatedList (Maybe Text)
+dalId = lens _dalId (\ s a -> s{_dalId = a})
+
+instance FromJSON DiskAggregatedList where
+        parseJSON
+          = withObject "DiskAggregatedList"
+              (\ o ->
+                 DiskAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskAggregatedList where
+        toJSON DiskAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dalNextPageToken,
+                  Just ("kind" .= _dalKind),
+                  ("items" .=) <$> _dalItems,
+                  ("selfLink" .=) <$> _dalSelfLink,
+                  ("id" .=) <$> _dalId])
+
+--
+-- /See:/ 'instanceWithNamedPorts' smart constructor.
+data InstanceWithNamedPorts = InstanceWithNamedPorts
+    { _iwnpStatus     :: !(Maybe InstanceWithNamedPortsStatus)
+    , _iwnpNamedPorts :: !(Maybe [NamedPort])
+    , _iwnpInstance   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceWithNamedPorts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iwnpStatus'
+--
+-- * 'iwnpNamedPorts'
+--
+-- * 'iwnpInstance'
+instanceWithNamedPorts
+    :: InstanceWithNamedPorts
+instanceWithNamedPorts =
+    InstanceWithNamedPorts
+    { _iwnpStatus = Nothing
+    , _iwnpNamedPorts = Nothing
+    , _iwnpInstance = Nothing
+    }
+
+-- | [Output Only] The status of the instance.
+iwnpStatus :: Lens' InstanceWithNamedPorts (Maybe InstanceWithNamedPortsStatus)
+iwnpStatus
+  = lens _iwnpStatus (\ s a -> s{_iwnpStatus = a})
+
+-- | [Output Only] The named ports that belong to this instance group.
+iwnpNamedPorts :: Lens' InstanceWithNamedPorts [NamedPort]
+iwnpNamedPorts
+  = lens _iwnpNamedPorts
+      (\ s a -> s{_iwnpNamedPorts = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] The URL of the instance.
+iwnpInstance :: Lens' InstanceWithNamedPorts (Maybe Text)
+iwnpInstance
+  = lens _iwnpInstance (\ s a -> s{_iwnpInstance = a})
+
+instance FromJSON InstanceWithNamedPorts where
+        parseJSON
+          = withObject "InstanceWithNamedPorts"
+              (\ o ->
+                 InstanceWithNamedPorts <$>
+                   (o .:? "status") <*> (o .:? "namedPorts" .!= mempty)
+                     <*> (o .:? "instance"))
+
+instance ToJSON InstanceWithNamedPorts where
+        toJSON InstanceWithNamedPorts{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _iwnpStatus,
+                  ("namedPorts" .=) <$> _iwnpNamedPorts,
+                  ("instance" .=) <$> _iwnpInstance])
+
+--
+-- /See:/ 'forwardingRulesScopedList' smart constructor.
+data ForwardingRulesScopedList = ForwardingRulesScopedList
+    { _frslWarning         :: !(Maybe ForwardingRulesScopedListWarning)
+    , _frslForwardingRules :: !(Maybe [ForwardingRule])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frslWarning'
+--
+-- * 'frslForwardingRules'
+forwardingRulesScopedList
+    :: ForwardingRulesScopedList
+forwardingRulesScopedList =
+    ForwardingRulesScopedList
+    { _frslWarning = Nothing
+    , _frslForwardingRules = Nothing
+    }
+
+-- | Informational warning which replaces the list of forwarding rules when
+-- the list is empty.
+frslWarning :: Lens' ForwardingRulesScopedList (Maybe ForwardingRulesScopedListWarning)
+frslWarning
+  = lens _frslWarning (\ s a -> s{_frslWarning = a})
+
+-- | List of forwarding rules contained in this scope.
+frslForwardingRules :: Lens' ForwardingRulesScopedList [ForwardingRule]
+frslForwardingRules
+  = lens _frslForwardingRules
+      (\ s a -> s{_frslForwardingRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ForwardingRulesScopedList where
+        parseJSON
+          = withObject "ForwardingRulesScopedList"
+              (\ o ->
+                 ForwardingRulesScopedList <$>
+                   (o .:? "warning") <*>
+                     (o .:? "forwardingRules" .!= mempty))
+
+instance ToJSON ForwardingRulesScopedList where
+        toJSON ForwardingRulesScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _frslWarning,
+                  ("forwardingRules" .=) <$> _frslForwardingRules])
+
+--
+-- /See:/ 'instanceReference' smart constructor.
+newtype InstanceReference = InstanceReference
+    { _iInstance :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInstance'
+instanceReference
+    :: InstanceReference
+instanceReference =
+    InstanceReference
+    { _iInstance = Nothing
+    }
+
+-- | The URL for a specific instance.
+iInstance :: Lens' InstanceReference (Maybe Text)
+iInstance
+  = lens _iInstance (\ s a -> s{_iInstance = a})
+
+instance FromJSON InstanceReference where
+        parseJSON
+          = withObject "InstanceReference"
+              (\ o -> InstanceReference <$> (o .:? "instance"))
+
+instance ToJSON InstanceReference where
+        toJSON InstanceReference{..}
+          = object (catMaybes [("instance" .=) <$> _iInstance])
+
+--
+-- /See:/ 'operationAggregatedList' smart constructor.
+data OperationAggregatedList = OperationAggregatedList
+    { _oalNextPageToken :: !(Maybe Text)
+    , _oalKind          :: !Text
+    , _oalItems         :: !(Maybe OperationAggregatedListItems)
+    , _oalSelfLink      :: !(Maybe Text)
+    , _oalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oalNextPageToken'
+--
+-- * 'oalKind'
+--
+-- * 'oalItems'
+--
+-- * 'oalSelfLink'
+--
+-- * 'oalId'
+operationAggregatedList
+    :: OperationAggregatedList
+operationAggregatedList =
+    OperationAggregatedList
+    { _oalNextPageToken = Nothing
+    , _oalKind = "compute#operationAggregatedList"
+    , _oalItems = Nothing
+    , _oalSelfLink = Nothing
+    , _oalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+oalNextPageToken :: Lens' OperationAggregatedList (Maybe Text)
+oalNextPageToken
+  = lens _oalNextPageToken
+      (\ s a -> s{_oalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#operationAggregatedList
+-- for aggregated lists of operations.
+oalKind :: Lens' OperationAggregatedList Text
+oalKind = lens _oalKind (\ s a -> s{_oalKind = a})
+
+-- | [Output Only] A map of scoped operation lists.
+oalItems :: Lens' OperationAggregatedList (Maybe OperationAggregatedListItems)
+oalItems = lens _oalItems (\ s a -> s{_oalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+oalSelfLink :: Lens' OperationAggregatedList (Maybe Text)
+oalSelfLink
+  = lens _oalSelfLink (\ s a -> s{_oalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+oalId :: Lens' OperationAggregatedList (Maybe Text)
+oalId = lens _oalId (\ s a -> s{_oalId = a})
+
+instance FromJSON OperationAggregatedList where
+        parseJSON
+          = withObject "OperationAggregatedList"
+              (\ o ->
+                 OperationAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#operationAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON OperationAggregatedList where
+        toJSON OperationAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _oalNextPageToken,
+                  Just ("kind" .= _oalKind),
+                  ("items" .=) <$> _oalItems,
+                  ("selfLink" .=) <$> _oalSelfLink,
+                  ("id" .=) <$> _oalId])
+
+--
+-- /See:/ 'operationsScopedList' smart constructor.
+data OperationsScopedList = OperationsScopedList
+    { _oslWarning    :: !(Maybe OperationsScopedListWarning)
+    , _oslOperations :: !(Maybe [Operation])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oslWarning'
+--
+-- * 'oslOperations'
+operationsScopedList
+    :: OperationsScopedList
+operationsScopedList =
+    OperationsScopedList
+    { _oslWarning = Nothing
+    , _oslOperations = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of
+-- operations when the list is empty.
+oslWarning :: Lens' OperationsScopedList (Maybe OperationsScopedListWarning)
+oslWarning
+  = lens _oslWarning (\ s a -> s{_oslWarning = a})
+
+-- | [Output Only] List of operations contained in this scope.
+oslOperations :: Lens' OperationsScopedList [Operation]
+oslOperations
+  = lens _oslOperations
+      (\ s a -> s{_oslOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON OperationsScopedList where
+        parseJSON
+          = withObject "OperationsScopedList"
+              (\ o ->
+                 OperationsScopedList <$>
+                   (o .:? "warning") <*>
+                     (o .:? "operations" .!= mempty))
+
+instance ToJSON OperationsScopedList where
+        toJSON OperationsScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _oslWarning,
+                  ("operations" .=) <$> _oslOperations])
+
+-- | The named port. For example: .
+--
+-- /See:/ 'namedPort' smart constructor.
+data NamedPort = NamedPort
+    { _npName :: !(Maybe Text)
+    , _npPort :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NamedPort' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npName'
+--
+-- * 'npPort'
+namedPort
+    :: NamedPort
+namedPort =
+    NamedPort
+    { _npName = Nothing
+    , _npPort = Nothing
+    }
+
+-- | The name for this named port. The name must be 1-63 characters long, and
+-- comply with RFC1035.
+npName :: Lens' NamedPort (Maybe Text)
+npName = lens _npName (\ s a -> s{_npName = a})
+
+-- | The port number, which can be a value between 1 and 65535.
+npPort :: Lens' NamedPort (Maybe Int32)
+npPort
+  = lens _npPort (\ s a -> s{_npPort = a}) .
+      mapping _Coerce
+
+instance FromJSON NamedPort where
+        parseJSON
+          = withObject "NamedPort"
+              (\ o ->
+                 NamedPort <$> (o .:? "name") <*> (o .:? "port"))
+
+instance ToJSON NamedPort where
+        toJSON NamedPort{..}
+          = object
+              (catMaybes
+                 [("name" .=) <$> _npName, ("port" .=) <$> _npPort])
+
+-- | Contains a list of TargetInstance resources.
+--
+-- /See:/ 'targetInstanceList' smart constructor.
+data TargetInstanceList = TargetInstanceList
+    { _tilNextPageToken :: !(Maybe Text)
+    , _tilKind          :: !Text
+    , _tilItems         :: !(Maybe [TargetInstance])
+    , _tilSelfLink      :: !(Maybe Text)
+    , _tilId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tilNextPageToken'
+--
+-- * 'tilKind'
+--
+-- * 'tilItems'
+--
+-- * 'tilSelfLink'
+--
+-- * 'tilId'
+targetInstanceList
+    :: TargetInstanceList
+targetInstanceList =
+    TargetInstanceList
+    { _tilNextPageToken = Nothing
+    , _tilKind = "compute#targetInstanceList"
+    , _tilItems = Nothing
+    , _tilSelfLink = Nothing
+    , _tilId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+tilNextPageToken :: Lens' TargetInstanceList (Maybe Text)
+tilNextPageToken
+  = lens _tilNextPageToken
+      (\ s a -> s{_tilNextPageToken = a})
+
+-- | Type of resource.
+tilKind :: Lens' TargetInstanceList Text
+tilKind = lens _tilKind (\ s a -> s{_tilKind = a})
+
+-- | A list of TargetInstance resources.
+tilItems :: Lens' TargetInstanceList [TargetInstance]
+tilItems
+  = lens _tilItems (\ s a -> s{_tilItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+tilSelfLink :: Lens' TargetInstanceList (Maybe Text)
+tilSelfLink
+  = lens _tilSelfLink (\ s a -> s{_tilSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tilId :: Lens' TargetInstanceList (Maybe Text)
+tilId = lens _tilId (\ s a -> s{_tilId = a})
+
+instance FromJSON TargetInstanceList where
+        parseJSON
+          = withObject "TargetInstanceList"
+              (\ o ->
+                 TargetInstanceList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetInstanceList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetInstanceList where
+        toJSON TargetInstanceList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tilNextPageToken,
+                  Just ("kind" .= _tilKind),
+                  ("items" .=) <$> _tilItems,
+                  ("selfLink" .=) <$> _tilSelfLink,
+                  ("id" .=) <$> _tilId])
+
+--
+-- /See:/ 'instanceGroupManagerAggregatedList' smart constructor.
+data InstanceGroupManagerAggregatedList = InstanceGroupManagerAggregatedList
+    { _igmalNextPageToken :: !(Maybe Text)
+    , _igmalKind          :: !Text
+    , _igmalItems         :: !(Maybe InstanceGroupManagerAggregatedListItems)
+    , _igmalSelfLink      :: !(Maybe Text)
+    , _igmalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmalNextPageToken'
+--
+-- * 'igmalKind'
+--
+-- * 'igmalItems'
+--
+-- * 'igmalSelfLink'
+--
+-- * 'igmalId'
+instanceGroupManagerAggregatedList
+    :: InstanceGroupManagerAggregatedList
+instanceGroupManagerAggregatedList =
+    InstanceGroupManagerAggregatedList
+    { _igmalNextPageToken = Nothing
+    , _igmalKind = "compute#instanceGroupManagerAggregatedList"
+    , _igmalItems = Nothing
+    , _igmalSelfLink = Nothing
+    , _igmalId = Nothing
+    }
+
+-- | [Output Only] A token that is used to continue a truncated list request.
+igmalNextPageToken :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
+igmalNextPageToken
+  = lens _igmalNextPageToken
+      (\ s a -> s{_igmalNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManagerAggregatedList for an aggregated list of
+-- managed instance groups.
+igmalKind :: Lens' InstanceGroupManagerAggregatedList Text
+igmalKind
+  = lens _igmalKind (\ s a -> s{_igmalKind = a})
+
+-- | [Output Only] A map of filtered managed instance group lists.
+igmalItems :: Lens' InstanceGroupManagerAggregatedList (Maybe InstanceGroupManagerAggregatedListItems)
+igmalItems
+  = lens _igmalItems (\ s a -> s{_igmalItems = a})
+
+-- | [Output Only] The URL for this resource type. The server generates this
+-- URL.
+igmalSelfLink :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
+igmalSelfLink
+  = lens _igmalSelfLink
+      (\ s a -> s{_igmalSelfLink = a})
+
+-- | [Output Only] A unique identifier for this aggregated list of managed
+-- instance groups. The server generates this identifier.
+igmalId :: Lens' InstanceGroupManagerAggregatedList (Maybe Text)
+igmalId = lens _igmalId (\ s a -> s{_igmalId = a})
+
+instance FromJSON InstanceGroupManagerAggregatedList
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerAggregatedList"
+              (\ o ->
+                 InstanceGroupManagerAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#instanceGroupManagerAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupManagerAggregatedList
+         where
+        toJSON InstanceGroupManagerAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igmalNextPageToken,
+                  Just ("kind" .= _igmalKind),
+                  ("items" .=) <$> _igmalItems,
+                  ("selfLink" .=) <$> _igmalSelfLink,
+                  ("id" .=) <$> _igmalId])
+
+--
+-- /See:/ 'targetPoolsScopedList' smart constructor.
+data TargetPoolsScopedList = TargetPoolsScopedList
+    { _tpslWarning     :: !(Maybe TargetPoolsScopedListWarning)
+    , _tpslTargetPools :: !(Maybe [TargetPool])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpslWarning'
+--
+-- * 'tpslTargetPools'
+targetPoolsScopedList
+    :: TargetPoolsScopedList
+targetPoolsScopedList =
+    TargetPoolsScopedList
+    { _tpslWarning = Nothing
+    , _tpslTargetPools = Nothing
+    }
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+tpslWarning :: Lens' TargetPoolsScopedList (Maybe TargetPoolsScopedListWarning)
+tpslWarning
+  = lens _tpslWarning (\ s a -> s{_tpslWarning = a})
+
+-- | List of target pools contained in this scope.
+tpslTargetPools :: Lens' TargetPoolsScopedList [TargetPool]
+tpslTargetPools
+  = lens _tpslTargetPools
+      (\ s a -> s{_tpslTargetPools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsScopedList where
+        parseJSON
+          = withObject "TargetPoolsScopedList"
+              (\ o ->
+                 TargetPoolsScopedList <$>
+                   (o .:? "warning") <*>
+                     (o .:? "targetPools" .!= mempty))
+
+instance ToJSON TargetPoolsScopedList where
+        toJSON TargetPoolsScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _tpslWarning,
+                  ("targetPools" .=) <$> _tpslTargetPools])
+
+--
+-- /See:/ 'forwardingRuleAggregatedList' smart constructor.
+data ForwardingRuleAggregatedList = ForwardingRuleAggregatedList
+    { _fralNextPageToken :: !(Maybe Text)
+    , _fralKind          :: !Text
+    , _fralItems         :: !(Maybe ForwardingRuleAggregatedListItems)
+    , _fralSelfLink      :: !(Maybe Text)
+    , _fralId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fralNextPageToken'
+--
+-- * 'fralKind'
+--
+-- * 'fralItems'
+--
+-- * 'fralSelfLink'
+--
+-- * 'fralId'
+forwardingRuleAggregatedList
+    :: ForwardingRuleAggregatedList
+forwardingRuleAggregatedList =
+    ForwardingRuleAggregatedList
+    { _fralNextPageToken = Nothing
+    , _fralKind = "compute#forwardingRuleAggregatedList"
+    , _fralItems = Nothing
+    , _fralSelfLink = Nothing
+    , _fralId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+fralNextPageToken :: Lens' ForwardingRuleAggregatedList (Maybe Text)
+fralNextPageToken
+  = lens _fralNextPageToken
+      (\ s a -> s{_fralNextPageToken = a})
+
+-- | Type of resource.
+fralKind :: Lens' ForwardingRuleAggregatedList Text
+fralKind = lens _fralKind (\ s a -> s{_fralKind = a})
+
+-- | A map of scoped forwarding rule lists.
+fralItems :: Lens' ForwardingRuleAggregatedList (Maybe ForwardingRuleAggregatedListItems)
+fralItems
+  = lens _fralItems (\ s a -> s{_fralItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+fralSelfLink :: Lens' ForwardingRuleAggregatedList (Maybe Text)
+fralSelfLink
+  = lens _fralSelfLink (\ s a -> s{_fralSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+fralId :: Lens' ForwardingRuleAggregatedList (Maybe Text)
+fralId = lens _fralId (\ s a -> s{_fralId = a})
+
+instance FromJSON ForwardingRuleAggregatedList where
+        parseJSON
+          = withObject "ForwardingRuleAggregatedList"
+              (\ o ->
+                 ForwardingRuleAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#forwardingRuleAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON ForwardingRuleAggregatedList where
+        toJSON ForwardingRuleAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _fralNextPageToken,
+                  Just ("kind" .= _fralKind),
+                  ("items" .=) <$> _fralItems,
+                  ("selfLink" .=) <$> _fralSelfLink,
+                  ("id" .=) <$> _fralId])
+
+--
+-- /See:/ 'targetReference' smart constructor.
+newtype TargetReference = TargetReference
+    { _trTarget :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trTarget'
+targetReference
+    :: TargetReference
+targetReference =
+    TargetReference
+    { _trTarget = Nothing
+    }
+
+trTarget :: Lens' TargetReference (Maybe Text)
+trTarget = lens _trTarget (\ s a -> s{_trTarget = a})
+
+instance FromJSON TargetReference where
+        parseJSON
+          = withObject "TargetReference"
+              (\ o -> TargetReference <$> (o .:? "target"))
+
+instance ToJSON TargetReference where
+        toJSON TargetReference{..}
+          = object (catMaybes [("target" .=) <$> _trTarget])
+
+--
+-- /See:/ 'targetPoolAggregatedList' smart constructor.
+data TargetPoolAggregatedList = TargetPoolAggregatedList
+    { _tpalNextPageToken :: !(Maybe Text)
+    , _tpalKind          :: !Text
+    , _tpalItems         :: !(Maybe TargetPoolAggregatedListItems)
+    , _tpalSelfLink      :: !(Maybe Text)
+    , _tpalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpalNextPageToken'
+--
+-- * 'tpalKind'
+--
+-- * 'tpalItems'
+--
+-- * 'tpalSelfLink'
+--
+-- * 'tpalId'
+targetPoolAggregatedList
+    :: TargetPoolAggregatedList
+targetPoolAggregatedList =
+    TargetPoolAggregatedList
+    { _tpalNextPageToken = Nothing
+    , _tpalKind = "compute#targetPoolAggregatedList"
+    , _tpalItems = Nothing
+    , _tpalSelfLink = Nothing
+    , _tpalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+tpalNextPageToken :: Lens' TargetPoolAggregatedList (Maybe Text)
+tpalNextPageToken
+  = lens _tpalNextPageToken
+      (\ s a -> s{_tpalNextPageToken = a})
+
+-- | Type of resource.
+tpalKind :: Lens' TargetPoolAggregatedList Text
+tpalKind = lens _tpalKind (\ s a -> s{_tpalKind = a})
+
+-- | A map of scoped target pool lists.
+tpalItems :: Lens' TargetPoolAggregatedList (Maybe TargetPoolAggregatedListItems)
+tpalItems
+  = lens _tpalItems (\ s a -> s{_tpalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+tpalSelfLink :: Lens' TargetPoolAggregatedList (Maybe Text)
+tpalSelfLink
+  = lens _tpalSelfLink (\ s a -> s{_tpalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+tpalId :: Lens' TargetPoolAggregatedList (Maybe Text)
+tpalId = lens _tpalId (\ s a -> s{_tpalId = a})
+
+instance FromJSON TargetPoolAggregatedList where
+        parseJSON
+          = withObject "TargetPoolAggregatedList"
+              (\ o ->
+                 TargetPoolAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetPoolAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetPoolAggregatedList where
+        toJSON TargetPoolAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tpalNextPageToken,
+                  Just ("kind" .= _tpalKind),
+                  ("items" .=) <$> _tpalItems,
+                  ("selfLink" .=) <$> _tpalSelfLink,
+                  ("id" .=) <$> _tpalId])
+
+--
+-- /See:/ 'operationsScopedListWarningDataItem' smart constructor.
+data OperationsScopedListWarningDataItem = OperationsScopedListWarningDataItem
+    { _oslwdiValue :: !(Maybe Text)
+    , _oslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oslwdiValue'
+--
+-- * 'oslwdiKey'
+operationsScopedListWarningDataItem
+    :: OperationsScopedListWarningDataItem
+operationsScopedListWarningDataItem =
+    OperationsScopedListWarningDataItem
+    { _oslwdiValue = Nothing
+    , _oslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+oslwdiValue :: Lens' OperationsScopedListWarningDataItem (Maybe Text)
+oslwdiValue
+  = lens _oslwdiValue (\ s a -> s{_oslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+oslwdiKey :: Lens' OperationsScopedListWarningDataItem (Maybe Text)
+oslwdiKey
+  = lens _oslwdiKey (\ s a -> s{_oslwdiKey = a})
+
+instance FromJSON OperationsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "OperationsScopedListWarningDataItem"
+              (\ o ->
+                 OperationsScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON OperationsScopedListWarningDataItem
+         where
+        toJSON OperationsScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _oslwdiValue,
+                  ("key" .=) <$> _oslwdiKey])
+
+-- | A TargetPool resource. This resource defines a pool of instances,
+-- associated HttpHealthCheck resources, and the fallback TargetPool.
+--
+-- /See:/ 'targetPool' smart constructor.
+data TargetPool = TargetPool
+    { _tpSessionAffinity   :: !(Maybe TargetPoolSessionAffinity)
+    , _tpBackupPool        :: !(Maybe Text)
+    , _tpKind              :: !Text
+    , _tpSelfLink          :: !(Maybe Text)
+    , _tpName              :: !(Maybe Text)
+    , _tpCreationTimestamp :: !(Maybe Text)
+    , _tpInstances         :: !(Maybe [Text])
+    , _tpId                :: !(Maybe (Textual Word64))
+    , _tpFailoverRatio     :: !(Maybe (Textual Double))
+    , _tpRegion            :: !(Maybe Text)
+    , _tpDescription       :: !(Maybe Text)
+    , _tpHealthChecks      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpSessionAffinity'
+--
+-- * 'tpBackupPool'
+--
+-- * 'tpKind'
+--
+-- * 'tpSelfLink'
+--
+-- * 'tpName'
+--
+-- * 'tpCreationTimestamp'
+--
+-- * 'tpInstances'
+--
+-- * 'tpId'
+--
+-- * 'tpFailoverRatio'
+--
+-- * 'tpRegion'
+--
+-- * 'tpDescription'
+--
+-- * 'tpHealthChecks'
+targetPool
+    :: TargetPool
+targetPool =
+    TargetPool
+    { _tpSessionAffinity = Nothing
+    , _tpBackupPool = Nothing
+    , _tpKind = "compute#targetPool"
+    , _tpSelfLink = Nothing
+    , _tpName = Nothing
+    , _tpCreationTimestamp = Nothing
+    , _tpInstances = Nothing
+    , _tpId = Nothing
+    , _tpFailoverRatio = Nothing
+    , _tpRegion = Nothing
+    , _tpDescription = Nothing
+    , _tpHealthChecks = Nothing
+    }
+
+-- | Sesssion affinity option, must be one of the following values: NONE:
+-- Connections from the same client IP may go to any instance in the pool.
+-- CLIENT_IP: Connections from the same client IP will go to the same
+-- instance in the pool while that instance remains healthy.
+-- CLIENT_IP_PROTO: Connections from the same client IP with the same IP
+-- protocol will go to the same instance in the pool while that instance
+-- remains healthy.
+tpSessionAffinity :: Lens' TargetPool (Maybe TargetPoolSessionAffinity)
+tpSessionAffinity
+  = lens _tpSessionAffinity
+      (\ s a -> s{_tpSessionAffinity = a})
+
+-- | This field is applicable only when the containing target pool is serving
+-- a forwarding rule as the primary pool, and its failoverRatio field is
+-- properly set to a value between [0, 1]. backupPool and failoverRatio
+-- together define the fallback behavior of the primary target pool: if the
+-- ratio of the healthy instances in the primary pool is at or below
+-- failoverRatio, traffic arriving at the load-balanced IP will be directed
+-- to the backup pool. In case where failoverRatio and backupPool are not
+-- set, or all the instances in the backup pool are unhealthy, the traffic
+-- will be directed back to the primary pool in the \"force\" mode, where
+-- traffic will be spread to the healthy instances with the best effort, or
+-- to all instances when no instance is healthy.
+tpBackupPool :: Lens' TargetPool (Maybe Text)
+tpBackupPool
+  = lens _tpBackupPool (\ s a -> s{_tpBackupPool = a})
+
+-- | Type of the resource.
+tpKind :: Lens' TargetPool Text
+tpKind = lens _tpKind (\ s a -> s{_tpKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tpSelfLink :: Lens' TargetPool (Maybe Text)
+tpSelfLink
+  = lens _tpSelfLink (\ s a -> s{_tpSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tpName :: Lens' TargetPool (Maybe Text)
+tpName = lens _tpName (\ s a -> s{_tpName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tpCreationTimestamp :: Lens' TargetPool (Maybe Text)
+tpCreationTimestamp
+  = lens _tpCreationTimestamp
+      (\ s a -> s{_tpCreationTimestamp = a})
+
+-- | A list of resource URLs to the member virtual machines serving this
+-- pool. They must live in zones contained in the same region as this pool.
+tpInstances :: Lens' TargetPool [Text]
+tpInstances
+  = lens _tpInstances (\ s a -> s{_tpInstances = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tpId :: Lens' TargetPool (Maybe Word64)
+tpId
+  = lens _tpId (\ s a -> s{_tpId = a}) .
+      mapping _Coerce
+
+-- | This field is applicable only when the containing target pool is serving
+-- a forwarding rule as the primary pool (i.e., not as a backup pool to
+-- some other target pool). The value of the field must be in [0, 1]. If
+-- set, backupPool must also be set. They together define the fallback
+-- behavior of the primary target pool: if the ratio of the healthy
+-- instances in the primary pool is at or below this number, traffic
+-- arriving at the load-balanced IP will be directed to the backup pool. In
+-- case where failoverRatio is not set or all the instances in the backup
+-- pool are unhealthy, the traffic will be directed back to the primary
+-- pool in the \"force\" mode, where traffic will be spread to the healthy
+-- instances with the best effort, or to all instances when no instance is
+-- healthy.
+tpFailoverRatio :: Lens' TargetPool (Maybe Double)
+tpFailoverRatio
+  = lens _tpFailoverRatio
+      (\ s a -> s{_tpFailoverRatio = a})
+      . mapping _Coerce
+
+-- | [Output Only] URL of the region where the target pool resides.
+tpRegion :: Lens' TargetPool (Maybe Text)
+tpRegion = lens _tpRegion (\ s a -> s{_tpRegion = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+tpDescription :: Lens' TargetPool (Maybe Text)
+tpDescription
+  = lens _tpDescription
+      (\ s a -> s{_tpDescription = a})
+
+-- | A list of URLs to the HttpHealthCheck resource. A member instance in
+-- this pool is considered healthy if and only if all specified health
+-- checks pass. An empty list means all member instances will be considered
+-- healthy at all times.
+tpHealthChecks :: Lens' TargetPool [Text]
+tpHealthChecks
+  = lens _tpHealthChecks
+      (\ s a -> s{_tpHealthChecks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPool where
+        parseJSON
+          = withObject "TargetPool"
+              (\ o ->
+                 TargetPool <$>
+                   (o .:? "sessionAffinity") <*> (o .:? "backupPool")
+                     <*> (o .:? "kind" .!= "compute#targetPool")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "instances" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "failoverRatio")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "healthChecks" .!= mempty))
+
+instance ToJSON TargetPool where
+        toJSON TargetPool{..}
+          = object
+              (catMaybes
+                 [("sessionAffinity" .=) <$> _tpSessionAffinity,
+                  ("backupPool" .=) <$> _tpBackupPool,
+                  Just ("kind" .= _tpKind),
+                  ("selfLink" .=) <$> _tpSelfLink,
+                  ("name" .=) <$> _tpName,
+                  ("creationTimestamp" .=) <$> _tpCreationTimestamp,
+                  ("instances" .=) <$> _tpInstances,
+                  ("id" .=) <$> _tpId,
+                  ("failoverRatio" .=) <$> _tpFailoverRatio,
+                  ("region" .=) <$> _tpRegion,
+                  ("description" .=) <$> _tpDescription,
+                  ("healthChecks" .=) <$> _tpHealthChecks])
+
+-- | Contains a list of Image resources.
+--
+-- /See:/ 'imageList' smart constructor.
+data ImageList = ImageList
+    { _ilNextPageToken :: !(Maybe Text)
+    , _ilKind          :: !Text
+    , _ilItems         :: !(Maybe [Image])
+    , _ilSelfLink      :: !(Maybe Text)
+    , _ilId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilNextPageToken'
+--
+-- * 'ilKind'
+--
+-- * 'ilItems'
+--
+-- * 'ilSelfLink'
+--
+-- * 'ilId'
+imageList
+    :: ImageList
+imageList =
+    ImageList
+    { _ilNextPageToken = Nothing
+    , _ilKind = "compute#imageList"
+    , _ilItems = Nothing
+    , _ilSelfLink = Nothing
+    , _ilId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+ilNextPageToken :: Lens' ImageList (Maybe Text)
+ilNextPageToken
+  = lens _ilNextPageToken
+      (\ s a -> s{_ilNextPageToken = a})
+
+-- | Type of resource.
+ilKind :: Lens' ImageList Text
+ilKind = lens _ilKind (\ s a -> s{_ilKind = a})
+
+-- | [Output Only] A list of Image resources.
+ilItems :: Lens' ImageList [Image]
+ilItems
+  = lens _ilItems (\ s a -> s{_ilItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+ilSelfLink :: Lens' ImageList (Maybe Text)
+ilSelfLink
+  = lens _ilSelfLink (\ s a -> s{_ilSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ilId :: Lens' ImageList (Maybe Text)
+ilId = lens _ilId (\ s a -> s{_ilId = a})
+
+instance FromJSON ImageList where
+        parseJSON
+          = withObject "ImageList"
+              (\ o ->
+                 ImageList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#imageList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON ImageList where
+        toJSON ImageList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ilNextPageToken,
+                  Just ("kind" .= _ilKind), ("items" .=) <$> _ilItems,
+                  ("selfLink" .=) <$> _ilSelfLink,
+                  ("id" .=) <$> _ilId])
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'vpnTunnelsScopedListWarning' smart constructor.
+data VPNTunnelsScopedListWarning = VPNTunnelsScopedListWarning
+    { _vtslwData    :: !(Maybe [VPNTunnelsScopedListWarningDataItem])
+    , _vtslwCode    :: !(Maybe VPNTunnelsScopedListWarningCode)
+    , _vtslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtslwData'
+--
+-- * 'vtslwCode'
+--
+-- * 'vtslwMessage'
+vpnTunnelsScopedListWarning
+    :: VPNTunnelsScopedListWarning
+vpnTunnelsScopedListWarning =
+    VPNTunnelsScopedListWarning
+    { _vtslwData = Nothing
+    , _vtslwCode = Nothing
+    , _vtslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+vtslwData :: Lens' VPNTunnelsScopedListWarning [VPNTunnelsScopedListWarningDataItem]
+vtslwData
+  = lens _vtslwData (\ s a -> s{_vtslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+vtslwCode :: Lens' VPNTunnelsScopedListWarning (Maybe VPNTunnelsScopedListWarningCode)
+vtslwCode
+  = lens _vtslwCode (\ s a -> s{_vtslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+vtslwMessage :: Lens' VPNTunnelsScopedListWarning (Maybe Text)
+vtslwMessage
+  = lens _vtslwMessage (\ s a -> s{_vtslwMessage = a})
+
+instance FromJSON VPNTunnelsScopedListWarning where
+        parseJSON
+          = withObject "VPNTunnelsScopedListWarning"
+              (\ o ->
+                 VPNTunnelsScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON VPNTunnelsScopedListWarning where
+        toJSON VPNTunnelsScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _vtslwData,
+                  ("code" .=) <$> _vtslwCode,
+                  ("message" .=) <$> _vtslwMessage])
+
+-- | A ForwardingRule resource. A ForwardingRule resource specifies which
+-- pool of target virtual machines to forward a packet to if it matches the
+-- given [IPAddress, IPProtocol, portRange] tuple.
+--
+-- /See:/ 'forwardingRule' smart constructor.
+data ForwardingRule = ForwardingRule
+    { _frIPAddress         :: !(Maybe Text)
+    , _frKind              :: !Text
+    , _frPortRange         :: !(Maybe Text)
+    , _frSelfLink          :: !(Maybe Text)
+    , _frName              :: !(Maybe Text)
+    , _frIPProtocol        :: !(Maybe ForwardingRuleIPProtocol)
+    , _frCreationTimestamp :: !(Maybe Text)
+    , _frId                :: !(Maybe (Textual Word64))
+    , _frRegion            :: !(Maybe Text)
+    , _frDescription       :: !(Maybe Text)
+    , _frTarget            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frIPAddress'
+--
+-- * 'frKind'
+--
+-- * 'frPortRange'
+--
+-- * 'frSelfLink'
+--
+-- * 'frName'
+--
+-- * 'frIPProtocol'
+--
+-- * 'frCreationTimestamp'
+--
+-- * 'frId'
+--
+-- * 'frRegion'
+--
+-- * 'frDescription'
+--
+-- * 'frTarget'
+forwardingRule
+    :: ForwardingRule
+forwardingRule =
+    ForwardingRule
+    { _frIPAddress = Nothing
+    , _frKind = "compute#forwardingRule"
+    , _frPortRange = Nothing
+    , _frSelfLink = Nothing
+    , _frName = Nothing
+    , _frIPProtocol = Nothing
+    , _frCreationTimestamp = Nothing
+    , _frId = Nothing
+    , _frRegion = Nothing
+    , _frDescription = Nothing
+    , _frTarget = Nothing
+    }
+
+-- | Value of the reserved IP address that this forwarding rule is serving on
+-- behalf of. For global forwarding rules, the address must be a global IP;
+-- for regional forwarding rules, the address must live in the same region
+-- as the forwarding rule. If left empty (default value), an ephemeral IP
+-- from the same scope (global or regional) will be assigned.
+frIPAddress :: Lens' ForwardingRule (Maybe Text)
+frIPAddress
+  = lens _frIPAddress (\ s a -> s{_frIPAddress = a})
+
+-- | [Output Only] Type of the resource. Always compute#forwardingRule.
+frKind :: Lens' ForwardingRule Text
+frKind = lens _frKind (\ s a -> s{_frKind = a})
+
+-- | Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets
+-- addressed to ports in the specified range will be forwarded to target.
+-- Forwarding rules with the same \`[IPAddress, IPProtocol]\` pair must
+-- have disjoint port ranges.
+frPortRange :: Lens' ForwardingRule (Maybe Text)
+frPortRange
+  = lens _frPortRange (\ s a -> s{_frPortRange = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+frSelfLink :: Lens' ForwardingRule (Maybe Text)
+frSelfLink
+  = lens _frSelfLink (\ s a -> s{_frSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+frName :: Lens' ForwardingRule (Maybe Text)
+frName = lens _frName (\ s a -> s{_frName = a})
+
+-- | The IP protocol to which this rule applies. Valid options are TCP, UDP,
+-- ESP, AH or SCTP.
+frIPProtocol :: Lens' ForwardingRule (Maybe ForwardingRuleIPProtocol)
+frIPProtocol
+  = lens _frIPProtocol (\ s a -> s{_frIPProtocol = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+frCreationTimestamp :: Lens' ForwardingRule (Maybe Text)
+frCreationTimestamp
+  = lens _frCreationTimestamp
+      (\ s a -> s{_frCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+frId :: Lens' ForwardingRule (Maybe Word64)
+frId
+  = lens _frId (\ s a -> s{_frId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the regional forwarding rule
+-- resides. This field is not applicable to global forwarding rules.
+frRegion :: Lens' ForwardingRule (Maybe Text)
+frRegion = lens _frRegion (\ s a -> s{_frRegion = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+frDescription :: Lens' ForwardingRule (Maybe Text)
+frDescription
+  = lens _frDescription
+      (\ s a -> s{_frDescription = a})
+
+-- | The URL of the target resource to receive the matched traffic. For
+-- regional forwarding rules, this target must live in the same region as
+-- the forwarding rule. For global forwarding rules, this target must be a
+-- global TargetHttpProxy or TargetHttpsProxy resource.
+frTarget :: Lens' ForwardingRule (Maybe Text)
+frTarget = lens _frTarget (\ s a -> s{_frTarget = a})
+
+instance FromJSON ForwardingRule where
+        parseJSON
+          = withObject "ForwardingRule"
+              (\ o ->
+                 ForwardingRule <$>
+                   (o .:? "IPAddress") <*>
+                     (o .:? "kind" .!= "compute#forwardingRule")
+                     <*> (o .:? "portRange")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "IPProtocol")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "target"))
+
+instance ToJSON ForwardingRule where
+        toJSON ForwardingRule{..}
+          = object
+              (catMaybes
+                 [("IPAddress" .=) <$> _frIPAddress,
+                  Just ("kind" .= _frKind),
+                  ("portRange" .=) <$> _frPortRange,
+                  ("selfLink" .=) <$> _frSelfLink,
+                  ("name" .=) <$> _frName,
+                  ("IPProtocol" .=) <$> _frIPProtocol,
+                  ("creationTimestamp" .=) <$> _frCreationTimestamp,
+                  ("id" .=) <$> _frId, ("region" .=) <$> _frRegion,
+                  ("description" .=) <$> _frDescription,
+                  ("target" .=) <$> _frTarget])
+
+-- | Contains a list of UrlMap resources.
+--
+-- /See:/ 'urlMapList' smart constructor.
+data URLMapList = URLMapList
+    { _umlNextPageToken :: !(Maybe Text)
+    , _umlKind          :: !Text
+    , _umlItems         :: !(Maybe [URLMap])
+    , _umlSelfLink      :: !(Maybe Text)
+    , _umlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umlNextPageToken'
+--
+-- * 'umlKind'
+--
+-- * 'umlItems'
+--
+-- * 'umlSelfLink'
+--
+-- * 'umlId'
+urlMapList
+    :: URLMapList
+urlMapList =
+    URLMapList
+    { _umlNextPageToken = Nothing
+    , _umlKind = "compute#urlMapList"
+    , _umlItems = Nothing
+    , _umlSelfLink = Nothing
+    , _umlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+umlNextPageToken :: Lens' URLMapList (Maybe Text)
+umlNextPageToken
+  = lens _umlNextPageToken
+      (\ s a -> s{_umlNextPageToken = a})
+
+-- | Type of resource.
+umlKind :: Lens' URLMapList Text
+umlKind = lens _umlKind (\ s a -> s{_umlKind = a})
+
+-- | A list of UrlMap resources.
+umlItems :: Lens' URLMapList [URLMap]
+umlItems
+  = lens _umlItems (\ s a -> s{_umlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+umlSelfLink :: Lens' URLMapList (Maybe Text)
+umlSelfLink
+  = lens _umlSelfLink (\ s a -> s{_umlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Set by the server.
+umlId :: Lens' URLMapList (Maybe Text)
+umlId = lens _umlId (\ s a -> s{_umlId = a})
+
+instance FromJSON URLMapList where
+        parseJSON
+          = withObject "URLMapList"
+              (\ o ->
+                 URLMapList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#urlMapList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON URLMapList where
+        toJSON URLMapList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _umlNextPageToken,
+                  Just ("kind" .= _umlKind),
+                  ("items" .=) <$> _umlItems,
+                  ("selfLink" .=) <$> _umlSelfLink,
+                  ("id" .=) <$> _umlId])
+
+--
+-- /See:/ 'forwardingRulesScopedListWarningDataItem' smart constructor.
+data ForwardingRulesScopedListWarningDataItem = ForwardingRulesScopedListWarningDataItem
+    { _frslwdiValue :: !(Maybe Text)
+    , _frslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frslwdiValue'
+--
+-- * 'frslwdiKey'
+forwardingRulesScopedListWarningDataItem
+    :: ForwardingRulesScopedListWarningDataItem
+forwardingRulesScopedListWarningDataItem =
+    ForwardingRulesScopedListWarningDataItem
+    { _frslwdiValue = Nothing
+    , _frslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+frslwdiValue :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
+frslwdiValue
+  = lens _frslwdiValue (\ s a -> s{_frslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+frslwdiKey :: Lens' ForwardingRulesScopedListWarningDataItem (Maybe Text)
+frslwdiKey
+  = lens _frslwdiKey (\ s a -> s{_frslwdiKey = a})
+
+instance FromJSON
+         ForwardingRulesScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "ForwardingRulesScopedListWarningDataItem"
+              (\ o ->
+                 ForwardingRulesScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         ForwardingRulesScopedListWarningDataItem where
+        toJSON ForwardingRulesScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _frslwdiValue,
+                  ("key" .=) <$> _frslwdiKey])
+
+--
+-- /See:/ 'instanceGroupManagersScopedListWarningDataItem' smart constructor.
+data InstanceGroupManagersScopedListWarningDataItem = InstanceGroupManagersScopedListWarningDataItem
+    { _igmslwdiValue :: !(Maybe Text)
+    , _igmslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmslwdiValue'
+--
+-- * 'igmslwdiKey'
+instanceGroupManagersScopedListWarningDataItem
+    :: InstanceGroupManagersScopedListWarningDataItem
+instanceGroupManagersScopedListWarningDataItem =
+    InstanceGroupManagersScopedListWarningDataItem
+    { _igmslwdiValue = Nothing
+    , _igmslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igmslwdiValue :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
+igmslwdiValue
+  = lens _igmslwdiValue
+      (\ s a -> s{_igmslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+igmslwdiKey :: Lens' InstanceGroupManagersScopedListWarningDataItem (Maybe Text)
+igmslwdiKey
+  = lens _igmslwdiKey (\ s a -> s{_igmslwdiKey = a})
+
+instance FromJSON
+         InstanceGroupManagersScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersScopedListWarningDataItem"
+              (\ o ->
+                 InstanceGroupManagersScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupManagersScopedListWarningDataItem where
+        toJSON
+          InstanceGroupManagersScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igmslwdiValue,
+                  ("key" .=) <$> _igmslwdiKey])
+
+-- | A Project resource. Projects can only be created in the Google
+-- Developers Console. Unless marked otherwise, values can only be modified
+-- in the console.
+--
+-- /See:/ 'project' smart constructor.
+data Project = Project
+    { _pKind                   :: !Text
+    , _pUsageExportLocation    :: !(Maybe UsageExportLocation)
+    , _pSelfLink               :: !(Maybe Text)
+    , _pName                   :: !(Maybe Text)
+    , _pCreationTimestamp      :: !(Maybe Text)
+    , _pEnabledFeatures        :: !(Maybe [Text])
+    , _pQuotas                 :: !(Maybe [Quota])
+    , _pId                     :: !(Maybe (Textual Word64))
+    , _pDescription            :: !(Maybe Text)
+    , _pCommonInstanceMetadata :: !(Maybe Metadata)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Project' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pKind'
+--
+-- * 'pUsageExportLocation'
+--
+-- * 'pSelfLink'
+--
+-- * 'pName'
+--
+-- * 'pCreationTimestamp'
+--
+-- * 'pEnabledFeatures'
+--
+-- * 'pQuotas'
+--
+-- * 'pId'
+--
+-- * 'pDescription'
+--
+-- * 'pCommonInstanceMetadata'
+project
+    :: Project
+project =
+    Project
+    { _pKind = "compute#project"
+    , _pUsageExportLocation = Nothing
+    , _pSelfLink = Nothing
+    , _pName = Nothing
+    , _pCreationTimestamp = Nothing
+    , _pEnabledFeatures = Nothing
+    , _pQuotas = Nothing
+    , _pId = Nothing
+    , _pDescription = Nothing
+    , _pCommonInstanceMetadata = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#project for projects.
+pKind :: Lens' Project Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | The location in Cloud Storage and naming method of the daily usage
+-- report.
+pUsageExportLocation :: Lens' Project (Maybe UsageExportLocation)
+pUsageExportLocation
+  = lens _pUsageExportLocation
+      (\ s a -> s{_pUsageExportLocation = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+pSelfLink :: Lens' Project (Maybe Text)
+pSelfLink
+  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})
+
+-- | Name of the resource.
+pName :: Lens' Project (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+pCreationTimestamp :: Lens' Project (Maybe Text)
+pCreationTimestamp
+  = lens _pCreationTimestamp
+      (\ s a -> s{_pCreationTimestamp = a})
+
+-- | Restricted features enabled for use on this project.
+pEnabledFeatures :: Lens' Project [Text]
+pEnabledFeatures
+  = lens _pEnabledFeatures
+      (\ s a -> s{_pEnabledFeatures = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Quotas assigned to this project.
+pQuotas :: Lens' Project [Quota]
+pQuotas
+  = lens _pQuotas (\ s a -> s{_pQuotas = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+pId :: Lens' Project (Maybe Word64)
+pId
+  = lens _pId (\ s a -> s{_pId = a}) . mapping _Coerce
+
+-- | An optional textual description of the resource.
+pDescription :: Lens' Project (Maybe Text)
+pDescription
+  = lens _pDescription (\ s a -> s{_pDescription = a})
+
+-- | Metadata key\/value pairs available to all instances contained in this
+-- project. See Custom metadata for more information.
+pCommonInstanceMetadata :: Lens' Project (Maybe Metadata)
+pCommonInstanceMetadata
+  = lens _pCommonInstanceMetadata
+      (\ s a -> s{_pCommonInstanceMetadata = a})
+
+instance FromJSON Project where
+        parseJSON
+          = withObject "Project"
+              (\ o ->
+                 Project <$>
+                   (o .:? "kind" .!= "compute#project") <*>
+                     (o .:? "usageExportLocation")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "enabledFeatures" .!= mempty)
+                     <*> (o .:? "quotas" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "commonInstanceMetadata"))
+
+instance ToJSON Project where
+        toJSON Project{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _pKind),
+                  ("usageExportLocation" .=) <$> _pUsageExportLocation,
+                  ("selfLink" .=) <$> _pSelfLink,
+                  ("name" .=) <$> _pName,
+                  ("creationTimestamp" .=) <$> _pCreationTimestamp,
+                  ("enabledFeatures" .=) <$> _pEnabledFeatures,
+                  ("quotas" .=) <$> _pQuotas, ("id" .=) <$> _pId,
+                  ("description" .=) <$> _pDescription,
+                  ("commonInstanceMetadata" .=) <$>
+                    _pCommonInstanceMetadata])
+
+-- | An Operation resource, used to manage asynchronous API requests.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation
+    { _oTargetId            :: !(Maybe (Textual Word64))
+    , _oStatus              :: !(Maybe OperationStatus)
+    , _oInsertTime          :: !(Maybe Text)
+    , _oProgress            :: !(Maybe (Textual Int32))
+    , _oStartTime           :: !(Maybe Text)
+    , _oKind                :: !Text
+    , _oError               :: !(Maybe OperationError)
+    , _oHTTPErrorMessage    :: !(Maybe Text)
+    , _oZone                :: !(Maybe Text)
+    , _oWarnings            :: !(Maybe [OperationWarningsItem])
+    , _oHTTPErrorStatusCode :: !(Maybe (Textual Int32))
+    , _oUser                :: !(Maybe Text)
+    , _oSelfLink            :: !(Maybe Text)
+    , _oName                :: !(Maybe Text)
+    , _oStatusMessage       :: !(Maybe Text)
+    , _oCreationTimestamp   :: !(Maybe Text)
+    , _oEndTime             :: !(Maybe Text)
+    , _oId                  :: !(Maybe (Textual Word64))
+    , _oOperationType       :: !(Maybe Text)
+    , _oRegion              :: !(Maybe Text)
+    , _oTargetLink          :: !(Maybe Text)
+    , _oClientOperationId   :: !(Maybe Text)
+    } 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:
+--
+-- * 'oTargetId'
+--
+-- * 'oStatus'
+--
+-- * 'oInsertTime'
+--
+-- * 'oProgress'
+--
+-- * 'oStartTime'
+--
+-- * 'oKind'
+--
+-- * 'oError'
+--
+-- * 'oHTTPErrorMessage'
+--
+-- * 'oZone'
+--
+-- * 'oWarnings'
+--
+-- * 'oHTTPErrorStatusCode'
+--
+-- * 'oUser'
+--
+-- * 'oSelfLink'
+--
+-- * 'oName'
+--
+-- * 'oStatusMessage'
+--
+-- * 'oCreationTimestamp'
+--
+-- * 'oEndTime'
+--
+-- * 'oId'
+--
+-- * 'oOperationType'
+--
+-- * 'oRegion'
+--
+-- * 'oTargetLink'
+--
+-- * 'oClientOperationId'
+operation
+    :: Operation
+operation =
+    Operation
+    { _oTargetId = Nothing
+    , _oStatus = Nothing
+    , _oInsertTime = Nothing
+    , _oProgress = Nothing
+    , _oStartTime = Nothing
+    , _oKind = "compute#operation"
+    , _oError = Nothing
+    , _oHTTPErrorMessage = Nothing
+    , _oZone = Nothing
+    , _oWarnings = Nothing
+    , _oHTTPErrorStatusCode = Nothing
+    , _oUser = Nothing
+    , _oSelfLink = Nothing
+    , _oName = Nothing
+    , _oStatusMessage = Nothing
+    , _oCreationTimestamp = Nothing
+    , _oEndTime = Nothing
+    , _oId = Nothing
+    , _oOperationType = Nothing
+    , _oRegion = Nothing
+    , _oTargetLink = Nothing
+    , _oClientOperationId = Nothing
+    }
+
+-- | [Output Only] Unique target ID which identifies a particular incarnation
+-- of the target.
+oTargetId :: Lens' Operation (Maybe Word64)
+oTargetId
+  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Status of the operation. Can be one of the following:
+-- PENDING, RUNNING, or DONE.
+oStatus :: Lens' Operation (Maybe OperationStatus)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | [Output Only] The time that this operation was requested. This is in
+-- RFC3339 text format.
+oInsertTime :: Lens' Operation (Maybe Text)
+oInsertTime
+  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})
+
+-- | [Output Only] An optional progress indicator that ranges from 0 to 100.
+-- There is no requirement that this be linear or support any granularity
+-- of operations. This should not be used to guess at when the operation
+-- will be complete. This number should monotonically increase as the
+-- operation progresses.
+oProgress :: Lens' Operation (Maybe Int32)
+oProgress
+  = lens _oProgress (\ s a -> s{_oProgress = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The time that this operation was started by the server.
+-- This is in RFC3339 text format.
+oStartTime :: Lens' Operation (Maybe Text)
+oStartTime
+  = lens _oStartTime (\ s a -> s{_oStartTime = a})
+
+-- | [Output Only] Type of the resource. Always compute#operation for
+-- Operation resources.
+oKind :: Lens' Operation Text
+oKind = lens _oKind (\ s a -> s{_oKind = a})
+
+-- | [Output Only] If errors are generated during processing of the
+-- operation, this field will be populated.
+oError :: Lens' Operation (Maybe OperationError)
+oError = lens _oError (\ s a -> s{_oError = a})
+
+-- | [Output Only] If the operation fails, this field contains the HTTP error
+-- message that was returned, such as NOT FOUND.
+oHTTPErrorMessage :: Lens' Operation (Maybe Text)
+oHTTPErrorMessage
+  = lens _oHTTPErrorMessage
+      (\ s a -> s{_oHTTPErrorMessage = a})
+
+-- | [Output Only] URL of the zone where the operation resides.
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+-- | [Output Only] If warning messages are generated during processing of the
+-- operation, this field will be populated.
+oWarnings :: Lens' Operation [OperationWarningsItem]
+oWarnings
+  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] If the operation fails, this field contains the HTTP error
+-- message that was returned, such as 404.
+oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)
+oHTTPErrorStatusCode
+  = lens _oHTTPErrorStatusCode
+      (\ s a -> s{_oHTTPErrorStatusCode = a})
+      . mapping _Coerce
+
+-- | [Output Only] User who requested the operation, for example:
+-- user\'example.com.
+oUser :: Lens' Operation (Maybe Text)
+oUser = lens _oUser (\ s a -> s{_oUser = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | [Output Only] An optional textual description of the current status of
+-- the operation.
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+oCreationTimestamp :: Lens' Operation (Maybe Text)
+oCreationTimestamp
+  = lens _oCreationTimestamp
+      (\ s a -> s{_oCreationTimestamp = a})
+
+-- | [Output Only] The time that this operation was completed. This is in
+-- RFC3339 text format.
+oEndTime :: Lens' Operation (Maybe Text)
+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+oId :: Lens' Operation (Maybe Word64)
+oId
+  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce
+
+-- | [Output Only] Type of the operation, such as insert,
+-- compute.instanceGroups.update, or compute.instanceGroups.delete.
+oOperationType :: Lens' Operation (Maybe Text)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+-- | [Output Only] URL of the region where the operation resides. Only
+-- applicable for regional resources.
+oRegion :: Lens' Operation (Maybe Text)
+oRegion = lens _oRegion (\ s a -> s{_oRegion = a})
+
+-- | [Output Only] URL of the resource the operation is mutating.
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+-- | [Output Only] An optional identifier specified by the client when the
+-- mutation was initiated. Must be unique for all Operation resources in
+-- the project.
+oClientOperationId :: Lens' Operation (Maybe Text)
+oClientOperationId
+  = lens _oClientOperationId
+      (\ s a -> s{_oClientOperationId = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation <$>
+                   (o .:? "targetId") <*> (o .:? "status") <*>
+                     (o .:? "insertTime")
+                     <*> (o .:? "progress")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "kind" .!= "compute#operation")
+                     <*> (o .:? "error")
+                     <*> (o .:? "httpErrorMessage")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "httpErrorStatusCode")
+                     <*> (o .:? "user")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "id")
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "region")
+                     <*> (o .:? "targetLink")
+                     <*> (o .:? "clientOperationId"))
+
+instance ToJSON Operation where
+        toJSON Operation{..}
+          = object
+              (catMaybes
+                 [("targetId" .=) <$> _oTargetId,
+                  ("status" .=) <$> _oStatus,
+                  ("insertTime" .=) <$> _oInsertTime,
+                  ("progress" .=) <$> _oProgress,
+                  ("startTime" .=) <$> _oStartTime,
+                  Just ("kind" .= _oKind), ("error" .=) <$> _oError,
+                  ("httpErrorMessage" .=) <$> _oHTTPErrorMessage,
+                  ("zone" .=) <$> _oZone,
+                  ("warnings" .=) <$> _oWarnings,
+                  ("httpErrorStatusCode" .=) <$> _oHTTPErrorStatusCode,
+                  ("user" .=) <$> _oUser,
+                  ("selfLink" .=) <$> _oSelfLink,
+                  ("name" .=) <$> _oName,
+                  ("statusMessage" .=) <$> _oStatusMessage,
+                  ("creationTimestamp" .=) <$> _oCreationTimestamp,
+                  ("endTime" .=) <$> _oEndTime, ("id" .=) <$> _oId,
+                  ("operationType" .=) <$> _oOperationType,
+                  ("region" .=) <$> _oRegion,
+                  ("targetLink" .=) <$> _oTargetLink,
+                  ("clientOperationId" .=) <$> _oClientOperationId])
+
+--
+-- /See:/ 'disksScopedListWarningDataItem' smart constructor.
+data DisksScopedListWarningDataItem = DisksScopedListWarningDataItem
+    { _dslwdiValue :: !(Maybe Text)
+    , _dslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslwdiValue'
+--
+-- * 'dslwdiKey'
+disksScopedListWarningDataItem
+    :: DisksScopedListWarningDataItem
+disksScopedListWarningDataItem =
+    DisksScopedListWarningDataItem
+    { _dslwdiValue = Nothing
+    , _dslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dslwdiValue :: Lens' DisksScopedListWarningDataItem (Maybe Text)
+dslwdiValue
+  = lens _dslwdiValue (\ s a -> s{_dslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+dslwdiKey :: Lens' DisksScopedListWarningDataItem (Maybe Text)
+dslwdiKey
+  = lens _dslwdiKey (\ s a -> s{_dslwdiKey = a})
+
+instance FromJSON DisksScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "DisksScopedListWarningDataItem"
+              (\ o ->
+                 DisksScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DisksScopedListWarningDataItem where
+        toJSON DisksScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dslwdiValue,
+                  ("key" .=) <$> _dslwdiKey])
+
+-- | A Disk resource.
+--
+-- /See:/ 'disk' smart constructor.
+data Disk = Disk
+    { _dStatus              :: !(Maybe DiskStatus)
+    , _dSourceSnapshotId    :: !(Maybe Text)
+    , _dLastAttachTimestamp :: !(Maybe Text)
+    , _dUsers               :: !(Maybe [Text])
+    , _dSourceImage         :: !(Maybe Text)
+    , _dSizeGb              :: !(Maybe (Textual Int64))
+    , _dKind                :: !Text
+    , _dLastDetachTimestamp :: !(Maybe Text)
+    , _dZone                :: !(Maybe Text)
+    , _dSelfLink            :: !(Maybe Text)
+    , _dName                :: !(Maybe Text)
+    , _dSourceImageId       :: !(Maybe Text)
+    , _dCreationTimestamp   :: !(Maybe Text)
+    , _dId                  :: !(Maybe (Textual Word64))
+    , _dLicenses            :: !(Maybe [Text])
+    , _dOptions             :: !(Maybe Text)
+    , _dType                :: !(Maybe Text)
+    , _dDescription         :: !(Maybe Text)
+    , _dSourceSnapshot      :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Disk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dStatus'
+--
+-- * 'dSourceSnapshotId'
+--
+-- * 'dLastAttachTimestamp'
+--
+-- * 'dUsers'
+--
+-- * 'dSourceImage'
+--
+-- * 'dSizeGb'
+--
+-- * 'dKind'
+--
+-- * 'dLastDetachTimestamp'
+--
+-- * 'dZone'
+--
+-- * 'dSelfLink'
+--
+-- * 'dName'
+--
+-- * 'dSourceImageId'
+--
+-- * 'dCreationTimestamp'
+--
+-- * 'dId'
+--
+-- * 'dLicenses'
+--
+-- * 'dOptions'
+--
+-- * 'dType'
+--
+-- * 'dDescription'
+--
+-- * 'dSourceSnapshot'
+disk
+    :: Disk
+disk =
+    Disk
+    { _dStatus = Nothing
+    , _dSourceSnapshotId = Nothing
+    , _dLastAttachTimestamp = Nothing
+    , _dUsers = Nothing
+    , _dSourceImage = Nothing
+    , _dSizeGb = Nothing
+    , _dKind = "compute#disk"
+    , _dLastDetachTimestamp = Nothing
+    , _dZone = Nothing
+    , _dSelfLink = Nothing
+    , _dName = Nothing
+    , _dSourceImageId = Nothing
+    , _dCreationTimestamp = Nothing
+    , _dId = Nothing
+    , _dLicenses = Nothing
+    , _dOptions = Nothing
+    , _dType = Nothing
+    , _dDescription = Nothing
+    , _dSourceSnapshot = Nothing
+    }
+
+-- | [Output Only] The status of disk creation. Applicable statuses includes:
+-- CREATING, FAILED, READY, RESTORING.
+dStatus :: Lens' Disk (Maybe DiskStatus)
+dStatus = lens _dStatus (\ s a -> s{_dStatus = a})
+
+-- | [Output Only] The unique ID of the snapshot used to create this disk.
+-- This value identifies the exact snapshot that was used to create this
+-- persistent disk. For example, if you created the persistent disk from a
+-- snapshot that was later deleted and recreated under the same name, the
+-- source snapshot ID would identify the exact version of the snapshot that
+-- was used.
+dSourceSnapshotId :: Lens' Disk (Maybe Text)
+dSourceSnapshotId
+  = lens _dSourceSnapshotId
+      (\ s a -> s{_dSourceSnapshotId = a})
+
+-- | [Output Only] Last attach timestamp in RFC3339 text format.
+dLastAttachTimestamp :: Lens' Disk (Maybe Text)
+dLastAttachTimestamp
+  = lens _dLastAttachTimestamp
+      (\ s a -> s{_dLastAttachTimestamp = a})
+
+-- | Links to the users of the disk (attached instances) in form:
+-- project\/zones\/zone\/instances\/instance
+dUsers :: Lens' Disk [Text]
+dUsers
+  = lens _dUsers (\ s a -> s{_dUsers = a}) . _Default .
+      _Coerce
+
+-- | The source image used to create this disk. If the source image is
+-- deleted from the system, this field will not be set, even if an image
+-- with the same name has been re-created. When creating a disk, you can
+-- provide a private (custom) image using the following input, and Compute
+-- Engine will use the corresponding image from your project. For example:
+-- global\/images\/my-private-image Or you can provide an image from a
+-- publicly-available project. For example, to use a Debian image from the
+-- debian-cloud project, make sure to include the project in the URL:
+-- projects\/debian-cloud\/global\/images\/debian-7-wheezy-vYYYYMMDD where
+-- vYYYYMMDD is the image version. The fully-qualified URL will also work
+-- in both cases.
+dSourceImage :: Lens' Disk (Maybe Text)
+dSourceImage
+  = lens _dSourceImage (\ s a -> s{_dSourceImage = a})
+
+-- | Size of the persistent disk, specified in GB. You can specify this field
+-- when creating a persistent disk using the sourceImage or sourceSnapshot
+-- parameter, or specify it alone to create an empty persistent disk. If
+-- you specify this field along with sourceImage or sourceSnapshot, the
+-- value of sizeGb must not be less than the size of the sourceImage or the
+-- size of the snapshot.
+dSizeGb :: Lens' Disk (Maybe Int64)
+dSizeGb
+  = lens _dSizeGb (\ s a -> s{_dSizeGb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#disk for disks.
+dKind :: Lens' Disk Text
+dKind = lens _dKind (\ s a -> s{_dKind = a})
+
+-- | [Output Only] Last detach timestamp in RFC3339 text format.
+dLastDetachTimestamp :: Lens' Disk (Maybe Text)
+dLastDetachTimestamp
+  = lens _dLastDetachTimestamp
+      (\ s a -> s{_dLastDetachTimestamp = a})
+
+-- | [Output Only] URL of the zone where the disk resides.
+dZone :: Lens' Disk (Maybe Text)
+dZone = lens _dZone (\ s a -> s{_dZone = a})
+
+-- | [Output Only] Server-defined fully-qualified URL for this resource.
+dSelfLink :: Lens' Disk (Maybe Text)
+dSelfLink
+  = lens _dSelfLink (\ s a -> s{_dSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+dName :: Lens' Disk (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a})
+
+-- | The ID value of the image used to create this disk. This value
+-- identifies the exact image that was used to create this persistent disk.
+-- For example, if you created the persistent disk from an image that was
+-- later deleted and recreated under the same name, the source image ID
+-- would identify the exact version of the image that was used.
+dSourceImageId :: Lens' Disk (Maybe Text)
+dSourceImageId
+  = lens _dSourceImageId
+      (\ s a -> s{_dSourceImageId = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+dCreationTimestamp :: Lens' Disk (Maybe Text)
+dCreationTimestamp
+  = lens _dCreationTimestamp
+      (\ s a -> s{_dCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dId :: Lens' Disk (Maybe Word64)
+dId
+  = lens _dId (\ s a -> s{_dId = a}) . mapping _Coerce
+
+-- | Any applicable publicly visible licenses.
+dLicenses :: Lens' Disk [Text]
+dLicenses
+  = lens _dLicenses (\ s a -> s{_dLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | Internal use only.
+dOptions :: Lens' Disk (Maybe Text)
+dOptions = lens _dOptions (\ s a -> s{_dOptions = a})
+
+-- | URL of the disk type resource describing which disk type to use to
+-- create the disk; provided by the client when the disk is created.
+dType :: Lens' Disk (Maybe Text)
+dType = lens _dType (\ s a -> s{_dType = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+dDescription :: Lens' Disk (Maybe Text)
+dDescription
+  = lens _dDescription (\ s a -> s{_dDescription = a})
+
+-- | The source snapshot used to create this disk. You can provide this as a
+-- partial or full URL to the resource. For example, the following are
+-- valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/snapshots\/snapshot
+-- - projects\/project\/global\/snapshots\/snapshot -
+-- global\/snapshots\/snapshot
+dSourceSnapshot :: Lens' Disk (Maybe Text)
+dSourceSnapshot
+  = lens _dSourceSnapshot
+      (\ s a -> s{_dSourceSnapshot = a})
+
+instance FromJSON Disk where
+        parseJSON
+          = withObject "Disk"
+              (\ o ->
+                 Disk <$>
+                   (o .:? "status") <*> (o .:? "sourceSnapshotId") <*>
+                     (o .:? "lastAttachTimestamp")
+                     <*> (o .:? "users" .!= mempty)
+                     <*> (o .:? "sourceImage")
+                     <*> (o .:? "sizeGb")
+                     <*> (o .:? "kind" .!= "compute#disk")
+                     <*> (o .:? "lastDetachTimestamp")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "sourceImageId")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "options")
+                     <*> (o .:? "type")
+                     <*> (o .:? "description")
+                     <*> (o .:? "sourceSnapshot"))
+
+instance ToJSON Disk where
+        toJSON Disk{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _dStatus,
+                  ("sourceSnapshotId" .=) <$> _dSourceSnapshotId,
+                  ("lastAttachTimestamp" .=) <$> _dLastAttachTimestamp,
+                  ("users" .=) <$> _dUsers,
+                  ("sourceImage" .=) <$> _dSourceImage,
+                  ("sizeGb" .=) <$> _dSizeGb, Just ("kind" .= _dKind),
+                  ("lastDetachTimestamp" .=) <$> _dLastDetachTimestamp,
+                  ("zone" .=) <$> _dZone,
+                  ("selfLink" .=) <$> _dSelfLink,
+                  ("name" .=) <$> _dName,
+                  ("sourceImageId" .=) <$> _dSourceImageId,
+                  ("creationTimestamp" .=) <$> _dCreationTimestamp,
+                  ("id" .=) <$> _dId, ("licenses" .=) <$> _dLicenses,
+                  ("options" .=) <$> _dOptions, ("type" .=) <$> _dType,
+                  ("description" .=) <$> _dDescription,
+                  ("sourceSnapshot" .=) <$> _dSourceSnapshot])
+
+--
+-- /See:/ 'diskMoveRequest' smart constructor.
+data DiskMoveRequest = DiskMoveRequest
+    { _dmrTargetDisk      :: !(Maybe Text)
+    , _dmrDestinationZone :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskMoveRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmrTargetDisk'
+--
+-- * 'dmrDestinationZone'
+diskMoveRequest
+    :: DiskMoveRequest
+diskMoveRequest =
+    DiskMoveRequest
+    { _dmrTargetDisk = Nothing
+    , _dmrDestinationZone = Nothing
+    }
+
+-- | The URL of the target disk to move. This can be a full or partial URL.
+-- For example, the following are all valid URLs to a disk: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/disks\/disk
+-- - projects\/project\/zones\/zone\/disks\/disk - zones\/zone\/disks\/disk
+dmrTargetDisk :: Lens' DiskMoveRequest (Maybe Text)
+dmrTargetDisk
+  = lens _dmrTargetDisk
+      (\ s a -> s{_dmrTargetDisk = a})
+
+-- | The URL of the destination zone to move the disk to. This can be a full
+-- or partial URL. For example, the following are all valid URLs to a zone:
+-- -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone
+-- - projects\/project\/zones\/zone - zones\/zone
+dmrDestinationZone :: Lens' DiskMoveRequest (Maybe Text)
+dmrDestinationZone
+  = lens _dmrDestinationZone
+      (\ s a -> s{_dmrDestinationZone = a})
+
+instance FromJSON DiskMoveRequest where
+        parseJSON
+          = withObject "DiskMoveRequest"
+              (\ o ->
+                 DiskMoveRequest <$>
+                   (o .:? "targetDisk") <*> (o .:? "destinationZone"))
+
+instance ToJSON DiskMoveRequest where
+        toJSON DiskMoveRequest{..}
+          = object
+              (catMaybes
+                 [("targetDisk" .=) <$> _dmrTargetDisk,
+                  ("destinationZone" .=) <$> _dmrDestinationZone])
+
+-- | Load balancing utilization policy.
+--
+-- /See:/ 'autoscalingPolicyLoadBalancingUtilization' smart constructor.
+newtype AutoscalingPolicyLoadBalancingUtilization = AutoscalingPolicyLoadBalancingUtilization
+    { _aplbuUtilizationTarget :: Maybe (Textual Double)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicyLoadBalancingUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aplbuUtilizationTarget'
+autoscalingPolicyLoadBalancingUtilization
+    :: AutoscalingPolicyLoadBalancingUtilization
+autoscalingPolicyLoadBalancingUtilization =
+    AutoscalingPolicyLoadBalancingUtilization
+    { _aplbuUtilizationTarget = Nothing
+    }
+
+-- | Fraction of backend capacity utilization (set in HTTP load balancing
+-- configuration) that Autoscaler should maintain. Must be a positive float
+-- value. If not defined, the default is 0.8. For example if your
+-- maxRatePerInstance capacity (in HTTP Load Balancing configuration) is
+-- set at 10 and you would like to keep number of instances such that each
+-- instance receives 7 QPS on average, set this to 0.7.
+aplbuUtilizationTarget :: Lens' AutoscalingPolicyLoadBalancingUtilization (Maybe Double)
+aplbuUtilizationTarget
+  = lens _aplbuUtilizationTarget
+      (\ s a -> s{_aplbuUtilizationTarget = a})
+      . mapping _Coerce
+
+instance FromJSON
+         AutoscalingPolicyLoadBalancingUtilization where
+        parseJSON
+          = withObject
+              "AutoscalingPolicyLoadBalancingUtilization"
+              (\ o ->
+                 AutoscalingPolicyLoadBalancingUtilization <$>
+                   (o .:? "utilizationTarget"))
+
+instance ToJSON
+         AutoscalingPolicyLoadBalancingUtilization where
+        toJSON AutoscalingPolicyLoadBalancingUtilization{..}
+          = object
+              (catMaybes
+                 [("utilizationTarget" .=) <$>
+                    _aplbuUtilizationTarget])
+
+--
+-- /See:/ 'targetPoolsScopedListWarningDataItem' smart constructor.
+data TargetPoolsScopedListWarningDataItem = TargetPoolsScopedListWarningDataItem
+    { _tpslwdiValue :: !(Maybe Text)
+    , _tpslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpslwdiValue'
+--
+-- * 'tpslwdiKey'
+targetPoolsScopedListWarningDataItem
+    :: TargetPoolsScopedListWarningDataItem
+targetPoolsScopedListWarningDataItem =
+    TargetPoolsScopedListWarningDataItem
+    { _tpslwdiValue = Nothing
+    , _tpslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tpslwdiValue :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)
+tpslwdiValue
+  = lens _tpslwdiValue (\ s a -> s{_tpslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+tpslwdiKey :: Lens' TargetPoolsScopedListWarningDataItem (Maybe Text)
+tpslwdiKey
+  = lens _tpslwdiKey (\ s a -> s{_tpslwdiKey = a})
+
+instance FromJSON
+         TargetPoolsScopedListWarningDataItem where
+        parseJSON
+          = withObject "TargetPoolsScopedListWarningDataItem"
+              (\ o ->
+                 TargetPoolsScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON TargetPoolsScopedListWarningDataItem
+         where
+        toJSON TargetPoolsScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tpslwdiValue,
+                  ("key" .=) <$> _tpslwdiKey])
+
+-- | InstanceGroupManagers Next available tag: 19
+--
+-- /See:/ 'instanceGroupManager' smart constructor.
+data InstanceGroupManager = InstanceGroupManager
+    { _igmKind              :: !Text
+    , _igmFingerprint       :: !(Maybe (Textual Word8))
+    , _igmBaseInstanceName  :: !(Maybe Text)
+    , _igmZone              :: !(Maybe Text)
+    , _igmInstanceTemplate  :: !(Maybe Text)
+    , _igmTargetSize        :: !(Maybe (Textual Int32))
+    , _igmSelfLink          :: !(Maybe Text)
+    , _igmCurrentActions    :: !(Maybe InstanceGroupManagerActionsSummary)
+    , _igmName              :: !(Maybe Text)
+    , _igmCreationTimestamp :: !(Maybe Text)
+    , _igmId                :: !(Maybe (Textual Word64))
+    , _igmTargetPools       :: !(Maybe [Text])
+    , _igmDescription       :: !(Maybe Text)
+    , _igmInstanceGroup     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManager' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmKind'
+--
+-- * 'igmFingerprint'
+--
+-- * 'igmBaseInstanceName'
+--
+-- * 'igmZone'
+--
+-- * 'igmInstanceTemplate'
+--
+-- * 'igmTargetSize'
+--
+-- * 'igmSelfLink'
+--
+-- * 'igmCurrentActions'
+--
+-- * 'igmName'
+--
+-- * 'igmCreationTimestamp'
+--
+-- * 'igmId'
+--
+-- * 'igmTargetPools'
+--
+-- * 'igmDescription'
+--
+-- * 'igmInstanceGroup'
+instanceGroupManager
+    :: InstanceGroupManager
+instanceGroupManager =
+    InstanceGroupManager
+    { _igmKind = "compute#instanceGroupManager"
+    , _igmFingerprint = Nothing
+    , _igmBaseInstanceName = Nothing
+    , _igmZone = Nothing
+    , _igmInstanceTemplate = Nothing
+    , _igmTargetSize = Nothing
+    , _igmSelfLink = Nothing
+    , _igmCurrentActions = Nothing
+    , _igmName = Nothing
+    , _igmCreationTimestamp = Nothing
+    , _igmId = Nothing
+    , _igmTargetPools = Nothing
+    , _igmDescription = Nothing
+    , _igmInstanceGroup = Nothing
+    }
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupManager for managed instance groups.
+igmKind :: Lens' InstanceGroupManager Text
+igmKind = lens _igmKind (\ s a -> s{_igmKind = a})
+
+-- | [Output Only] The fingerprint of the target pools information. You can
+-- use this optional field for optimistic locking when you update the
+-- target pool entries.
+igmFingerprint :: Lens' InstanceGroupManager (Maybe Word8)
+igmFingerprint
+  = lens _igmFingerprint
+      (\ s a -> s{_igmFingerprint = a})
+      . mapping _Coerce
+
+-- | The base instance name to use for instances in this group. The value
+-- must be 1-58 characters long. Instances are named by appending a hyphen
+-- and a random four-character string to the base instance name. The base
+-- instance name must comply with RFC1035.
+igmBaseInstanceName :: Lens' InstanceGroupManager (Maybe Text)
+igmBaseInstanceName
+  = lens _igmBaseInstanceName
+      (\ s a -> s{_igmBaseInstanceName = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmZone :: Lens' InstanceGroupManager (Maybe Text)
+igmZone = lens _igmZone (\ s a -> s{_igmZone = a})
+
+-- | The URL of the instance template that is specified for this managed
+-- instance group. The group uses this template to create all new instances
+-- in the managed instance group.
+igmInstanceTemplate :: Lens' InstanceGroupManager (Maybe Text)
+igmInstanceTemplate
+  = lens _igmInstanceTemplate
+      (\ s a -> s{_igmInstanceTemplate = a})
+
+-- | The target number of running instances for this managed instance group.
+-- Deleting or abandoning instances reduces this number. Resizing the group
+-- changes this number.
+igmTargetSize :: Lens' InstanceGroupManager (Maybe Int32)
+igmTargetSize
+  = lens _igmTargetSize
+      (\ s a -> s{_igmTargetSize = a})
+      . mapping _Coerce
+
+-- | [Output Only] The URL for this managed instance group. The server
+-- defines this URL.
+igmSelfLink :: Lens' InstanceGroupManager (Maybe Text)
+igmSelfLink
+  = lens _igmSelfLink (\ s a -> s{_igmSelfLink = a})
+
+-- | [Output Only] The list of instance actions and the number of instances
+-- in this managed instance group that are scheduled for each of those
+-- actions.
+igmCurrentActions :: Lens' InstanceGroupManager (Maybe InstanceGroupManagerActionsSummary)
+igmCurrentActions
+  = lens _igmCurrentActions
+      (\ s a -> s{_igmCurrentActions = a})
+
+-- | The name of the managed instance group. The name must be 1-63 characters
+-- long, and comply with RFC1035.
+igmName :: Lens' InstanceGroupManager (Maybe Text)
+igmName = lens _igmName (\ s a -> s{_igmName = a})
+
+-- | [Output Only] The creation timestamp for this managed instance group in
+-- RFC3339 text format.
+igmCreationTimestamp :: Lens' InstanceGroupManager (Maybe Text)
+igmCreationTimestamp
+  = lens _igmCreationTimestamp
+      (\ s a -> s{_igmCreationTimestamp = a})
+
+-- | [Output Only] A unique identifier for this resource type. The server
+-- generates this identifier.
+igmId :: Lens' InstanceGroupManager (Maybe Word64)
+igmId
+  = lens _igmId (\ s a -> s{_igmId = a}) .
+      mapping _Coerce
+
+-- | The URLs for all TargetPool resources to which instances in the
+-- instanceGroup field are added. The target pools automatically apply to
+-- all of the instances in the managed instance group.
+igmTargetPools :: Lens' InstanceGroupManager [Text]
+igmTargetPools
+  = lens _igmTargetPools
+      (\ s a -> s{_igmTargetPools = a})
+      . _Default
+      . _Coerce
+
+-- | An optional text description for the managed instance group.
+igmDescription :: Lens' InstanceGroupManager (Maybe Text)
+igmDescription
+  = lens _igmDescription
+      (\ s a -> s{_igmDescription = a})
+
+-- | [Output Only] The URL of the Instance Group resource.
+igmInstanceGroup :: Lens' InstanceGroupManager (Maybe Text)
+igmInstanceGroup
+  = lens _igmInstanceGroup
+      (\ s a -> s{_igmInstanceGroup = a})
+
+instance FromJSON InstanceGroupManager where
+        parseJSON
+          = withObject "InstanceGroupManager"
+              (\ o ->
+                 InstanceGroupManager <$>
+                   (o .:? "kind" .!= "compute#instanceGroupManager") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "baseInstanceName")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "instanceTemplate")
+                     <*> (o .:? "targetSize")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "currentActions")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "targetPools" .!= mempty)
+                     <*> (o .:? "description")
+                     <*> (o .:? "instanceGroup"))
+
+instance ToJSON InstanceGroupManager where
+        toJSON InstanceGroupManager{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _igmKind),
+                  ("fingerprint" .=) <$> _igmFingerprint,
+                  ("baseInstanceName" .=) <$> _igmBaseInstanceName,
+                  ("zone" .=) <$> _igmZone,
+                  ("instanceTemplate" .=) <$> _igmInstanceTemplate,
+                  ("targetSize" .=) <$> _igmTargetSize,
+                  ("selfLink" .=) <$> _igmSelfLink,
+                  ("currentActions" .=) <$> _igmCurrentActions,
+                  ("name" .=) <$> _igmName,
+                  ("creationTimestamp" .=) <$> _igmCreationTimestamp,
+                  ("id" .=) <$> _igmId,
+                  ("targetPools" .=) <$> _igmTargetPools,
+                  ("description" .=) <$> _igmDescription,
+                  ("instanceGroup" .=) <$> _igmInstanceGroup])
+
+--
+-- /See:/ 'instanceGroupsRemoveInstancesRequest' smart constructor.
+newtype InstanceGroupsRemoveInstancesRequest = InstanceGroupsRemoveInstancesRequest
+    { _igrirInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsRemoveInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igrirInstances'
+instanceGroupsRemoveInstancesRequest
+    :: InstanceGroupsRemoveInstancesRequest
+instanceGroupsRemoveInstancesRequest =
+    InstanceGroupsRemoveInstancesRequest
+    { _igrirInstances = Nothing
+    }
+
+-- | The list of instances to remove from the instance group.
+igrirInstances :: Lens' InstanceGroupsRemoveInstancesRequest [InstanceReference]
+igrirInstances
+  = lens _igrirInstances
+      (\ s a -> s{_igrirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupsRemoveInstancesRequest where
+        parseJSON
+          = withObject "InstanceGroupsRemoveInstancesRequest"
+              (\ o ->
+                 InstanceGroupsRemoveInstancesRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON InstanceGroupsRemoveInstancesRequest
+         where
+        toJSON InstanceGroupsRemoveInstancesRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igrirInstances])
+
+--
+-- /See:/ 'routeWarningsItemDataItem' smart constructor.
+data RouteWarningsItemDataItem = RouteWarningsItemDataItem
+    { _rwidiValue :: !(Maybe Text)
+    , _rwidiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteWarningsItemDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwidiValue'
+--
+-- * 'rwidiKey'
+routeWarningsItemDataItem
+    :: RouteWarningsItemDataItem
+routeWarningsItemDataItem =
+    RouteWarningsItemDataItem
+    { _rwidiValue = Nothing
+    , _rwidiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+rwidiValue :: Lens' RouteWarningsItemDataItem (Maybe Text)
+rwidiValue
+  = lens _rwidiValue (\ s a -> s{_rwidiValue = a})
+
+-- | [Output Only] A key for the warning data.
+rwidiKey :: Lens' RouteWarningsItemDataItem (Maybe Text)
+rwidiKey = lens _rwidiKey (\ s a -> s{_rwidiKey = a})
+
+instance FromJSON RouteWarningsItemDataItem where
+        parseJSON
+          = withObject "RouteWarningsItemDataItem"
+              (\ o ->
+                 RouteWarningsItemDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON RouteWarningsItemDataItem where
+        toJSON RouteWarningsItemDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _rwidiValue,
+                  ("key" .=) <$> _rwidiKey])
+
+-- | [Output Only] A map of scoped instance lists.
+--
+-- /See:/ 'instanceAggregatedListItems' smart constructor.
+newtype InstanceAggregatedListItems = InstanceAggregatedListItems
+    { _ialiAddtional :: HashMap Text InstancesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialiAddtional'
+instanceAggregatedListItems
+    :: HashMap Text InstancesScopedList -- ^ 'ialiAddtional'
+    -> InstanceAggregatedListItems
+instanceAggregatedListItems pIaliAddtional_ =
+    InstanceAggregatedListItems
+    { _ialiAddtional = _Coerce # pIaliAddtional_
+    }
+
+-- | Name of the scope containing this set of instances.
+ialiAddtional :: Lens' InstanceAggregatedListItems (HashMap Text InstancesScopedList)
+ialiAddtional
+  = lens _ialiAddtional
+      (\ s a -> s{_ialiAddtional = a})
+      . _Coerce
+
+instance FromJSON InstanceAggregatedListItems where
+        parseJSON
+          = withObject "InstanceAggregatedListItems"
+              (\ o ->
+                 InstanceAggregatedListItems <$> (parseJSONObject o))
+
+instance ToJSON InstanceAggregatedListItems where
+        toJSON = toJSON . _ialiAddtional
+
+-- | Informational warning which replaces the list of autoscalers when the
+-- list is empty.
+--
+-- /See:/ 'autoscalersScopedListWarning' smart constructor.
+data AutoscalersScopedListWarning = AutoscalersScopedListWarning
+    { _aslwData    :: !(Maybe [AutoscalersScopedListWarningDataItem])
+    , _aslwCode    :: !(Maybe AutoscalersScopedListWarningCode)
+    , _aslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslwData'
+--
+-- * 'aslwCode'
+--
+-- * 'aslwMessage'
+autoscalersScopedListWarning
+    :: AutoscalersScopedListWarning
+autoscalersScopedListWarning =
+    AutoscalersScopedListWarning
+    { _aslwData = Nothing
+    , _aslwCode = Nothing
+    , _aslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+aslwData :: Lens' AutoscalersScopedListWarning [AutoscalersScopedListWarningDataItem]
+aslwData
+  = lens _aslwData (\ s a -> s{_aslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+aslwCode :: Lens' AutoscalersScopedListWarning (Maybe AutoscalersScopedListWarningCode)
+aslwCode = lens _aslwCode (\ s a -> s{_aslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+aslwMessage :: Lens' AutoscalersScopedListWarning (Maybe Text)
+aslwMessage
+  = lens _aslwMessage (\ s a -> s{_aslwMessage = a})
+
+instance FromJSON AutoscalersScopedListWarning where
+        parseJSON
+          = withObject "AutoscalersScopedListWarning"
+              (\ o ->
+                 AutoscalersScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AutoscalersScopedListWarning where
+        toJSON AutoscalersScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _aslwData,
+                  ("code" .=) <$> _aslwCode,
+                  ("message" .=) <$> _aslwMessage])
+
+-- | [Output Only] Encountered errors during the last attempt to create or
+-- delete the instance.
+--
+-- /See:/ 'managedInstanceLastAttemptErrors' smart constructor.
+newtype ManagedInstanceLastAttemptErrors = ManagedInstanceLastAttemptErrors
+    { _milaeErrors :: Maybe [ManagedInstanceLastAttemptErrorsErrorsItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstanceLastAttemptErrors' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'milaeErrors'
+managedInstanceLastAttemptErrors
+    :: ManagedInstanceLastAttemptErrors
+managedInstanceLastAttemptErrors =
+    ManagedInstanceLastAttemptErrors
+    { _milaeErrors = Nothing
+    }
+
+-- | [Output Only] The array of errors encountered while processing this
+-- operation.
+milaeErrors :: Lens' ManagedInstanceLastAttemptErrors [ManagedInstanceLastAttemptErrorsErrorsItem]
+milaeErrors
+  = lens _milaeErrors (\ s a -> s{_milaeErrors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ManagedInstanceLastAttemptErrors
+         where
+        parseJSON
+          = withObject "ManagedInstanceLastAttemptErrors"
+              (\ o ->
+                 ManagedInstanceLastAttemptErrors <$>
+                   (o .:? "errors" .!= mempty))
+
+instance ToJSON ManagedInstanceLastAttemptErrors
+         where
+        toJSON ManagedInstanceLastAttemptErrors{..}
+          = object (catMaybes [("errors" .=) <$> _milaeErrors])
+
+--
+-- /See:/ 'targetPoolsRemoveInstanceRequest' smart constructor.
+newtype TargetPoolsRemoveInstanceRequest = TargetPoolsRemoveInstanceRequest
+    { _tprirInstances :: Maybe [InstanceReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsRemoveInstanceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tprirInstances'
+targetPoolsRemoveInstanceRequest
+    :: TargetPoolsRemoveInstanceRequest
+targetPoolsRemoveInstanceRequest =
+    TargetPoolsRemoveInstanceRequest
+    { _tprirInstances = Nothing
+    }
+
+-- | URLs of the instances to be removed from targetPool.
+tprirInstances :: Lens' TargetPoolsRemoveInstanceRequest [InstanceReference]
+tprirInstances
+  = lens _tprirInstances
+      (\ s a -> s{_tprirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsRemoveInstanceRequest
+         where
+        parseJSON
+          = withObject "TargetPoolsRemoveInstanceRequest"
+              (\ o ->
+                 TargetPoolsRemoveInstanceRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON TargetPoolsRemoveInstanceRequest
+         where
+        toJSON TargetPoolsRemoveInstanceRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _tprirInstances])
+
+--
+-- /See:/ 'targetInstancesScopedListWarningDataItem' smart constructor.
+data TargetInstancesScopedListWarningDataItem = TargetInstancesScopedListWarningDataItem
+    { _tislwdiValue :: !(Maybe Text)
+    , _tislwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tislwdiValue'
+--
+-- * 'tislwdiKey'
+targetInstancesScopedListWarningDataItem
+    :: TargetInstancesScopedListWarningDataItem
+targetInstancesScopedListWarningDataItem =
+    TargetInstancesScopedListWarningDataItem
+    { _tislwdiValue = Nothing
+    , _tislwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tislwdiValue :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)
+tislwdiValue
+  = lens _tislwdiValue (\ s a -> s{_tislwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+tislwdiKey :: Lens' TargetInstancesScopedListWarningDataItem (Maybe Text)
+tislwdiKey
+  = lens _tislwdiKey (\ s a -> s{_tislwdiKey = a})
+
+instance FromJSON
+         TargetInstancesScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetInstancesScopedListWarningDataItem"
+              (\ o ->
+                 TargetInstancesScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetInstancesScopedListWarningDataItem where
+        toJSON TargetInstancesScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tislwdiValue,
+                  ("key" .=) <$> _tislwdiKey])
+
+-- | [Output Only] An informational warning that appears when the machine
+-- types list is empty.
+--
+-- /See:/ 'machineTypesScopedListWarning' smart constructor.
+data MachineTypesScopedListWarning = MachineTypesScopedListWarning
+    { _mtslwData    :: !(Maybe [MachineTypesScopedListWarningDataItem])
+    , _mtslwCode    :: !(Maybe MachineTypesScopedListWarningCode)
+    , _mtslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtslwData'
+--
+-- * 'mtslwCode'
+--
+-- * 'mtslwMessage'
+machineTypesScopedListWarning
+    :: MachineTypesScopedListWarning
+machineTypesScopedListWarning =
+    MachineTypesScopedListWarning
+    { _mtslwData = Nothing
+    , _mtslwCode = Nothing
+    , _mtslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+mtslwData :: Lens' MachineTypesScopedListWarning [MachineTypesScopedListWarningDataItem]
+mtslwData
+  = lens _mtslwData (\ s a -> s{_mtslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+mtslwCode :: Lens' MachineTypesScopedListWarning (Maybe MachineTypesScopedListWarningCode)
+mtslwCode
+  = lens _mtslwCode (\ s a -> s{_mtslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+mtslwMessage :: Lens' MachineTypesScopedListWarning (Maybe Text)
+mtslwMessage
+  = lens _mtslwMessage (\ s a -> s{_mtslwMessage = a})
+
+instance FromJSON MachineTypesScopedListWarning where
+        parseJSON
+          = withObject "MachineTypesScopedListWarning"
+              (\ o ->
+                 MachineTypesScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON MachineTypesScopedListWarning where
+        toJSON MachineTypesScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _mtslwData,
+                  ("code" .=) <$> _mtslwCode,
+                  ("message" .=) <$> _mtslwMessage])
+
+-- | A TargetInstance resource. This resource defines an endpoint instance
+-- that terminates traffic of certain protocols.
+--
+-- /See:/ 'targetInstance' smart constructor.
+data TargetInstance = TargetInstance
+    { _tiKind              :: !Text
+    , _tiNATPolicy         :: !(Maybe TargetInstanceNATPolicy)
+    , _tiZone              :: !(Maybe Text)
+    , _tiSelfLink          :: !(Maybe Text)
+    , _tiName              :: !(Maybe Text)
+    , _tiCreationTimestamp :: !(Maybe Text)
+    , _tiId                :: !(Maybe (Textual Word64))
+    , _tiDescription       :: !(Maybe Text)
+    , _tiInstance          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiKind'
+--
+-- * 'tiNATPolicy'
+--
+-- * 'tiZone'
+--
+-- * 'tiSelfLink'
+--
+-- * 'tiName'
+--
+-- * 'tiCreationTimestamp'
+--
+-- * 'tiId'
+--
+-- * 'tiDescription'
+--
+-- * 'tiInstance'
+targetInstance
+    :: TargetInstance
+targetInstance =
+    TargetInstance
+    { _tiKind = "compute#targetInstance"
+    , _tiNATPolicy = Nothing
+    , _tiZone = Nothing
+    , _tiSelfLink = Nothing
+    , _tiName = Nothing
+    , _tiCreationTimestamp = Nothing
+    , _tiId = Nothing
+    , _tiDescription = Nothing
+    , _tiInstance = Nothing
+    }
+
+-- | Type of the resource.
+tiKind :: Lens' TargetInstance Text
+tiKind = lens _tiKind (\ s a -> s{_tiKind = a})
+
+-- | NAT option controlling how IPs are NAT\'ed to the instance. Currently
+-- only NO_NAT (default value) is supported.
+tiNATPolicy :: Lens' TargetInstance (Maybe TargetInstanceNATPolicy)
+tiNATPolicy
+  = lens _tiNATPolicy (\ s a -> s{_tiNATPolicy = a})
+
+-- | [Output Only] URL of the zone where the target instance resides.
+tiZone :: Lens' TargetInstance (Maybe Text)
+tiZone = lens _tiZone (\ s a -> s{_tiZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tiSelfLink :: Lens' TargetInstance (Maybe Text)
+tiSelfLink
+  = lens _tiSelfLink (\ s a -> s{_tiSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tiName :: Lens' TargetInstance (Maybe Text)
+tiName = lens _tiName (\ s a -> s{_tiName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tiCreationTimestamp :: Lens' TargetInstance (Maybe Text)
+tiCreationTimestamp
+  = lens _tiCreationTimestamp
+      (\ s a -> s{_tiCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+tiId :: Lens' TargetInstance (Maybe Word64)
+tiId
+  = lens _tiId (\ s a -> s{_tiId = a}) .
+      mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+tiDescription :: Lens' TargetInstance (Maybe Text)
+tiDescription
+  = lens _tiDescription
+      (\ s a -> s{_tiDescription = a})
+
+-- | The URL to the instance that terminates the relevant traffic.
+tiInstance :: Lens' TargetInstance (Maybe Text)
+tiInstance
+  = lens _tiInstance (\ s a -> s{_tiInstance = a})
+
+instance FromJSON TargetInstance where
+        parseJSON
+          = withObject "TargetInstance"
+              (\ o ->
+                 TargetInstance <$>
+                   (o .:? "kind" .!= "compute#targetInstance") <*>
+                     (o .:? "natPolicy")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "instance"))
+
+instance ToJSON TargetInstance where
+        toJSON TargetInstance{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tiKind),
+                  ("natPolicy" .=) <$> _tiNATPolicy,
+                  ("zone" .=) <$> _tiZone,
+                  ("selfLink" .=) <$> _tiSelfLink,
+                  ("name" .=) <$> _tiName,
+                  ("creationTimestamp" .=) <$> _tiCreationTimestamp,
+                  ("id" .=) <$> _tiId,
+                  ("description" .=) <$> _tiDescription,
+                  ("instance" .=) <$> _tiInstance])
+
+--
+-- /See:/ 'targetPoolInstanceHealth' smart constructor.
+data TargetPoolInstanceHealth = TargetPoolInstanceHealth
+    { _tpihKind         :: !Text
+    , _tpihHealthStatus :: !(Maybe [HealthStatus])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolInstanceHealth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpihKind'
+--
+-- * 'tpihHealthStatus'
+targetPoolInstanceHealth
+    :: TargetPoolInstanceHealth
+targetPoolInstanceHealth =
+    TargetPoolInstanceHealth
+    { _tpihKind = "compute#targetPoolInstanceHealth"
+    , _tpihHealthStatus = Nothing
+    }
+
+-- | Type of resource.
+tpihKind :: Lens' TargetPoolInstanceHealth Text
+tpihKind = lens _tpihKind (\ s a -> s{_tpihKind = a})
+
+tpihHealthStatus :: Lens' TargetPoolInstanceHealth [HealthStatus]
+tpihHealthStatus
+  = lens _tpihHealthStatus
+      (\ s a -> s{_tpihHealthStatus = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolInstanceHealth where
+        parseJSON
+          = withObject "TargetPoolInstanceHealth"
+              (\ o ->
+                 TargetPoolInstanceHealth <$>
+                   (o .:? "kind" .!= "compute#targetPoolInstanceHealth")
+                     <*> (o .:? "healthStatus" .!= mempty))
+
+instance ToJSON TargetPoolInstanceHealth where
+        toJSON TargetPoolInstanceHealth{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _tpihKind),
+                  ("healthStatus" .=) <$> _tpihHealthStatus])
+
+--
+-- /See:/ 'instanceGroupManagersListManagedInstancesResponse' smart constructor.
+newtype InstanceGroupManagersListManagedInstancesResponse = InstanceGroupManagersListManagedInstancesResponse
+    { _igmlmirManagedInstances :: Maybe [ManagedInstance]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersListManagedInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlmirManagedInstances'
+instanceGroupManagersListManagedInstancesResponse
+    :: InstanceGroupManagersListManagedInstancesResponse
+instanceGroupManagersListManagedInstancesResponse =
+    InstanceGroupManagersListManagedInstancesResponse
+    { _igmlmirManagedInstances = Nothing
+    }
+
+-- | [Output Only] The list of instances in the managed instance group.
+igmlmirManagedInstances :: Lens' InstanceGroupManagersListManagedInstancesResponse [ManagedInstance]
+igmlmirManagedInstances
+  = lens _igmlmirManagedInstances
+      (\ s a -> s{_igmlmirManagedInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersListManagedInstancesResponse
+         where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersListManagedInstancesResponse"
+              (\ o ->
+                 InstanceGroupManagersListManagedInstancesResponse <$>
+                   (o .:? "managedInstances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersListManagedInstancesResponse
+         where
+        toJSON
+          InstanceGroupManagersListManagedInstancesResponse{..}
+          = object
+              (catMaybes
+                 [("managedInstances" .=) <$>
+                    _igmlmirManagedInstances])
+
+-- |
+--
+-- /See:/ 'instanceProperties' smart constructor.
+data InstanceProperties = InstanceProperties
+    { _ipServiceAccounts   :: !(Maybe [ServiceAccount])
+    , _ipNetworkInterfaces :: !(Maybe [NetworkInterface])
+    , _ipMachineType       :: !(Maybe Text)
+    , _ipMetadata          :: !(Maybe Metadata)
+    , _ipScheduling        :: !(Maybe Scheduling)
+    , _ipDisks             :: !(Maybe [AttachedDisk])
+    , _ipCanIPForward      :: !(Maybe Bool)
+    , _ipDescription       :: !(Maybe Text)
+    , _ipTags              :: !(Maybe Tags)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipServiceAccounts'
+--
+-- * 'ipNetworkInterfaces'
+--
+-- * 'ipMachineType'
+--
+-- * 'ipMetadata'
+--
+-- * 'ipScheduling'
+--
+-- * 'ipDisks'
+--
+-- * 'ipCanIPForward'
+--
+-- * 'ipDescription'
+--
+-- * 'ipTags'
+instanceProperties
+    :: InstanceProperties
+instanceProperties =
+    InstanceProperties
+    { _ipServiceAccounts = Nothing
+    , _ipNetworkInterfaces = Nothing
+    , _ipMachineType = Nothing
+    , _ipMetadata = Nothing
+    , _ipScheduling = Nothing
+    , _ipDisks = Nothing
+    , _ipCanIPForward = Nothing
+    , _ipDescription = Nothing
+    , _ipTags = Nothing
+    }
+
+-- | A list of service accounts with specified scopes. Access tokens for
+-- these service accounts are available to the instances that are created
+-- from this template. Use metadata queries to obtain the access tokens for
+-- these instances.
+ipServiceAccounts :: Lens' InstanceProperties [ServiceAccount]
+ipServiceAccounts
+  = lens _ipServiceAccounts
+      (\ s a -> s{_ipServiceAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | An array of network access configurations for this interface.
+ipNetworkInterfaces :: Lens' InstanceProperties [NetworkInterface]
+ipNetworkInterfaces
+  = lens _ipNetworkInterfaces
+      (\ s a -> s{_ipNetworkInterfaces = a})
+      . _Default
+      . _Coerce
+
+-- | The machine type to use for instances that are created from this
+-- template.
+ipMachineType :: Lens' InstanceProperties (Maybe Text)
+ipMachineType
+  = lens _ipMachineType
+      (\ s a -> s{_ipMachineType = a})
+
+-- | The metadata key\/value pairs to assign to instances that are created
+-- from this template. These pairs can consist of custom metadata or
+-- predefined keys. See Project and instance metadata for more information.
+ipMetadata :: Lens' InstanceProperties (Maybe Metadata)
+ipMetadata
+  = lens _ipMetadata (\ s a -> s{_ipMetadata = a})
+
+-- | Specifies the scheduling options for the instances that are created from
+-- this template.
+ipScheduling :: Lens' InstanceProperties (Maybe Scheduling)
+ipScheduling
+  = lens _ipScheduling (\ s a -> s{_ipScheduling = a})
+
+-- | An array of disks that are associated with the instances that are
+-- created from this template.
+ipDisks :: Lens' InstanceProperties [AttachedDisk]
+ipDisks
+  = lens _ipDisks (\ s a -> s{_ipDisks = a}) . _Default
+      . _Coerce
+
+-- | Enables instances created based on this template to send packets with
+-- source IP addresses other than their own and receive packets with
+-- destination IP addresses other than their own. If these instances will
+-- be used as an IP gateway or it will be set as the next-hop in a Route
+-- resource, specify true. If unsure, leave this set to false. See the
+-- canIpForward documentation for more information.
+ipCanIPForward :: Lens' InstanceProperties (Maybe Bool)
+ipCanIPForward
+  = lens _ipCanIPForward
+      (\ s a -> s{_ipCanIPForward = a})
+
+-- | An optional text description for the instances that are created from
+-- this instance template.
+ipDescription :: Lens' InstanceProperties (Maybe Text)
+ipDescription
+  = lens _ipDescription
+      (\ s a -> s{_ipDescription = a})
+
+-- | A list of tags to apply to the instances that are created from this
+-- template. The tags identify valid sources or targets for network
+-- firewalls. The setTags method can modify this list of tags. Each tag
+-- within the list must comply with RFC1035.
+ipTags :: Lens' InstanceProperties (Maybe Tags)
+ipTags = lens _ipTags (\ s a -> s{_ipTags = a})
+
+instance FromJSON InstanceProperties where
+        parseJSON
+          = withObject "InstanceProperties"
+              (\ o ->
+                 InstanceProperties <$>
+                   (o .:? "serviceAccounts" .!= mempty) <*>
+                     (o .:? "networkInterfaces" .!= mempty)
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "scheduling")
+                     <*> (o .:? "disks" .!= mempty)
+                     <*> (o .:? "canIpForward")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON InstanceProperties where
+        toJSON InstanceProperties{..}
+          = object
+              (catMaybes
+                 [("serviceAccounts" .=) <$> _ipServiceAccounts,
+                  ("networkInterfaces" .=) <$> _ipNetworkInterfaces,
+                  ("machineType" .=) <$> _ipMachineType,
+                  ("metadata" .=) <$> _ipMetadata,
+                  ("scheduling" .=) <$> _ipScheduling,
+                  ("disks" .=) <$> _ipDisks,
+                  ("canIpForward" .=) <$> _ipCanIPForward,
+                  ("description" .=) <$> _ipDescription,
+                  ("tags" .=) <$> _ipTags])
+
+-- | [Output Only] Informational warning which replaces the list of disk
+-- types when the list is empty.
+--
+-- /See:/ 'diskTypesScopedListWarning' smart constructor.
+data DiskTypesScopedListWarning = DiskTypesScopedListWarning
+    { _dtslwData    :: !(Maybe [DiskTypesScopedListWarningDataItem])
+    , _dtslwCode    :: !(Maybe DiskTypesScopedListWarningCode)
+    , _dtslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtslwData'
+--
+-- * 'dtslwCode'
+--
+-- * 'dtslwMessage'
+diskTypesScopedListWarning
+    :: DiskTypesScopedListWarning
+diskTypesScopedListWarning =
+    DiskTypesScopedListWarning
+    { _dtslwData = Nothing
+    , _dtslwCode = Nothing
+    , _dtslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+dtslwData :: Lens' DiskTypesScopedListWarning [DiskTypesScopedListWarningDataItem]
+dtslwData
+  = lens _dtslwData (\ s a -> s{_dtslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+dtslwCode :: Lens' DiskTypesScopedListWarning (Maybe DiskTypesScopedListWarningCode)
+dtslwCode
+  = lens _dtslwCode (\ s a -> s{_dtslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+dtslwMessage :: Lens' DiskTypesScopedListWarning (Maybe Text)
+dtslwMessage
+  = lens _dtslwMessage (\ s a -> s{_dtslwMessage = a})
+
+instance FromJSON DiskTypesScopedListWarning where
+        parseJSON
+          = withObject "DiskTypesScopedListWarning"
+              (\ o ->
+                 DiskTypesScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DiskTypesScopedListWarning where
+        toJSON DiskTypesScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dtslwData,
+                  ("code" .=) <$> _dtslwCode,
+                  ("message" .=) <$> _dtslwMessage])
+
+-- | [Input Only] Specifies the parameters for a new disk that will be
+-- created alongside the new instance. Use initialization parameters to
+-- create boot disks or local SSDs attached to the new instance. This
+-- property is mutually exclusive with the source property; you can only
+-- define one or the other, but not both.
+--
+-- /See:/ 'attachedDiskInitializeParams' smart constructor.
+data AttachedDiskInitializeParams = AttachedDiskInitializeParams
+    { _adipSourceImage :: !(Maybe Text)
+    , _adipDiskSizeGb  :: !(Maybe (Textual Int64))
+    , _adipDiskName    :: !(Maybe Text)
+    , _adipDiskType    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachedDiskInitializeParams' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adipSourceImage'
+--
+-- * 'adipDiskSizeGb'
+--
+-- * 'adipDiskName'
+--
+-- * 'adipDiskType'
+attachedDiskInitializeParams
+    :: AttachedDiskInitializeParams
+attachedDiskInitializeParams =
+    AttachedDiskInitializeParams
+    { _adipSourceImage = Nothing
+    , _adipDiskSizeGb = Nothing
+    , _adipDiskName = Nothing
+    , _adipDiskType = Nothing
+    }
+
+-- | A source image used to create the disk. You can provide a private
+-- (custom) image, and Compute Engine will use the corresponding image from
+-- your project. For example: global\/images\/my-private-image Or you can
+-- provide an image from a publicly-available project. For example, to use
+-- a Debian image from the debian-cloud project, make sure to include the
+-- project in the URL:
+-- projects\/debian-cloud\/global\/images\/debian-7-wheezy-vYYYYMMDD where
+-- vYYYYMMDD is the image version. The fully-qualified URL will also work
+-- in both cases.
+adipSourceImage :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipSourceImage
+  = lens _adipSourceImage
+      (\ s a -> s{_adipSourceImage = a})
+
+-- | Specifies the size of the disk in base-2 GB.
+adipDiskSizeGb :: Lens' AttachedDiskInitializeParams (Maybe Int64)
+adipDiskSizeGb
+  = lens _adipDiskSizeGb
+      (\ s a -> s{_adipDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | Specifies the disk name. If not specified, the default is to use the
+-- name of the instance.
+adipDiskName :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipDiskName
+  = lens _adipDiskName (\ s a -> s{_adipDiskName = a})
+
+-- | Specifies the disk type to use to create the instance. If not specified,
+-- the default is pd-standard, specified using the full URL. For example:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/pd-standard
+-- Other values include pd-ssd and local-ssd. If you define this field, you
+-- can provide either the full or partial URL. For example, the following
+-- are valid values: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/diskTypes\/diskType
+-- - projects\/project\/zones\/zone\/diskTypes\/diskType -
+-- zones\/zone\/diskTypes\/diskType
+adipDiskType :: Lens' AttachedDiskInitializeParams (Maybe Text)
+adipDiskType
+  = lens _adipDiskType (\ s a -> s{_adipDiskType = a})
+
+instance FromJSON AttachedDiskInitializeParams where
+        parseJSON
+          = withObject "AttachedDiskInitializeParams"
+              (\ o ->
+                 AttachedDiskInitializeParams <$>
+                   (o .:? "sourceImage") <*> (o .:? "diskSizeGb") <*>
+                     (o .:? "diskName")
+                     <*> (o .:? "diskType"))
+
+instance ToJSON AttachedDiskInitializeParams where
+        toJSON AttachedDiskInitializeParams{..}
+          = object
+              (catMaybes
+                 [("sourceImage" .=) <$> _adipSourceImage,
+                  ("diskSizeGb" .=) <$> _adipDiskSizeGb,
+                  ("diskName" .=) <$> _adipDiskName,
+                  ("diskType" .=) <$> _adipDiskType])
+
+--
+-- /See:/ 'addressesScopedListWarningDataItem' smart constructor.
+data AddressesScopedListWarningDataItem = AddressesScopedListWarningDataItem
+    { _aslwdiValue :: !(Maybe Text)
+    , _aslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aslwdiValue'
+--
+-- * 'aslwdiKey'
+addressesScopedListWarningDataItem
+    :: AddressesScopedListWarningDataItem
+addressesScopedListWarningDataItem =
+    AddressesScopedListWarningDataItem
+    { _aslwdiValue = Nothing
+    , _aslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+aslwdiValue :: Lens' AddressesScopedListWarningDataItem (Maybe Text)
+aslwdiValue
+  = lens _aslwdiValue (\ s a -> s{_aslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+aslwdiKey :: Lens' AddressesScopedListWarningDataItem (Maybe Text)
+aslwdiKey
+  = lens _aslwdiKey (\ s a -> s{_aslwdiKey = a})
+
+instance FromJSON AddressesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "AddressesScopedListWarningDataItem"
+              (\ o ->
+                 AddressesScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AddressesScopedListWarningDataItem
+         where
+        toJSON AddressesScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aslwdiValue,
+                  ("key" .=) <$> _aslwdiKey])
+
+-- | A network interface resource attached to an instance.
+--
+-- /See:/ 'networkInterface' smart constructor.
+data NetworkInterface = NetworkInterface
+    { _niNetwork       :: !(Maybe Text)
+    , _niName          :: !(Maybe Text)
+    , _niNetworkIP     :: !(Maybe Text)
+    , _niAccessConfigs :: !(Maybe [AccessConfig])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niNetwork'
+--
+-- * 'niName'
+--
+-- * 'niNetworkIP'
+--
+-- * 'niAccessConfigs'
+networkInterface
+    :: NetworkInterface
+networkInterface =
+    NetworkInterface
+    { _niNetwork = Nothing
+    , _niName = Nothing
+    , _niNetworkIP = Nothing
+    , _niAccessConfigs = Nothing
+    }
+
+-- | URL of the network resource for this instance. This is required for
+-- creating an instance but optional when creating a firewall rule. If not
+-- specified when creating a firewall rule, the default network is used:
+-- global\/networks\/default If you specify this property, you can specify
+-- the network as a full or partial URL. For example, the following are all
+-- valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/global\/networks\/network
+-- - projects\/project\/global\/networks\/network -
+-- global\/networks\/default
+niNetwork :: Lens' NetworkInterface (Maybe Text)
+niNetwork
+  = lens _niNetwork (\ s a -> s{_niNetwork = a})
+
+-- | [Output Only] The name of the network interface, generated by the
+-- server. For network devices, these are eth0, eth1, etc.
+niName :: Lens' NetworkInterface (Maybe Text)
+niName = lens _niName (\ s a -> s{_niName = a})
+
+-- | [Output Only] An optional IPV4 internal network address assigned to the
+-- instance for this network interface.
+niNetworkIP :: Lens' NetworkInterface (Maybe Text)
+niNetworkIP
+  = lens _niNetworkIP (\ s a -> s{_niNetworkIP = a})
+
+-- | An array of configurations for this interface. Currently, ONE_TO_ONE_NAT
+-- is the only access config supported. If there are no accessConfigs
+-- specified, then this instance will have no external internet access.
+niAccessConfigs :: Lens' NetworkInterface [AccessConfig]
+niAccessConfigs
+  = lens _niAccessConfigs
+      (\ s a -> s{_niAccessConfigs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON NetworkInterface where
+        parseJSON
+          = withObject "NetworkInterface"
+              (\ o ->
+                 NetworkInterface <$>
+                   (o .:? "network") <*> (o .:? "name") <*>
+                     (o .:? "networkIP")
+                     <*> (o .:? "accessConfigs" .!= mempty))
+
+instance ToJSON NetworkInterface where
+        toJSON NetworkInterface{..}
+          = object
+              (catMaybes
+                 [("network" .=) <$> _niNetwork,
+                  ("name" .=) <$> _niName,
+                  ("networkIP" .=) <$> _niNetworkIP,
+                  ("accessConfigs" .=) <$> _niAccessConfigs])
+
+--
+-- /See:/ 'targetPoolsRemoveHealthCheckRequest' smart constructor.
+newtype TargetPoolsRemoveHealthCheckRequest = TargetPoolsRemoveHealthCheckRequest
+    { _tprhcrHealthChecks :: Maybe [HealthCheckReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsRemoveHealthCheckRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tprhcrHealthChecks'
+targetPoolsRemoveHealthCheckRequest
+    :: TargetPoolsRemoveHealthCheckRequest
+targetPoolsRemoveHealthCheckRequest =
+    TargetPoolsRemoveHealthCheckRequest
+    { _tprhcrHealthChecks = Nothing
+    }
+
+-- | Health check URLs to be removed from targetPool.
+tprhcrHealthChecks :: Lens' TargetPoolsRemoveHealthCheckRequest [HealthCheckReference]
+tprhcrHealthChecks
+  = lens _tprhcrHealthChecks
+      (\ s a -> s{_tprhcrHealthChecks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsRemoveHealthCheckRequest
+         where
+        parseJSON
+          = withObject "TargetPoolsRemoveHealthCheckRequest"
+              (\ o ->
+                 TargetPoolsRemoveHealthCheckRequest <$>
+                   (o .:? "healthChecks" .!= mempty))
+
+instance ToJSON TargetPoolsRemoveHealthCheckRequest
+         where
+        toJSON TargetPoolsRemoveHealthCheckRequest{..}
+          = object
+              (catMaybes
+                 [("healthChecks" .=) <$> _tprhcrHealthChecks])
+
+-- | A list of instance templates.
+--
+-- /See:/ 'instanceTemplateList' smart constructor.
+data InstanceTemplateList = InstanceTemplateList
+    { _itlNextPageToken :: !(Maybe Text)
+    , _itlKind          :: !Text
+    , _itlItems         :: !(Maybe [InstanceTemplate])
+    , _itlSelfLink      :: !(Maybe Text)
+    , _itlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplateList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itlNextPageToken'
+--
+-- * 'itlKind'
+--
+-- * 'itlItems'
+--
+-- * 'itlSelfLink'
+--
+-- * 'itlId'
+instanceTemplateList
+    :: InstanceTemplateList
+instanceTemplateList =
+    InstanceTemplateList
+    { _itlNextPageToken = Nothing
+    , _itlKind = "compute#instanceTemplateList"
+    , _itlItems = Nothing
+    , _itlSelfLink = Nothing
+    , _itlId = Nothing
+    }
+
+-- | [Output Only] A token that is used to continue a truncated list request.
+itlNextPageToken :: Lens' InstanceTemplateList (Maybe Text)
+itlNextPageToken
+  = lens _itlNextPageToken
+      (\ s a -> s{_itlNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceTemplatesListResponse for instance template lists.
+itlKind :: Lens' InstanceTemplateList Text
+itlKind = lens _itlKind (\ s a -> s{_itlKind = a})
+
+-- | [Output Only] list of InstanceTemplate resources.
+itlItems :: Lens' InstanceTemplateList [InstanceTemplate]
+itlItems
+  = lens _itlItems (\ s a -> s{_itlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The URL for this instance template list. The server
+-- defines this URL.
+itlSelfLink :: Lens' InstanceTemplateList (Maybe Text)
+itlSelfLink
+  = lens _itlSelfLink (\ s a -> s{_itlSelfLink = a})
+
+-- | [Output Only] A unique identifier for this instance template. The server
+-- defines this identifier.
+itlId :: Lens' InstanceTemplateList (Maybe Text)
+itlId = lens _itlId (\ s a -> s{_itlId = a})
+
+instance FromJSON InstanceTemplateList where
+        parseJSON
+          = withObject "InstanceTemplateList"
+              (\ o ->
+                 InstanceTemplateList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceTemplateList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceTemplateList where
+        toJSON InstanceTemplateList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _itlNextPageToken,
+                  Just ("kind" .= _itlKind),
+                  ("items" .=) <$> _itlItems,
+                  ("selfLink" .=) <$> _itlSelfLink,
+                  ("id" .=) <$> _itlId])
+
+-- | Contains a list of route resources.
+--
+-- /See:/ 'routeList' smart constructor.
+data RouteList = RouteList
+    { _rlNextPageToken :: !(Maybe Text)
+    , _rlKind          :: !Text
+    , _rlItems         :: !(Maybe [Route])
+    , _rlSelfLink      :: !(Maybe Text)
+    , _rlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlNextPageToken'
+--
+-- * 'rlKind'
+--
+-- * 'rlItems'
+--
+-- * 'rlSelfLink'
+--
+-- * 'rlId'
+routeList
+    :: RouteList
+routeList =
+    RouteList
+    { _rlNextPageToken = Nothing
+    , _rlKind = "compute#routeList"
+    , _rlItems = Nothing
+    , _rlSelfLink = Nothing
+    , _rlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+rlNextPageToken :: Lens' RouteList (Maybe Text)
+rlNextPageToken
+  = lens _rlNextPageToken
+      (\ s a -> s{_rlNextPageToken = a})
+
+-- | Type of resource.
+rlKind :: Lens' RouteList Text
+rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
+
+-- | A list of Route resources.
+rlItems :: Lens' RouteList [Route]
+rlItems
+  = lens _rlItems (\ s a -> s{_rlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+rlSelfLink :: Lens' RouteList (Maybe Text)
+rlSelfLink
+  = lens _rlSelfLink (\ s a -> s{_rlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+rlId :: Lens' RouteList (Maybe Text)
+rlId = lens _rlId (\ s a -> s{_rlId = a})
+
+instance FromJSON RouteList where
+        parseJSON
+          = withObject "RouteList"
+              (\ o ->
+                 RouteList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#routeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON RouteList where
+        toJSON RouteList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rlNextPageToken,
+                  Just ("kind" .= _rlKind), ("items" .=) <$> _rlItems,
+                  ("selfLink" .=) <$> _rlSelfLink,
+                  ("id" .=) <$> _rlId])
+
+-- | Contains a list of TargetVpnGateway resources.
+--
+-- /See:/ 'targetVPNGatewayList' smart constructor.
+data TargetVPNGatewayList = TargetVPNGatewayList
+    { _tvglNextPageToken :: !(Maybe Text)
+    , _tvglKind          :: !Text
+    , _tvglItems         :: !(Maybe [TargetVPNGateway])
+    , _tvglSelfLink      :: !(Maybe Text)
+    , _tvglId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvglNextPageToken'
+--
+-- * 'tvglKind'
+--
+-- * 'tvglItems'
+--
+-- * 'tvglSelfLink'
+--
+-- * 'tvglId'
+targetVPNGatewayList
+    :: TargetVPNGatewayList
+targetVPNGatewayList =
+    TargetVPNGatewayList
+    { _tvglNextPageToken = Nothing
+    , _tvglKind = "compute#targetVpnGatewayList"
+    , _tvglItems = Nothing
+    , _tvglSelfLink = Nothing
+    , _tvglId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+tvglNextPageToken :: Lens' TargetVPNGatewayList (Maybe Text)
+tvglNextPageToken
+  = lens _tvglNextPageToken
+      (\ s a -> s{_tvglNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#targetVpnGateway for
+-- target VPN gateways.
+tvglKind :: Lens' TargetVPNGatewayList Text
+tvglKind = lens _tvglKind (\ s a -> s{_tvglKind = a})
+
+-- | [Output Only] A list of TargetVpnGateway resources.
+tvglItems :: Lens' TargetVPNGatewayList [TargetVPNGateway]
+tvglItems
+  = lens _tvglItems (\ s a -> s{_tvglItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+tvglSelfLink :: Lens' TargetVPNGatewayList (Maybe Text)
+tvglSelfLink
+  = lens _tvglSelfLink (\ s a -> s{_tvglSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+tvglId :: Lens' TargetVPNGatewayList (Maybe Text)
+tvglId = lens _tvglId (\ s a -> s{_tvglId = a})
+
+instance FromJSON TargetVPNGatewayList where
+        parseJSON
+          = withObject "TargetVPNGatewayList"
+              (\ o ->
+                 TargetVPNGatewayList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetVpnGatewayList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetVPNGatewayList where
+        toJSON TargetVPNGatewayList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tvglNextPageToken,
+                  Just ("kind" .= _tvglKind),
+                  ("items" .=) <$> _tvglItems,
+                  ("selfLink" .=) <$> _tvglSelfLink,
+                  ("id" .=) <$> _tvglId])
+
+-- | Contains a list of SslCertificate resources.
+--
+-- /See:/ 'sslCertificateList' smart constructor.
+data SSLCertificateList = SSLCertificateList
+    { _sclNextPageToken :: !(Maybe Text)
+    , _sclKind          :: !Text
+    , _sclItems         :: !(Maybe [SSLCertificate])
+    , _sclSelfLink      :: !(Maybe Text)
+    , _sclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificateList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclNextPageToken'
+--
+-- * 'sclKind'
+--
+-- * 'sclItems'
+--
+-- * 'sclSelfLink'
+--
+-- * 'sclId'
+sslCertificateList
+    :: SSLCertificateList
+sslCertificateList =
+    SSLCertificateList
+    { _sclNextPageToken = Nothing
+    , _sclKind = "compute#sslCertificateList"
+    , _sclItems = Nothing
+    , _sclSelfLink = Nothing
+    , _sclId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+sclNextPageToken :: Lens' SSLCertificateList (Maybe Text)
+sclNextPageToken
+  = lens _sclNextPageToken
+      (\ s a -> s{_sclNextPageToken = a})
+
+-- | Type of resource.
+sclKind :: Lens' SSLCertificateList Text
+sclKind = lens _sclKind (\ s a -> s{_sclKind = a})
+
+-- | A list of SslCertificate resources.
+sclItems :: Lens' SSLCertificateList [SSLCertificate]
+sclItems
+  = lens _sclItems (\ s a -> s{_sclItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+sclSelfLink :: Lens' SSLCertificateList (Maybe Text)
+sclSelfLink
+  = lens _sclSelfLink (\ s a -> s{_sclSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+sclId :: Lens' SSLCertificateList (Maybe Text)
+sclId = lens _sclId (\ s a -> s{_sclId = a})
+
+instance FromJSON SSLCertificateList where
+        parseJSON
+          = withObject "SSLCertificateList"
+              (\ o ->
+                 SSLCertificateList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#sslCertificateList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON SSLCertificateList where
+        toJSON SSLCertificateList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _sclNextPageToken,
+                  Just ("kind" .= _sclKind),
+                  ("items" .=) <$> _sclItems,
+                  ("selfLink" .=) <$> _sclSelfLink,
+                  ("id" .=) <$> _sclId])
+
+--
+-- /See:/ 'firewallAllowedItem' smart constructor.
+data FirewallAllowedItem = FirewallAllowedItem
+    { _faiIPProtocol :: !(Maybe Text)
+    , _faiPorts      :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallAllowedItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'faiIPProtocol'
+--
+-- * 'faiPorts'
+firewallAllowedItem
+    :: FirewallAllowedItem
+firewallAllowedItem =
+    FirewallAllowedItem
+    { _faiIPProtocol = Nothing
+    , _faiPorts = Nothing
+    }
+
+-- | The IP protocol that is allowed for this rule. The protocol type is
+-- required when creating a firewall. This value can either be one of the
+-- following well known protocol strings (tcp, udp, icmp, esp, ah, sctp),
+-- or the IP protocol number.
+faiIPProtocol :: Lens' FirewallAllowedItem (Maybe Text)
+faiIPProtocol
+  = lens _faiIPProtocol
+      (\ s a -> s{_faiIPProtocol = a})
+
+-- | An optional list of ports which are allowed. This field is only
+-- applicable for UDP or TCP protocol. Each entry must be either an integer
+-- or a range. If not specified, connections through any port are allowed
+-- Example inputs include: [\"22\"], [\"80\",\"443\"], and
+-- [\"12345-12349\"].
+faiPorts :: Lens' FirewallAllowedItem [Text]
+faiPorts
+  = lens _faiPorts (\ s a -> s{_faiPorts = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON FirewallAllowedItem where
+        parseJSON
+          = withObject "FirewallAllowedItem"
+              (\ o ->
+                 FirewallAllowedItem <$>
+                   (o .:? "IPProtocol") <*> (o .:? "ports" .!= mempty))
+
+instance ToJSON FirewallAllowedItem where
+        toJSON FirewallAllowedItem{..}
+          = object
+              (catMaybes
+                 [("IPProtocol" .=) <$> _faiIPProtocol,
+                  ("ports" .=) <$> _faiPorts])
+
+-- | A network resource.
+--
+-- /See:/ 'network' smart constructor.
+data Network = Network
+    { _nKind              :: !Text
+    , _nIPv4Range         :: !(Maybe Text)
+    , _nSelfLink          :: !(Maybe Text)
+    , _nName              :: !(Maybe Text)
+    , _nCreationTimestamp :: !(Maybe Text)
+    , _nId                :: !(Maybe (Textual Word64))
+    , _nGatewayIPv4       :: !(Maybe Text)
+    , _nDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Network' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nKind'
+--
+-- * 'nIPv4Range'
+--
+-- * 'nSelfLink'
+--
+-- * 'nName'
+--
+-- * 'nCreationTimestamp'
+--
+-- * 'nId'
+--
+-- * 'nGatewayIPv4'
+--
+-- * 'nDescription'
+network
+    :: Network
+network =
+    Network
+    { _nKind = "compute#network"
+    , _nIPv4Range = Nothing
+    , _nSelfLink = Nothing
+    , _nName = Nothing
+    , _nCreationTimestamp = Nothing
+    , _nId = Nothing
+    , _nGatewayIPv4 = Nothing
+    , _nDescription = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#network for networks.
+nKind :: Lens' Network Text
+nKind = lens _nKind (\ s a -> s{_nKind = a})
+
+-- | The range of internal addresses that are legal on this network. This
+-- range is a CIDR specification, for example: 192.168.0.0\/16. Provided by
+-- the client when the network is created.
+nIPv4Range :: Lens' Network (Maybe Text)
+nIPv4Range
+  = lens _nIPv4Range (\ s a -> s{_nIPv4Range = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+nSelfLink :: Lens' Network (Maybe Text)
+nSelfLink
+  = lens _nSelfLink (\ s a -> s{_nSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+nName :: Lens' Network (Maybe Text)
+nName = lens _nName (\ s a -> s{_nName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+nCreationTimestamp :: Lens' Network (Maybe Text)
+nCreationTimestamp
+  = lens _nCreationTimestamp
+      (\ s a -> s{_nCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+nId :: Lens' Network (Maybe Word64)
+nId
+  = lens _nId (\ s a -> s{_nId = a}) . mapping _Coerce
+
+-- | A gateway address for default routing to other networks. This value is
+-- read only and is selected by the Google Compute Engine, typically as the
+-- first usable address in the IPv4Range.
+nGatewayIPv4 :: Lens' Network (Maybe Text)
+nGatewayIPv4
+  = lens _nGatewayIPv4 (\ s a -> s{_nGatewayIPv4 = a})
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+nDescription :: Lens' Network (Maybe Text)
+nDescription
+  = lens _nDescription (\ s a -> s{_nDescription = a})
+
+instance FromJSON Network where
+        parseJSON
+          = withObject "Network"
+              (\ o ->
+                 Network <$>
+                   (o .:? "kind" .!= "compute#network") <*>
+                     (o .:? "IPv4Range")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "gatewayIPv4")
+                     <*> (o .:? "description"))
+
+instance ToJSON Network where
+        toJSON Network{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _nKind),
+                  ("IPv4Range" .=) <$> _nIPv4Range,
+                  ("selfLink" .=) <$> _nSelfLink,
+                  ("name" .=) <$> _nName,
+                  ("creationTimestamp" .=) <$> _nCreationTimestamp,
+                  ("id" .=) <$> _nId,
+                  ("gatewayIPv4" .=) <$> _nGatewayIPv4,
+                  ("description" .=) <$> _nDescription])
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+--
+-- /See:/ 'addressesScopedListWarning' smart constructor.
+data AddressesScopedListWarning = AddressesScopedListWarning
+    { _aData    :: !(Maybe [AddressesScopedListWarningDataItem])
+    , _aCode    :: !(Maybe AddressesScopedListWarningCode)
+    , _aMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aData'
+--
+-- * 'aCode'
+--
+-- * 'aMessage'
+addressesScopedListWarning
+    :: AddressesScopedListWarning
+addressesScopedListWarning =
+    AddressesScopedListWarning
+    { _aData = Nothing
+    , _aCode = Nothing
+    , _aMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+aData :: Lens' AddressesScopedListWarning [AddressesScopedListWarningDataItem]
+aData
+  = lens _aData (\ s a -> s{_aData = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+aCode :: Lens' AddressesScopedListWarning (Maybe AddressesScopedListWarningCode)
+aCode = lens _aCode (\ s a -> s{_aCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+aMessage :: Lens' AddressesScopedListWarning (Maybe Text)
+aMessage = lens _aMessage (\ s a -> s{_aMessage = a})
+
+instance FromJSON AddressesScopedListWarning where
+        parseJSON
+          = withObject "AddressesScopedListWarning"
+              (\ o ->
+                 AddressesScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON AddressesScopedListWarning where
+        toJSON AddressesScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _aData, ("code" .=) <$> _aCode,
+                  ("message" .=) <$> _aMessage])
+
+-- | The parameters of the raw disk image.
+--
+-- /See:/ 'imageRawDisk' smart constructor.
+data ImageRawDisk = ImageRawDisk
+    { _irdContainerType :: !(Maybe ImageRawDiskContainerType)
+    , _irdSource        :: !(Maybe Text)
+    , _irdSha1Checksum  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImageRawDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'irdContainerType'
+--
+-- * 'irdSource'
+--
+-- * 'irdSha1Checksum'
+imageRawDisk
+    :: ImageRawDisk
+imageRawDisk =
+    ImageRawDisk
+    { _irdContainerType = Nothing
+    , _irdSource = Nothing
+    , _irdSha1Checksum = Nothing
+    }
+
+-- | The format used to encode and transmit the block device, which should be
+-- TAR. This is just a container and transmission format and not a runtime
+-- format. Provided by the client when the disk image is created.
+irdContainerType :: Lens' ImageRawDisk (Maybe ImageRawDiskContainerType)
+irdContainerType
+  = lens _irdContainerType
+      (\ s a -> s{_irdContainerType = a})
+
+-- | The full Google Cloud Storage URL where the disk image is stored. You
+-- must provide either this property or the sourceDisk property but not
+-- both.
+irdSource :: Lens' ImageRawDisk (Maybe Text)
+irdSource
+  = lens _irdSource (\ s a -> s{_irdSource = a})
+
+-- | An optional SHA1 checksum of the disk image before unpackaging; provided
+-- by the client when the disk image is created.
+irdSha1Checksum :: Lens' ImageRawDisk (Maybe Text)
+irdSha1Checksum
+  = lens _irdSha1Checksum
+      (\ s a -> s{_irdSha1Checksum = a})
+
+instance FromJSON ImageRawDisk where
+        parseJSON
+          = withObject "ImageRawDisk"
+              (\ o ->
+                 ImageRawDisk <$>
+                   (o .:? "containerType") <*> (o .:? "source") <*>
+                     (o .:? "sha1Checksum"))
+
+instance ToJSON ImageRawDisk where
+        toJSON ImageRawDisk{..}
+          = object
+              (catMaybes
+                 [("containerType" .=) <$> _irdContainerType,
+                  ("source" .=) <$> _irdSource,
+                  ("sha1Checksum" .=) <$> _irdSha1Checksum])
+
+--
+-- /See:/ 'instanceAggregatedList' smart constructor.
+data InstanceAggregatedList = InstanceAggregatedList
+    { _ialNextPageToken :: !(Maybe Text)
+    , _ialKind          :: !Text
+    , _ialItems         :: !(Maybe InstanceAggregatedListItems)
+    , _ialSelfLink      :: !(Maybe Text)
+    , _ialId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialNextPageToken'
+--
+-- * 'ialKind'
+--
+-- * 'ialItems'
+--
+-- * 'ialSelfLink'
+--
+-- * 'ialId'
+instanceAggregatedList
+    :: InstanceAggregatedList
+instanceAggregatedList =
+    InstanceAggregatedList
+    { _ialNextPageToken = Nothing
+    , _ialKind = "compute#instanceAggregatedList"
+    , _ialItems = Nothing
+    , _ialSelfLink = Nothing
+    , _ialId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+ialNextPageToken :: Lens' InstanceAggregatedList (Maybe Text)
+ialNextPageToken
+  = lens _ialNextPageToken
+      (\ s a -> s{_ialNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#instanceAggregatedList
+-- for aggregated lists of Instance resources.
+ialKind :: Lens' InstanceAggregatedList Text
+ialKind = lens _ialKind (\ s a -> s{_ialKind = a})
+
+-- | [Output Only] A map of scoped instance lists.
+ialItems :: Lens' InstanceAggregatedList (Maybe InstanceAggregatedListItems)
+ialItems = lens _ialItems (\ s a -> s{_ialItems = a})
+
+-- | [Output Only] Server defined URL for this resource.
+ialSelfLink :: Lens' InstanceAggregatedList (Maybe Text)
+ialSelfLink
+  = lens _ialSelfLink (\ s a -> s{_ialSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+ialId :: Lens' InstanceAggregatedList (Maybe Text)
+ialId = lens _ialId (\ s a -> s{_ialId = a})
+
+instance FromJSON InstanceAggregatedList where
+        parseJSON
+          = withObject "InstanceAggregatedList"
+              (\ o ->
+                 InstanceAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceAggregatedList where
+        toJSON InstanceAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _ialNextPageToken,
+                  Just ("kind" .= _ialKind),
+                  ("items" .=) <$> _ialItems,
+                  ("selfLink" .=) <$> _ialSelfLink,
+                  ("id" .=) <$> _ialId])
+
+-- | A reserved address resource.
+--
+-- /See:/ 'address' smart constructor.
+data Address = Address
+    { _aStatus            :: !(Maybe AddressStatus)
+    , _aUsers             :: !(Maybe [Text])
+    , _aKind              :: !Text
+    , _aAddress           :: !(Maybe Text)
+    , _aSelfLink          :: !(Maybe Text)
+    , _aName              :: !(Maybe Text)
+    , _aCreationTimestamp :: !(Maybe Text)
+    , _aId                :: !(Maybe (Textual Word64))
+    , _aRegion            :: !(Maybe Text)
+    , _aDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Address' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aStatus'
+--
+-- * 'aUsers'
+--
+-- * 'aKind'
+--
+-- * 'aAddress'
+--
+-- * 'aSelfLink'
+--
+-- * 'aName'
+--
+-- * 'aCreationTimestamp'
+--
+-- * 'aId'
+--
+-- * 'aRegion'
+--
+-- * 'aDescription'
+address
+    :: Address
+address =
+    Address
+    { _aStatus = Nothing
+    , _aUsers = Nothing
+    , _aKind = "compute#address"
+    , _aAddress = Nothing
+    , _aSelfLink = Nothing
+    , _aName = Nothing
+    , _aCreationTimestamp = Nothing
+    , _aId = Nothing
+    , _aRegion = Nothing
+    , _aDescription = Nothing
+    }
+
+-- | [Output Only] The status of the address, which can be either IN_USE or
+-- RESERVED. An address that is RESERVED is currently reserved and
+-- available to use. An IN_USE address is currently being used by another
+-- resource and is not available.
+aStatus :: Lens' Address (Maybe AddressStatus)
+aStatus = lens _aStatus (\ s a -> s{_aStatus = a})
+
+-- | [Output Only] The URLs of the resources that are using this address.
+aUsers :: Lens' Address [Text]
+aUsers
+  = lens _aUsers (\ s a -> s{_aUsers = a}) . _Default .
+      _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#address for
+-- addresses.
+aKind :: Lens' Address Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | The static external IP address represented by this resource.
+aAddress :: Lens' Address (Maybe Text)
+aAddress = lens _aAddress (\ s a -> s{_aAddress = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+aSelfLink :: Lens' Address (Maybe Text)
+aSelfLink
+  = lens _aSelfLink (\ s a -> s{_aSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+aName :: Lens' Address (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+aCreationTimestamp :: Lens' Address (Maybe Text)
+aCreationTimestamp
+  = lens _aCreationTimestamp
+      (\ s a -> s{_aCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+aId :: Lens' Address (Maybe Word64)
+aId
+  = lens _aId (\ s a -> s{_aId = a}) . mapping _Coerce
+
+-- | [Output Only] URL of the region where the regional address resides. This
+-- field is not applicable to global addresses.
+aRegion :: Lens' Address (Maybe Text)
+aRegion = lens _aRegion (\ s a -> s{_aRegion = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+aDescription :: Lens' Address (Maybe Text)
+aDescription
+  = lens _aDescription (\ s a -> s{_aDescription = a})
+
+instance FromJSON Address where
+        parseJSON
+          = withObject "Address"
+              (\ o ->
+                 Address <$>
+                   (o .:? "status") <*> (o .:? "users" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#address")
+                     <*> (o .:? "address")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description"))
+
+instance ToJSON Address where
+        toJSON Address{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _aStatus,
+                  ("users" .=) <$> _aUsers, Just ("kind" .= _aKind),
+                  ("address" .=) <$> _aAddress,
+                  ("selfLink" .=) <$> _aSelfLink,
+                  ("name" .=) <$> _aName,
+                  ("creationTimestamp" .=) <$> _aCreationTimestamp,
+                  ("id" .=) <$> _aId, ("region" .=) <$> _aRegion,
+                  ("description" .=) <$> _aDescription])
+
+-- | A Zone resource.
+--
+-- /See:/ 'zone' smart constructor.
+data Zone = Zone
+    { _zStatus             :: !(Maybe ZoneStatus)
+    , _zMaintenanceWindows :: !(Maybe [ZoneMaintenanceWindowsItem])
+    , _zKind               :: !Text
+    , _zSelfLink           :: !(Maybe Text)
+    , _zName               :: !(Maybe Text)
+    , _zCreationTimestamp  :: !(Maybe Text)
+    , _zId                 :: !(Maybe (Textual Word64))
+    , _zRegion             :: !(Maybe Text)
+    , _zDescription        :: !(Maybe Text)
+    , _zDeprecated         :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Zone' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zStatus'
+--
+-- * 'zMaintenanceWindows'
+--
+-- * 'zKind'
+--
+-- * 'zSelfLink'
+--
+-- * 'zName'
+--
+-- * 'zCreationTimestamp'
+--
+-- * 'zId'
+--
+-- * 'zRegion'
+--
+-- * 'zDescription'
+--
+-- * 'zDeprecated'
+zone
+    :: Zone
+zone =
+    Zone
+    { _zStatus = Nothing
+    , _zMaintenanceWindows = Nothing
+    , _zKind = "compute#zone"
+    , _zSelfLink = Nothing
+    , _zName = Nothing
+    , _zCreationTimestamp = Nothing
+    , _zId = Nothing
+    , _zRegion = Nothing
+    , _zDescription = Nothing
+    , _zDeprecated = Nothing
+    }
+
+-- | [Output Only] Status of the zone, either UP or DOWN.
+zStatus :: Lens' Zone (Maybe ZoneStatus)
+zStatus = lens _zStatus (\ s a -> s{_zStatus = a})
+
+-- | [Output Only] Any scheduled maintenance windows for this zone. When the
+-- zone is in a maintenance window, all resources which reside in the zone
+-- will be unavailable. For more information, see Maintenance Windows
+zMaintenanceWindows :: Lens' Zone [ZoneMaintenanceWindowsItem]
+zMaintenanceWindows
+  = lens _zMaintenanceWindows
+      (\ s a -> s{_zMaintenanceWindows = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always kind#zone for zones.
+zKind :: Lens' Zone Text
+zKind = lens _zKind (\ s a -> s{_zKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+zSelfLink :: Lens' Zone (Maybe Text)
+zSelfLink
+  = lens _zSelfLink (\ s a -> s{_zSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+zName :: Lens' Zone (Maybe Text)
+zName = lens _zName (\ s a -> s{_zName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+zCreationTimestamp :: Lens' Zone (Maybe Text)
+zCreationTimestamp
+  = lens _zCreationTimestamp
+      (\ s a -> s{_zCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+zId :: Lens' Zone (Maybe Word64)
+zId
+  = lens _zId (\ s a -> s{_zId = a}) . mapping _Coerce
+
+-- | [Output Only] Full URL reference to the region which hosts the zone.
+zRegion :: Lens' Zone (Maybe Text)
+zRegion = lens _zRegion (\ s a -> s{_zRegion = a})
+
+-- | [Output Only] Textual description of the resource.
+zDescription :: Lens' Zone (Maybe Text)
+zDescription
+  = lens _zDescription (\ s a -> s{_zDescription = a})
+
+-- | [Output Only] The deprecation status associated with this zone.
+zDeprecated :: Lens' Zone (Maybe DeprecationStatus)
+zDeprecated
+  = lens _zDeprecated (\ s a -> s{_zDeprecated = a})
+
+instance FromJSON Zone where
+        parseJSON
+          = withObject "Zone"
+              (\ o ->
+                 Zone <$>
+                   (o .:? "status") <*>
+                     (o .:? "maintenanceWindows" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON Zone where
+        toJSON Zone{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _zStatus,
+                  ("maintenanceWindows" .=) <$> _zMaintenanceWindows,
+                  Just ("kind" .= _zKind),
+                  ("selfLink" .=) <$> _zSelfLink,
+                  ("name" .=) <$> _zName,
+                  ("creationTimestamp" .=) <$> _zCreationTimestamp,
+                  ("id" .=) <$> _zId, ("region" .=) <$> _zRegion,
+                  ("description" .=) <$> _zDescription,
+                  ("deprecated" .=) <$> _zDeprecated])
+
+--
+-- /See:/ 'instanceGroupManagersRecreateInstancesRequest' smart constructor.
+newtype InstanceGroupManagersRecreateInstancesRequest = InstanceGroupManagersRecreateInstancesRequest
+    { _igmrirInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersRecreateInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmrirInstances'
+instanceGroupManagersRecreateInstancesRequest
+    :: InstanceGroupManagersRecreateInstancesRequest
+instanceGroupManagersRecreateInstancesRequest =
+    InstanceGroupManagersRecreateInstancesRequest
+    { _igmrirInstances = Nothing
+    }
+
+-- | The URL for one or more instances to recreate.
+igmrirInstances :: Lens' InstanceGroupManagersRecreateInstancesRequest [Text]
+igmrirInstances
+  = lens _igmrirInstances
+      (\ s a -> s{_igmrirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersRecreateInstancesRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersRecreateInstancesRequest"
+              (\ o ->
+                 InstanceGroupManagersRecreateInstancesRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersRecreateInstancesRequest where
+        toJSON
+          InstanceGroupManagersRecreateInstancesRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igmrirInstances])
+
+--
+-- /See:/ 'instancesScopedList' smart constructor.
+data InstancesScopedList = InstancesScopedList
+    { _islWarning   :: !(Maybe InstancesScopedListWarning)
+    , _islInstances :: !(Maybe [Instance])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islWarning'
+--
+-- * 'islInstances'
+instancesScopedList
+    :: InstancesScopedList
+instancesScopedList =
+    InstancesScopedList
+    { _islWarning = Nothing
+    , _islInstances = Nothing
+    }
+
+-- | [Output Only] Informational warning which replaces the list of instances
+-- when the list is empty.
+islWarning :: Lens' InstancesScopedList (Maybe InstancesScopedListWarning)
+islWarning
+  = lens _islWarning (\ s a -> s{_islWarning = a})
+
+-- | [Output Only] List of instances contained in this scope.
+islInstances :: Lens' InstancesScopedList [Instance]
+islInstances
+  = lens _islInstances (\ s a -> s{_islInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstancesScopedList where
+        parseJSON
+          = withObject "InstancesScopedList"
+              (\ o ->
+                 InstancesScopedList <$>
+                   (o .:? "warning") <*> (o .:? "instances" .!= mempty))
+
+instance ToJSON InstancesScopedList where
+        toJSON InstancesScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _islWarning,
+                  ("instances" .=) <$> _islInstances])
+
+--
+-- /See:/ 'healthCheckReference' smart constructor.
+newtype HealthCheckReference = HealthCheckReference
+    { _hcrHealthCheck :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthCheckReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hcrHealthCheck'
+healthCheckReference
+    :: HealthCheckReference
+healthCheckReference =
+    HealthCheckReference
+    { _hcrHealthCheck = Nothing
+    }
+
+hcrHealthCheck :: Lens' HealthCheckReference (Maybe Text)
+hcrHealthCheck
+  = lens _hcrHealthCheck
+      (\ s a -> s{_hcrHealthCheck = a})
+
+instance FromJSON HealthCheckReference where
+        parseJSON
+          = withObject "HealthCheckReference"
+              (\ o ->
+                 HealthCheckReference <$> (o .:? "healthCheck"))
+
+instance ToJSON HealthCheckReference where
+        toJSON HealthCheckReference{..}
+          = object
+              (catMaybes [("healthCheck" .=) <$> _hcrHealthCheck])
+
+-- | A map of scoped target instance lists.
+--
+-- /See:/ 'targetInstanceAggregatedListItems' smart constructor.
+newtype TargetInstanceAggregatedListItems = TargetInstanceAggregatedListItems
+    { _tialiAddtional :: HashMap Text TargetInstancesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstanceAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialiAddtional'
+targetInstanceAggregatedListItems
+    :: HashMap Text TargetInstancesScopedList -- ^ 'tialiAddtional'
+    -> TargetInstanceAggregatedListItems
+targetInstanceAggregatedListItems pTialiAddtional_ =
+    TargetInstanceAggregatedListItems
+    { _tialiAddtional = _Coerce # pTialiAddtional_
+    }
+
+-- | Name of the scope containing this set of target instances.
+tialiAddtional :: Lens' TargetInstanceAggregatedListItems (HashMap Text TargetInstancesScopedList)
+tialiAddtional
+  = lens _tialiAddtional
+      (\ s a -> s{_tialiAddtional = a})
+      . _Coerce
+
+instance FromJSON TargetInstanceAggregatedListItems
+         where
+        parseJSON
+          = withObject "TargetInstanceAggregatedListItems"
+              (\ o ->
+                 TargetInstanceAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON TargetInstanceAggregatedListItems
+         where
+        toJSON = toJSON . _tialiAddtional
+
+--
+-- /See:/ 'instanceGroupAggregatedList' smart constructor.
+data InstanceGroupAggregatedList = InstanceGroupAggregatedList
+    { _igalNextPageToken :: !(Maybe Text)
+    , _igalKind          :: !Text
+    , _igalItems         :: !(Maybe InstanceGroupAggregatedListItems)
+    , _igalSelfLink      :: !(Maybe Text)
+    , _igalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igalNextPageToken'
+--
+-- * 'igalKind'
+--
+-- * 'igalItems'
+--
+-- * 'igalSelfLink'
+--
+-- * 'igalId'
+instanceGroupAggregatedList
+    :: InstanceGroupAggregatedList
+instanceGroupAggregatedList =
+    InstanceGroupAggregatedList
+    { _igalNextPageToken = Nothing
+    , _igalKind = "compute#instanceGroupAggregatedList"
+    , _igalItems = Nothing
+    , _igalSelfLink = Nothing
+    , _igalId = Nothing
+    }
+
+-- | [Output Only] A token that is used to continue a truncated list request.
+igalNextPageToken :: Lens' InstanceGroupAggregatedList (Maybe Text)
+igalNextPageToken
+  = lens _igalNextPageToken
+      (\ s a -> s{_igalNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupAggregatedList for aggregated lists of instance
+-- groups.
+igalKind :: Lens' InstanceGroupAggregatedList Text
+igalKind = lens _igalKind (\ s a -> s{_igalKind = a})
+
+-- | A map of scoped instance group lists.
+igalItems :: Lens' InstanceGroupAggregatedList (Maybe InstanceGroupAggregatedListItems)
+igalItems
+  = lens _igalItems (\ s a -> s{_igalItems = a})
+
+-- | [Output Only] The URL for this resource type. The server generates this
+-- URL.
+igalSelfLink :: Lens' InstanceGroupAggregatedList (Maybe Text)
+igalSelfLink
+  = lens _igalSelfLink (\ s a -> s{_igalSelfLink = a})
+
+-- | [Output Only] A unique identifier for this aggregated list of instance
+-- groups. The server generates this identifier.
+igalId :: Lens' InstanceGroupAggregatedList (Maybe Text)
+igalId = lens _igalId (\ s a -> s{_igalId = a})
+
+instance FromJSON InstanceGroupAggregatedList where
+        parseJSON
+          = withObject "InstanceGroupAggregatedList"
+              (\ o ->
+                 InstanceGroupAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#instanceGroupAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupAggregatedList where
+        toJSON InstanceGroupAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igalNextPageToken,
+                  Just ("kind" .= _igalKind),
+                  ("items" .=) <$> _igalItems,
+                  ("selfLink" .=) <$> _igalSelfLink,
+                  ("id" .=) <$> _igalId])
+
+-- | The route resource. A Route is a rule that specifies how certain packets
+-- should be handled by the virtual network. Routes are associated with
+-- instances by tag and the set of Routes for a particular instance is
+-- called its routing table. For each packet leaving a instance, the system
+-- searches that instance\'s routing table for a single best matching
+-- Route. Routes match packets by destination IP address, preferring
+-- smaller or more specific ranges over larger ones. If there is a tie, the
+-- system selects the Route with the smallest priority value. If there is
+-- still a tie, it uses the layer three and four packet headers to select
+-- just one of the remaining matching Routes. The packet is then forwarded
+-- as specified by the nextHop field of the winning Route -- either to
+-- another instance destination, a instance gateway or a Google Compute
+-- Engien-operated gateway. Packets that do not match any Route in the
+-- sending instance\'s routing table are dropped.
+--
+-- /See:/ 'route' smart constructor.
+data Route = Route
+    { _rPriority          :: !(Maybe (Textual Word32))
+    , _rKind              :: !Text
+    , _rNextHopGateway    :: !(Maybe Text)
+    , _rNextHopNetwork    :: !(Maybe Text)
+    , _rNetwork           :: !(Maybe Text)
+    , _rWarnings          :: !(Maybe [RouteWarningsItem])
+    , _rNextHopIP         :: !(Maybe Text)
+    , _rDestRange         :: !(Maybe Text)
+    , _rSelfLink          :: !(Maybe Text)
+    , _rName              :: !(Maybe Text)
+    , _rCreationTimestamp :: !(Maybe Text)
+    , _rId                :: !(Maybe (Textual Word64))
+    , _rNextHopVPNTunnel  :: !(Maybe Text)
+    , _rDescription       :: !(Maybe Text)
+    , _rTags              :: !(Maybe [Text])
+    , _rNextHopInstance   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Route' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rPriority'
+--
+-- * 'rKind'
+--
+-- * 'rNextHopGateway'
+--
+-- * 'rNextHopNetwork'
+--
+-- * 'rNetwork'
+--
+-- * 'rWarnings'
+--
+-- * 'rNextHopIP'
+--
+-- * 'rDestRange'
+--
+-- * 'rSelfLink'
+--
+-- * 'rName'
+--
+-- * 'rCreationTimestamp'
+--
+-- * 'rId'
+--
+-- * 'rNextHopVPNTunnel'
+--
+-- * 'rDescription'
+--
+-- * 'rTags'
+--
+-- * 'rNextHopInstance'
+route
+    :: Route
+route =
+    Route
+    { _rPriority = Nothing
+    , _rKind = "compute#route"
+    , _rNextHopGateway = Nothing
+    , _rNextHopNetwork = Nothing
+    , _rNetwork = Nothing
+    , _rWarnings = Nothing
+    , _rNextHopIP = Nothing
+    , _rDestRange = Nothing
+    , _rSelfLink = Nothing
+    , _rName = Nothing
+    , _rCreationTimestamp = Nothing
+    , _rId = Nothing
+    , _rNextHopVPNTunnel = Nothing
+    , _rDescription = Nothing
+    , _rTags = Nothing
+    , _rNextHopInstance = Nothing
+    }
+
+-- | Breaks ties between Routes of equal specificity. Routes with smaller
+-- values win when tied with routes with larger values. Default value is
+-- 1000. A valid range is between 0 and 65535.
+rPriority :: Lens' Route (Maybe Word32)
+rPriority
+  = lens _rPriority (\ s a -> s{_rPriority = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Type of this resource. Always compute#routes for Route
+-- resources.
+rKind :: Lens' Route Text
+rKind = lens _rKind (\ s a -> s{_rKind = a})
+
+-- | The URL to a gateway that should handle matching packets. Currently,
+-- this is only the internet gateway:
+-- projects\/\/global\/gateways\/default-internet-gateway
+rNextHopGateway :: Lens' Route (Maybe Text)
+rNextHopGateway
+  = lens _rNextHopGateway
+      (\ s a -> s{_rNextHopGateway = a})
+
+-- | The URL of the local network if it should handle matching packets.
+rNextHopNetwork :: Lens' Route (Maybe Text)
+rNextHopNetwork
+  = lens _rNextHopNetwork
+      (\ s a -> s{_rNextHopNetwork = a})
+
+-- | Fully-qualified URL of the network that this route applies to.
+rNetwork :: Lens' Route (Maybe Text)
+rNetwork = lens _rNetwork (\ s a -> s{_rNetwork = a})
+
+-- | [Output Only] If potential misconfigurations are detected for this
+-- route, this field will be populated with warning messages.
+rWarnings :: Lens' Route [RouteWarningsItem]
+rWarnings
+  = lens _rWarnings (\ s a -> s{_rWarnings = a}) .
+      _Default
+      . _Coerce
+
+-- | The network IP address of an instance that should handle matching
+-- packets.
+rNextHopIP :: Lens' Route (Maybe Text)
+rNextHopIP
+  = lens _rNextHopIP (\ s a -> s{_rNextHopIP = a})
+
+-- | The destination range of outgoing packets that this route applies to.
+rDestRange :: Lens' Route (Maybe Text)
+rDestRange
+  = lens _rDestRange (\ s a -> s{_rDestRange = a})
+
+-- | [Output Only] Server-defined fully-qualified URL for this resource.
+rSelfLink :: Lens' Route (Maybe Text)
+rSelfLink
+  = lens _rSelfLink (\ s a -> s{_rSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+rName :: Lens' Route (Maybe Text)
+rName = lens _rName (\ s a -> s{_rName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+rCreationTimestamp :: Lens' Route (Maybe Text)
+rCreationTimestamp
+  = lens _rCreationTimestamp
+      (\ s a -> s{_rCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+rId :: Lens' Route (Maybe Word64)
+rId
+  = lens _rId (\ s a -> s{_rId = a}) . mapping _Coerce
+
+-- | The URL to a VpnTunnel that should handle matching packets.
+rNextHopVPNTunnel :: Lens' Route (Maybe Text)
+rNextHopVPNTunnel
+  = lens _rNextHopVPNTunnel
+      (\ s a -> s{_rNextHopVPNTunnel = a})
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+rDescription :: Lens' Route (Maybe Text)
+rDescription
+  = lens _rDescription (\ s a -> s{_rDescription = a})
+
+-- | A list of instance tags to which this route applies.
+rTags :: Lens' Route [Text]
+rTags
+  = lens _rTags (\ s a -> s{_rTags = a}) . _Default .
+      _Coerce
+
+-- | The fully-qualified URL to an instance that should handle matching
+-- packets. For example:
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/
+rNextHopInstance :: Lens' Route (Maybe Text)
+rNextHopInstance
+  = lens _rNextHopInstance
+      (\ s a -> s{_rNextHopInstance = a})
+
+instance FromJSON Route where
+        parseJSON
+          = withObject "Route"
+              (\ o ->
+                 Route <$>
+                   (o .:? "priority") <*>
+                     (o .:? "kind" .!= "compute#route")
+                     <*> (o .:? "nextHopGateway")
+                     <*> (o .:? "nextHopNetwork")
+                     <*> (o .:? "network")
+                     <*> (o .:? "warnings" .!= mempty)
+                     <*> (o .:? "nextHopIp")
+                     <*> (o .:? "destRange")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "nextHopVpnTunnel")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags" .!= mempty)
+                     <*> (o .:? "nextHopInstance"))
+
+instance ToJSON Route where
+        toJSON Route{..}
+          = object
+              (catMaybes
+                 [("priority" .=) <$> _rPriority,
+                  Just ("kind" .= _rKind),
+                  ("nextHopGateway" .=) <$> _rNextHopGateway,
+                  ("nextHopNetwork" .=) <$> _rNextHopNetwork,
+                  ("network" .=) <$> _rNetwork,
+                  ("warnings" .=) <$> _rWarnings,
+                  ("nextHopIp" .=) <$> _rNextHopIP,
+                  ("destRange" .=) <$> _rDestRange,
+                  ("selfLink" .=) <$> _rSelfLink,
+                  ("name" .=) <$> _rName,
+                  ("creationTimestamp" .=) <$> _rCreationTimestamp,
+                  ("id" .=) <$> _rId,
+                  ("nextHopVpnTunnel" .=) <$> _rNextHopVPNTunnel,
+                  ("description" .=) <$> _rDescription,
+                  ("tags" .=) <$> _rTags,
+                  ("nextHopInstance" .=) <$> _rNextHopInstance])
+
+--
+-- /See:/ 'targetVPNGatewaysScopedListWarningDataItem' smart constructor.
+data TargetVPNGatewaysScopedListWarningDataItem = TargetVPNGatewaysScopedListWarningDataItem
+    { _tvgslwdiValue :: !(Maybe Text)
+    , _tvgslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgslwdiValue'
+--
+-- * 'tvgslwdiKey'
+targetVPNGatewaysScopedListWarningDataItem
+    :: TargetVPNGatewaysScopedListWarningDataItem
+targetVPNGatewaysScopedListWarningDataItem =
+    TargetVPNGatewaysScopedListWarningDataItem
+    { _tvgslwdiValue = Nothing
+    , _tvgslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+tvgslwdiValue :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)
+tvgslwdiValue
+  = lens _tvgslwdiValue
+      (\ s a -> s{_tvgslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+tvgslwdiKey :: Lens' TargetVPNGatewaysScopedListWarningDataItem (Maybe Text)
+tvgslwdiKey
+  = lens _tvgslwdiKey (\ s a -> s{_tvgslwdiKey = a})
+
+instance FromJSON
+         TargetVPNGatewaysScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "TargetVPNGatewaysScopedListWarningDataItem"
+              (\ o ->
+                 TargetVPNGatewaysScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         TargetVPNGatewaysScopedListWarningDataItem where
+        toJSON TargetVPNGatewaysScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _tvgslwdiValue,
+                  ("key" .=) <$> _tvgslwdiKey])
+
+--
+-- /See:/ 'targetHTTPSProxiesSetSSLCertificatesRequest' smart constructor.
+newtype TargetHTTPSProxiesSetSSLCertificatesRequest = TargetHTTPSProxiesSetSSLCertificatesRequest
+    { _thpsscrSSLCertificates :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificatesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsscrSSLCertificates'
+targetHTTPSProxiesSetSSLCertificatesRequest
+    :: TargetHTTPSProxiesSetSSLCertificatesRequest
+targetHTTPSProxiesSetSSLCertificatesRequest =
+    TargetHTTPSProxiesSetSSLCertificatesRequest
+    { _thpsscrSSLCertificates = Nothing
+    }
+
+-- | New set of URLs to SslCertificate resources to associate with this
+-- TargetHttpProxy. Currently exactly one ssl certificate must be
+-- specified.
+thpsscrSSLCertificates :: Lens' TargetHTTPSProxiesSetSSLCertificatesRequest [Text]
+thpsscrSSLCertificates
+  = lens _thpsscrSSLCertificates
+      (\ s a -> s{_thpsscrSSLCertificates = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         TargetHTTPSProxiesSetSSLCertificatesRequest where
+        parseJSON
+          = withObject
+              "TargetHTTPSProxiesSetSSLCertificatesRequest"
+              (\ o ->
+                 TargetHTTPSProxiesSetSSLCertificatesRequest <$>
+                   (o .:? "sslCertificates" .!= mempty))
+
+instance ToJSON
+         TargetHTTPSProxiesSetSSLCertificatesRequest where
+        toJSON
+          TargetHTTPSProxiesSetSSLCertificatesRequest{..}
+          = object
+              (catMaybes
+                 [("sslCertificates" .=) <$> _thpsscrSSLCertificates])
+
+-- | An Instance Template resource.
+--
+-- /See:/ 'instanceTemplate' smart constructor.
+data InstanceTemplate = InstanceTemplate
+    { _itKind              :: !Text
+    , _itSelfLink          :: !(Maybe Text)
+    , _itName              :: !(Maybe Text)
+    , _itCreationTimestamp :: !(Maybe Text)
+    , _itId                :: !(Maybe (Textual Word64))
+    , _itDescription       :: !(Maybe Text)
+    , _itProperties        :: !(Maybe InstanceProperties)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itKind'
+--
+-- * 'itSelfLink'
+--
+-- * 'itName'
+--
+-- * 'itCreationTimestamp'
+--
+-- * 'itId'
+--
+-- * 'itDescription'
+--
+-- * 'itProperties'
+instanceTemplate
+    :: InstanceTemplate
+instanceTemplate =
+    InstanceTemplate
+    { _itKind = "compute#instanceTemplate"
+    , _itSelfLink = Nothing
+    , _itName = Nothing
+    , _itCreationTimestamp = Nothing
+    , _itId = Nothing
+    , _itDescription = Nothing
+    , _itProperties = Nothing
+    }
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceTemplate for instance templates.
+itKind :: Lens' InstanceTemplate Text
+itKind = lens _itKind (\ s a -> s{_itKind = a})
+
+-- | [Output Only] The URL for this instance template. The server defines
+-- this URL.
+itSelfLink :: Lens' InstanceTemplate (Maybe Text)
+itSelfLink
+  = lens _itSelfLink (\ s a -> s{_itSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+itName :: Lens' InstanceTemplate (Maybe Text)
+itName = lens _itName (\ s a -> s{_itName = a})
+
+-- | [Output Only] The creation timestamp for this instance template in
+-- RFC3339 text format.
+itCreationTimestamp :: Lens' InstanceTemplate (Maybe Text)
+itCreationTimestamp
+  = lens _itCreationTimestamp
+      (\ s a -> s{_itCreationTimestamp = a})
+
+-- | [Output Only] A unique identifier for this instance template. The server
+-- defines this identifier.
+itId :: Lens' InstanceTemplate (Maybe Word64)
+itId
+  = lens _itId (\ s a -> s{_itId = a}) .
+      mapping _Coerce
+
+-- | An optional text description for the instance template.
+itDescription :: Lens' InstanceTemplate (Maybe Text)
+itDescription
+  = lens _itDescription
+      (\ s a -> s{_itDescription = a})
+
+-- | The instance properties for this instance template.
+itProperties :: Lens' InstanceTemplate (Maybe InstanceProperties)
+itProperties
+  = lens _itProperties (\ s a -> s{_itProperties = a})
+
+instance FromJSON InstanceTemplate where
+        parseJSON
+          = withObject "InstanceTemplate"
+              (\ o ->
+                 InstanceTemplate <$>
+                   (o .:? "kind" .!= "compute#instanceTemplate") <*>
+                     (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "properties"))
+
+instance ToJSON InstanceTemplate where
+        toJSON InstanceTemplate{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _itKind),
+                  ("selfLink" .=) <$> _itSelfLink,
+                  ("name" .=) <$> _itName,
+                  ("creationTimestamp" .=) <$> _itCreationTimestamp,
+                  ("id" .=) <$> _itId,
+                  ("description" .=) <$> _itDescription,
+                  ("properties" .=) <$> _itProperties])
+
+--
+-- /See:/ 'zoneMaintenanceWindowsItem' smart constructor.
+data ZoneMaintenanceWindowsItem = ZoneMaintenanceWindowsItem
+    { _zmwiBeginTime   :: !(Maybe Text)
+    , _zmwiName        :: !(Maybe Text)
+    , _zmwiEndTime     :: !(Maybe Text)
+    , _zmwiDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneMaintenanceWindowsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zmwiBeginTime'
+--
+-- * 'zmwiName'
+--
+-- * 'zmwiEndTime'
+--
+-- * 'zmwiDescription'
+zoneMaintenanceWindowsItem
+    :: ZoneMaintenanceWindowsItem
+zoneMaintenanceWindowsItem =
+    ZoneMaintenanceWindowsItem
+    { _zmwiBeginTime = Nothing
+    , _zmwiName = Nothing
+    , _zmwiEndTime = Nothing
+    , _zmwiDescription = Nothing
+    }
+
+-- | [Output Only] Starting time of the maintenance window, in RFC3339
+-- format.
+zmwiBeginTime :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiBeginTime
+  = lens _zmwiBeginTime
+      (\ s a -> s{_zmwiBeginTime = a})
+
+-- | [Output Only] Name of the maintenance window.
+zmwiName :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiName = lens _zmwiName (\ s a -> s{_zmwiName = a})
+
+-- | [Output Only] Ending time of the maintenance window, in RFC3339 format.
+zmwiEndTime :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiEndTime
+  = lens _zmwiEndTime (\ s a -> s{_zmwiEndTime = a})
+
+-- | [Output Only] Textual description of the maintenance window.
+zmwiDescription :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiDescription
+  = lens _zmwiDescription
+      (\ s a -> s{_zmwiDescription = a})
+
+instance FromJSON ZoneMaintenanceWindowsItem where
+        parseJSON
+          = withObject "ZoneMaintenanceWindowsItem"
+              (\ o ->
+                 ZoneMaintenanceWindowsItem <$>
+                   (o .:? "beginTime") <*> (o .:? "name") <*>
+                     (o .:? "endTime")
+                     <*> (o .:? "description"))
+
+instance ToJSON ZoneMaintenanceWindowsItem where
+        toJSON ZoneMaintenanceWindowsItem{..}
+          = object
+              (catMaybes
+                 [("beginTime" .=) <$> _zmwiBeginTime,
+                  ("name" .=) <$> _zmwiName,
+                  ("endTime" .=) <$> _zmwiEndTime,
+                  ("description" .=) <$> _zmwiDescription])
+
+--
+-- /See:/ 'targetVPNGateway' smart constructor.
+data TargetVPNGateway = TargetVPNGateway
+    { _tvgStatus            :: !(Maybe TargetVPNGatewayStatus)
+    , _tvgKind              :: !Text
+    , _tvgNetwork           :: !(Maybe Text)
+    , _tvgSelfLink          :: !(Maybe Text)
+    , _tvgName              :: !(Maybe Text)
+    , _tvgCreationTimestamp :: !(Maybe Text)
+    , _tvgId                :: !(Maybe (Textual Word64))
+    , _tvgRegion            :: !(Maybe Text)
+    , _tvgTunnels           :: !(Maybe [Text])
+    , _tvgDescription       :: !(Maybe Text)
+    , _tvgForwardingRules   :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGateway' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgStatus'
+--
+-- * 'tvgKind'
+--
+-- * 'tvgNetwork'
+--
+-- * 'tvgSelfLink'
+--
+-- * 'tvgName'
+--
+-- * 'tvgCreationTimestamp'
+--
+-- * 'tvgId'
+--
+-- * 'tvgRegion'
+--
+-- * 'tvgTunnels'
+--
+-- * 'tvgDescription'
+--
+-- * 'tvgForwardingRules'
+targetVPNGateway
+    :: TargetVPNGateway
+targetVPNGateway =
+    TargetVPNGateway
+    { _tvgStatus = Nothing
+    , _tvgKind = "compute#targetVpnGateway"
+    , _tvgNetwork = Nothing
+    , _tvgSelfLink = Nothing
+    , _tvgName = Nothing
+    , _tvgCreationTimestamp = Nothing
+    , _tvgId = Nothing
+    , _tvgRegion = Nothing
+    , _tvgTunnels = Nothing
+    , _tvgDescription = Nothing
+    , _tvgForwardingRules = Nothing
+    }
+
+-- | [Output Only] The status of the VPN gateway.
+tvgStatus :: Lens' TargetVPNGateway (Maybe TargetVPNGatewayStatus)
+tvgStatus
+  = lens _tvgStatus (\ s a -> s{_tvgStatus = a})
+
+-- | [Output Only] Type of resource. Always compute#targetVpnGateway for
+-- target VPN gateways.
+tvgKind :: Lens' TargetVPNGateway Text
+tvgKind = lens _tvgKind (\ s a -> s{_tvgKind = a})
+
+-- | URL of the network to which this VPN gateway is attached. Provided by
+-- the client when the VPN gateway is created.
+tvgNetwork :: Lens' TargetVPNGateway (Maybe Text)
+tvgNetwork
+  = lens _tvgNetwork (\ s a -> s{_tvgNetwork = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tvgSelfLink :: Lens' TargetVPNGateway (Maybe Text)
+tvgSelfLink
+  = lens _tvgSelfLink (\ s a -> s{_tvgSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+tvgName :: Lens' TargetVPNGateway (Maybe Text)
+tvgName = lens _tvgName (\ s a -> s{_tvgName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+tvgCreationTimestamp :: Lens' TargetVPNGateway (Maybe Text)
+tvgCreationTimestamp
+  = lens _tvgCreationTimestamp
+      (\ s a -> s{_tvgCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+tvgId :: Lens' TargetVPNGateway (Maybe Word64)
+tvgId
+  = lens _tvgId (\ s a -> s{_tvgId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] URL of the region where the target VPN gateway resides.
+tvgRegion :: Lens' TargetVPNGateway (Maybe Text)
+tvgRegion
+  = lens _tvgRegion (\ s a -> s{_tvgRegion = a})
+
+-- | [Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are
+-- created using compute.vpntunnels.insert and associated to a VPN gateway.
+tvgTunnels :: Lens' TargetVPNGateway [Text]
+tvgTunnels
+  = lens _tvgTunnels (\ s a -> s{_tvgTunnels = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+tvgDescription :: Lens' TargetVPNGateway (Maybe Text)
+tvgDescription
+  = lens _tvgDescription
+      (\ s a -> s{_tvgDescription = a})
+
+-- | [Output Only] A list of URLs to the ForwardingRule resources.
+-- ForwardingRules are created using compute.forwardingRules.insert and
+-- associated to a VPN gateway.
+tvgForwardingRules :: Lens' TargetVPNGateway [Text]
+tvgForwardingRules
+  = lens _tvgForwardingRules
+      (\ s a -> s{_tvgForwardingRules = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetVPNGateway where
+        parseJSON
+          = withObject "TargetVPNGateway"
+              (\ o ->
+                 TargetVPNGateway <$>
+                   (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#targetVpnGateway")
+                     <*> (o .:? "network")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "region")
+                     <*> (o .:? "tunnels" .!= mempty)
+                     <*> (o .:? "description")
+                     <*> (o .:? "forwardingRules" .!= mempty))
+
+instance ToJSON TargetVPNGateway where
+        toJSON TargetVPNGateway{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _tvgStatus,
+                  Just ("kind" .= _tvgKind),
+                  ("network" .=) <$> _tvgNetwork,
+                  ("selfLink" .=) <$> _tvgSelfLink,
+                  ("name" .=) <$> _tvgName,
+                  ("creationTimestamp" .=) <$> _tvgCreationTimestamp,
+                  ("id" .=) <$> _tvgId, ("region" .=) <$> _tvgRegion,
+                  ("tunnels" .=) <$> _tvgTunnels,
+                  ("description" .=) <$> _tvgDescription,
+                  ("forwardingRules" .=) <$> _tvgForwardingRules])
+
+--
+-- /See:/ 'urlMapsValidateResponse' smart constructor.
+newtype URLMapsValidateResponse = URLMapsValidateResponse
+    { _umvrResult :: Maybe URLMapValidationResult
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsValidateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvrResult'
+urlMapsValidateResponse
+    :: URLMapsValidateResponse
+urlMapsValidateResponse =
+    URLMapsValidateResponse
+    { _umvrResult = Nothing
+    }
+
+umvrResult :: Lens' URLMapsValidateResponse (Maybe URLMapValidationResult)
+umvrResult
+  = lens _umvrResult (\ s a -> s{_umvrResult = a})
+
+instance FromJSON URLMapsValidateResponse where
+        parseJSON
+          = withObject "URLMapsValidateResponse"
+              (\ o -> URLMapsValidateResponse <$> (o .:? "result"))
+
+instance ToJSON URLMapsValidateResponse where
+        toJSON URLMapsValidateResponse{..}
+          = object (catMaybes [("result" .=) <$> _umvrResult])
+
+-- | An SslCertificate resource. This resource provides a mechanism to upload
+-- an SSL key and certificate to global HTTPS loadbalancer to serve secure
+-- connections.
+--
+-- /See:/ 'sslCertificate' smart constructor.
+data SSLCertificate = SSLCertificate
+    { _scPrivateKey        :: !(Maybe Text)
+    , _scKind              :: !Text
+    , _scSelfLink          :: !(Maybe Text)
+    , _scName              :: !(Maybe Text)
+    , _scCreationTimestamp :: !(Maybe Text)
+    , _scId                :: !(Maybe (Textual Word64))
+    , _scCertificate       :: !(Maybe Text)
+    , _scDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scPrivateKey'
+--
+-- * 'scKind'
+--
+-- * 'scSelfLink'
+--
+-- * 'scName'
+--
+-- * 'scCreationTimestamp'
+--
+-- * 'scId'
+--
+-- * 'scCertificate'
+--
+-- * 'scDescription'
+sslCertificate
+    :: SSLCertificate
+sslCertificate =
+    SSLCertificate
+    { _scPrivateKey = Nothing
+    , _scKind = "compute#sslCertificate"
+    , _scSelfLink = Nothing
+    , _scName = Nothing
+    , _scCreationTimestamp = Nothing
+    , _scId = Nothing
+    , _scCertificate = Nothing
+    , _scDescription = Nothing
+    }
+
+-- | A write-only private key in PEM format. Only insert RPCs will include
+-- this field.
+scPrivateKey :: Lens' SSLCertificate (Maybe Text)
+scPrivateKey
+  = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a})
+
+-- | [Output Only] Type of the resource. Always compute#sslCertificate for
+-- SSL certificates.
+scKind :: Lens' SSLCertificate Text
+scKind = lens _scKind (\ s a -> s{_scKind = a})
+
+-- | [Output only] Server-defined URL for the resource.
+scSelfLink :: Lens' SSLCertificate (Maybe Text)
+scSelfLink
+  = lens _scSelfLink (\ s a -> s{_scSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+scName :: Lens' SSLCertificate (Maybe Text)
+scName = lens _scName (\ s a -> s{_scName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+scCreationTimestamp :: Lens' SSLCertificate (Maybe Text)
+scCreationTimestamp
+  = lens _scCreationTimestamp
+      (\ s a -> s{_scCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+scId :: Lens' SSLCertificate (Maybe Word64)
+scId
+  = lens _scId (\ s a -> s{_scId = a}) .
+      mapping _Coerce
+
+-- | A local certificate file. The certificate must be in PEM format. The
+-- certificate chain must be no greater than 5 certs long. The chain must
+-- include at least one intermediate cert.
+scCertificate :: Lens' SSLCertificate (Maybe Text)
+scCertificate
+  = lens _scCertificate
+      (\ s a -> s{_scCertificate = a})
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+scDescription :: Lens' SSLCertificate (Maybe Text)
+scDescription
+  = lens _scDescription
+      (\ s a -> s{_scDescription = a})
+
+instance FromJSON SSLCertificate where
+        parseJSON
+          = withObject "SSLCertificate"
+              (\ o ->
+                 SSLCertificate <$>
+                   (o .:? "privateKey") <*>
+                     (o .:? "kind" .!= "compute#sslCertificate")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "certificate")
+                     <*> (o .:? "description"))
+
+instance ToJSON SSLCertificate where
+        toJSON SSLCertificate{..}
+          = object
+              (catMaybes
+                 [("privateKey" .=) <$> _scPrivateKey,
+                  Just ("kind" .= _scKind),
+                  ("selfLink" .=) <$> _scSelfLink,
+                  ("name" .=) <$> _scName,
+                  ("creationTimestamp" .=) <$> _scCreationTimestamp,
+                  ("id" .=) <$> _scId,
+                  ("certificate" .=) <$> _scCertificate,
+                  ("description" .=) <$> _scDescription])
+
+--
+-- /See:/ 'urlMapReference' smart constructor.
+newtype URLMapReference = URLMapReference
+    { _umrURLMap :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umrURLMap'
+urlMapReference
+    :: URLMapReference
+urlMapReference =
+    URLMapReference
+    { _umrURLMap = Nothing
+    }
+
+umrURLMap :: Lens' URLMapReference (Maybe Text)
+umrURLMap
+  = lens _umrURLMap (\ s a -> s{_umrURLMap = a})
+
+instance FromJSON URLMapReference where
+        parseJSON
+          = withObject "URLMapReference"
+              (\ o -> URLMapReference <$> (o .:? "urlMap"))
+
+instance ToJSON URLMapReference where
+        toJSON URLMapReference{..}
+          = object (catMaybes [("urlMap" .=) <$> _umrURLMap])
+
+--
+-- /See:/ 'targetPoolsAddHealthCheckRequest' smart constructor.
+newtype TargetPoolsAddHealthCheckRequest = TargetPoolsAddHealthCheckRequest
+    { _tpahcrHealthChecks :: Maybe [HealthCheckReference]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAddHealthCheckRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpahcrHealthChecks'
+targetPoolsAddHealthCheckRequest
+    :: TargetPoolsAddHealthCheckRequest
+targetPoolsAddHealthCheckRequest =
+    TargetPoolsAddHealthCheckRequest
+    { _tpahcrHealthChecks = Nothing
+    }
+
+-- | Health check URLs to be added to targetPool.
+tpahcrHealthChecks :: Lens' TargetPoolsAddHealthCheckRequest [HealthCheckReference]
+tpahcrHealthChecks
+  = lens _tpahcrHealthChecks
+      (\ s a -> s{_tpahcrHealthChecks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetPoolsAddHealthCheckRequest
+         where
+        parseJSON
+          = withObject "TargetPoolsAddHealthCheckRequest"
+              (\ o ->
+                 TargetPoolsAddHealthCheckRequest <$>
+                   (o .:? "healthChecks" .!= mempty))
+
+instance ToJSON TargetPoolsAddHealthCheckRequest
+         where
+        toJSON TargetPoolsAddHealthCheckRequest{..}
+          = object
+              (catMaybes
+                 [("healthChecks" .=) <$> _tpahcrHealthChecks])
+
+-- | [Output Only] A map of scoped disk lists.
+--
+-- /See:/ 'diskAggregatedListItems' smart constructor.
+newtype DiskAggregatedListItems = DiskAggregatedListItems
+    { _daliAddtional :: HashMap Text DisksScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daliAddtional'
+diskAggregatedListItems
+    :: HashMap Text DisksScopedList -- ^ 'daliAddtional'
+    -> DiskAggregatedListItems
+diskAggregatedListItems pDaliAddtional_ =
+    DiskAggregatedListItems
+    { _daliAddtional = _Coerce # pDaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of disks.
+daliAddtional :: Lens' DiskAggregatedListItems (HashMap Text DisksScopedList)
+daliAddtional
+  = lens _daliAddtional
+      (\ s a -> s{_daliAddtional = a})
+      . _Coerce
+
+instance FromJSON DiskAggregatedListItems where
+        parseJSON
+          = withObject "DiskAggregatedListItems"
+              (\ o ->
+                 DiskAggregatedListItems <$> (parseJSONObject o))
+
+instance ToJSON DiskAggregatedListItems where
+        toJSON = toJSON . _daliAddtional
+
+-- | The location in Cloud Storage and naming method of the daily usage
+-- report. Contains bucket_name and report_name prefix.
+--
+-- /See:/ 'usageExportLocation' smart constructor.
+data UsageExportLocation = UsageExportLocation
+    { _uelReportNamePrefix :: !(Maybe Text)
+    , _uelBucketName       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UsageExportLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uelReportNamePrefix'
+--
+-- * 'uelBucketName'
+usageExportLocation
+    :: UsageExportLocation
+usageExportLocation =
+    UsageExportLocation
+    { _uelReportNamePrefix = Nothing
+    , _uelBucketName = Nothing
+    }
+
+-- | An optional prefix for the name of the usage report object stored in
+-- bucketName. If not supplied, defaults to usage. The report is stored as
+-- a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is
+-- the day of the usage according to Pacific Time. If you supply a prefix,
+-- it should conform to Cloud Storage object naming conventions.
+uelReportNamePrefix :: Lens' UsageExportLocation (Maybe Text)
+uelReportNamePrefix
+  = lens _uelReportNamePrefix
+      (\ s a -> s{_uelReportNamePrefix = a})
+
+-- | The name of an existing bucket in Cloud Storage where the usage report
+-- object is stored. The Google Service Account is granted write access to
+-- this bucket. This is just the bucket name, with no gs:\/\/ or
+-- https:\/\/storage.googleapis.com\/ in front of it.
+uelBucketName :: Lens' UsageExportLocation (Maybe Text)
+uelBucketName
+  = lens _uelBucketName
+      (\ s a -> s{_uelBucketName = a})
+
+instance FromJSON UsageExportLocation where
+        parseJSON
+          = withObject "UsageExportLocation"
+              (\ o ->
+                 UsageExportLocation <$>
+                   (o .:? "reportNamePrefix") <*> (o .:? "bucketName"))
+
+instance ToJSON UsageExportLocation where
+        toJSON UsageExportLocation{..}
+          = object
+              (catMaybes
+                 [("reportNamePrefix" .=) <$> _uelReportNamePrefix,
+                  ("bucketName" .=) <$> _uelBucketName])
+
+-- | Contains a list of zone resources.
+--
+-- /See:/ 'zoneList' smart constructor.
+data ZoneList = ZoneList
+    { _zlNextPageToken :: !(Maybe Text)
+    , _zlKind          :: !Text
+    , _zlItems         :: !(Maybe [Zone])
+    , _zlSelfLink      :: !(Maybe Text)
+    , _zlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zlNextPageToken'
+--
+-- * 'zlKind'
+--
+-- * 'zlItems'
+--
+-- * 'zlSelfLink'
+--
+-- * 'zlId'
+zoneList
+    :: ZoneList
+zoneList =
+    ZoneList
+    { _zlNextPageToken = Nothing
+    , _zlKind = "compute#zoneList"
+    , _zlItems = Nothing
+    , _zlSelfLink = Nothing
+    , _zlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+zlNextPageToken :: Lens' ZoneList (Maybe Text)
+zlNextPageToken
+  = lens _zlNextPageToken
+      (\ s a -> s{_zlNextPageToken = a})
+
+-- | Type of resource.
+zlKind :: Lens' ZoneList Text
+zlKind = lens _zlKind (\ s a -> s{_zlKind = a})
+
+-- | [Output Only] A list of Zone resources.
+zlItems :: Lens' ZoneList [Zone]
+zlItems
+  = lens _zlItems (\ s a -> s{_zlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+zlSelfLink :: Lens' ZoneList (Maybe Text)
+zlSelfLink
+  = lens _zlSelfLink (\ s a -> s{_zlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+zlId :: Lens' ZoneList (Maybe Text)
+zlId = lens _zlId (\ s a -> s{_zlId = a})
+
+instance FromJSON ZoneList where
+        parseJSON
+          = withObject "ZoneList"
+              (\ o ->
+                 ZoneList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#zoneList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON ZoneList where
+        toJSON ZoneList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _zlNextPageToken,
+                  Just ("kind" .= _zlKind), ("items" .=) <$> _zlItems,
+                  ("selfLink" .=) <$> _zlSelfLink,
+                  ("id" .=) <$> _zlId])
+
+--
+-- /See:/ 'managedInstance' smart constructor.
+data ManagedInstance = ManagedInstance
+    { _miLastAttempt    :: !(Maybe ManagedInstanceLastAttempt)
+    , _miCurrentAction  :: !(Maybe ManagedInstanceCurrentAction)
+    , _miId             :: !(Maybe (Textual Word64))
+    , _miInstanceStatus :: !(Maybe ManagedInstanceInstanceStatus)
+    , _miInstance       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'miLastAttempt'
+--
+-- * 'miCurrentAction'
+--
+-- * 'miId'
+--
+-- * 'miInstanceStatus'
+--
+-- * 'miInstance'
+managedInstance
+    :: ManagedInstance
+managedInstance =
+    ManagedInstance
+    { _miLastAttempt = Nothing
+    , _miCurrentAction = Nothing
+    , _miId = Nothing
+    , _miInstanceStatus = Nothing
+    , _miInstance = Nothing
+    }
+
+-- | [Output Only] Information about the last attempt to create or delete the
+-- instance.
+miLastAttempt :: Lens' ManagedInstance (Maybe ManagedInstanceLastAttempt)
+miLastAttempt
+  = lens _miLastAttempt
+      (\ s a -> s{_miLastAttempt = a})
+
+-- | [Output Only] The current action that the managed instance group has
+-- scheduled for the instance. Possible values: - NONE The instance is
+-- running, and the managed instance group does not have any scheduled
+-- actions for this instance. - CREATING The managed instance group is
+-- creating this instance. - RECREATING The managed instance group is
+-- recreating this instance. - DELETING The managed instance group is
+-- permanently deleting this instance. - ABANDONING The managed instance
+-- group is abandoning this instance. The instance will be removed from the
+-- instance group and from any target pools that are associated with this
+-- group. - RESTARTING The managed instance group is restarting the
+-- instance. - REFRESHING The managed instance group is applying
+-- configuration changes to the instance without stopping it. For example,
+-- the group can update the target pool list for an instance without
+-- stopping that instance.
+miCurrentAction :: Lens' ManagedInstance (Maybe ManagedInstanceCurrentAction)
+miCurrentAction
+  = lens _miCurrentAction
+      (\ s a -> s{_miCurrentAction = a})
+
+-- | [Output only] The unique identifier for this resource. This field is
+-- empty when instance does not exist.
+miId :: Lens' ManagedInstance (Maybe Word64)
+miId
+  = lens _miId (\ s a -> s{_miId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The status of the instance. This field is empty when the
+-- instance does not exist.
+miInstanceStatus :: Lens' ManagedInstance (Maybe ManagedInstanceInstanceStatus)
+miInstanceStatus
+  = lens _miInstanceStatus
+      (\ s a -> s{_miInstanceStatus = a})
+
+-- | [Output Only] The URL of the instance. The URL can exist even if the
+-- instance has not yet been created.
+miInstance :: Lens' ManagedInstance (Maybe Text)
+miInstance
+  = lens _miInstance (\ s a -> s{_miInstance = a})
+
+instance FromJSON ManagedInstance where
+        parseJSON
+          = withObject "ManagedInstance"
+              (\ o ->
+                 ManagedInstance <$>
+                   (o .:? "lastAttempt") <*> (o .:? "currentAction") <*>
+                     (o .:? "id")
+                     <*> (o .:? "instanceStatus")
+                     <*> (o .:? "instance"))
+
+instance ToJSON ManagedInstance where
+        toJSON ManagedInstance{..}
+          = object
+              (catMaybes
+                 [("lastAttempt" .=) <$> _miLastAttempt,
+                  ("currentAction" .=) <$> _miCurrentAction,
+                  ("id" .=) <$> _miId,
+                  ("instanceStatus" .=) <$> _miInstanceStatus,
+                  ("instance" .=) <$> _miInstance])
+
+-- | [Output Only] A map of filtered managed instance group lists.
+--
+-- /See:/ 'instanceGroupManagerAggregatedListItems' smart constructor.
+newtype InstanceGroupManagerAggregatedListItems = InstanceGroupManagerAggregatedListItems
+    { _igmaliAddtional :: HashMap Text InstanceGroupManagersScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmaliAddtional'
+instanceGroupManagerAggregatedListItems
+    :: HashMap Text InstanceGroupManagersScopedList -- ^ 'igmaliAddtional'
+    -> InstanceGroupManagerAggregatedListItems
+instanceGroupManagerAggregatedListItems pIgmaliAddtional_ =
+    InstanceGroupManagerAggregatedListItems
+    { _igmaliAddtional = _Coerce # pIgmaliAddtional_
+    }
+
+-- | [Output Only] The name of the scope that contains this set of managed
+-- instance groups.
+igmaliAddtional :: Lens' InstanceGroupManagerAggregatedListItems (HashMap Text InstanceGroupManagersScopedList)
+igmaliAddtional
+  = lens _igmaliAddtional
+      (\ s a -> s{_igmaliAddtional = a})
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagerAggregatedListItems where
+        parseJSON
+          = withObject
+              "InstanceGroupManagerAggregatedListItems"
+              (\ o ->
+                 InstanceGroupManagerAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON
+         InstanceGroupManagerAggregatedListItems where
+        toJSON = toJSON . _igmaliAddtional
+
+--
+-- /See:/ 'instanceGroupManagersDeleteInstancesRequest' smart constructor.
+newtype InstanceGroupManagersDeleteInstancesRequest = InstanceGroupManagersDeleteInstancesRequest
+    { _igmdirInstances :: Maybe [Text]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersDeleteInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmdirInstances'
+instanceGroupManagersDeleteInstancesRequest
+    :: InstanceGroupManagersDeleteInstancesRequest
+instanceGroupManagersDeleteInstancesRequest =
+    InstanceGroupManagersDeleteInstancesRequest
+    { _igmdirInstances = Nothing
+    }
+
+-- | The list of instances to delete from this managed instance group.
+-- Specify one or more instance URLs.
+igmdirInstances :: Lens' InstanceGroupManagersDeleteInstancesRequest [Text]
+igmdirInstances
+  = lens _igmdirInstances
+      (\ s a -> s{_igmdirInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersDeleteInstancesRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersDeleteInstancesRequest"
+              (\ o ->
+                 InstanceGroupManagersDeleteInstancesRequest <$>
+                   (o .:? "instances" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersDeleteInstancesRequest where
+        toJSON
+          InstanceGroupManagersDeleteInstancesRequest{..}
+          = object
+              (catMaybes [("instances" .=) <$> _igmdirInstances])
+
+-- | Message containing information of one individual backend.
+--
+-- /See:/ 'backend' smart constructor.
+data Backend = Backend
+    { _bGroup              :: !(Maybe Text)
+    , _bBalancingMode      :: !(Maybe BackendBalancingMode)
+    , _bMaxUtilization     :: !(Maybe (Textual Double))
+    , _bMaxRate            :: !(Maybe (Textual Int32))
+    , _bMaxRatePerInstance :: !(Maybe (Textual Double))
+    , _bDescription        :: !(Maybe Text)
+    , _bCapacityScaler     :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Backend' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bGroup'
+--
+-- * 'bBalancingMode'
+--
+-- * 'bMaxUtilization'
+--
+-- * 'bMaxRate'
+--
+-- * 'bMaxRatePerInstance'
+--
+-- * 'bDescription'
+--
+-- * 'bCapacityScaler'
+backend
+    :: Backend
+backend =
+    Backend
+    { _bGroup = Nothing
+    , _bBalancingMode = Nothing
+    , _bMaxUtilization = Nothing
+    , _bMaxRate = Nothing
+    , _bMaxRatePerInstance = Nothing
+    , _bDescription = Nothing
+    , _bCapacityScaler = Nothing
+    }
+
+-- | The fully-qualified URL of a zonal Instance Group resource. This
+-- instance group defines the list of instances that serve traffic. Member
+-- virtual machine instances from each instance group must live in the same
+-- zone as the instance group itself. No two backends in a backend service
+-- are allowed to use same Instance Group resource. Note that you must
+-- specify an Instance Group resource using the fully-qualified URL, rather
+-- than a partial URL.
+bGroup :: Lens' Backend (Maybe Text)
+bGroup = lens _bGroup (\ s a -> s{_bGroup = a})
+
+-- | Specifies the balancing mode for this backend. The default is
+-- UTILIZATION but available values are UTILIZATION and RATE.
+bBalancingMode :: Lens' Backend (Maybe BackendBalancingMode)
+bBalancingMode
+  = lens _bBalancingMode
+      (\ s a -> s{_bBalancingMode = a})
+
+-- | Used when balancingMode is UTILIZATION. This ratio defines the CPU
+-- utilization target for the group. The default is 0.8. Valid range is
+-- [0.0, 1.0].
+bMaxUtilization :: Lens' Backend (Maybe Double)
+bMaxUtilization
+  = lens _bMaxUtilization
+      (\ s a -> s{_bMaxUtilization = a})
+      . mapping _Coerce
+
+-- | The max RPS of the group. Can be used with either balancing mode, but
+-- required if RATE mode. For RATE mode, either maxRate or
+-- maxRatePerInstance must be set.
+bMaxRate :: Lens' Backend (Maybe Int32)
+bMaxRate
+  = lens _bMaxRate (\ s a -> s{_bMaxRate = a}) .
+      mapping _Coerce
+
+-- | The max RPS that a single backed instance can handle. This is used to
+-- calculate the capacity of the group. Can be used in either balancing
+-- mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+bMaxRatePerInstance :: Lens' Backend (Maybe Double)
+bMaxRatePerInstance
+  = lens _bMaxRatePerInstance
+      (\ s a -> s{_bMaxRatePerInstance = a})
+      . mapping _Coerce
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+bDescription :: Lens' Backend (Maybe Text)
+bDescription
+  = lens _bDescription (\ s a -> s{_bDescription = a})
+
+-- | A multiplier applied to the group\'s maximum servicing capacity (either
+-- UTILIZATION or RATE). Default value is 1, which means the group will
+-- serve up to 100% of its configured CPU or RPS (depending on
+-- balancingMode). A setting of 0 means the group is completely drained,
+-- offering 0% of its available CPU or RPS. Valid range is [0.0,1.0].
+bCapacityScaler :: Lens' Backend (Maybe Double)
+bCapacityScaler
+  = lens _bCapacityScaler
+      (\ s a -> s{_bCapacityScaler = a})
+      . mapping _Coerce
+
+instance FromJSON Backend where
+        parseJSON
+          = withObject "Backend"
+              (\ o ->
+                 Backend <$>
+                   (o .:? "group") <*> (o .:? "balancingMode") <*>
+                     (o .:? "maxUtilization")
+                     <*> (o .:? "maxRate")
+                     <*> (o .:? "maxRatePerInstance")
+                     <*> (o .:? "description")
+                     <*> (o .:? "capacityScaler"))
+
+instance ToJSON Backend where
+        toJSON Backend{..}
+          = object
+              (catMaybes
+                 [("group" .=) <$> _bGroup,
+                  ("balancingMode" .=) <$> _bBalancingMode,
+                  ("maxUtilization" .=) <$> _bMaxUtilization,
+                  ("maxRate" .=) <$> _bMaxRate,
+                  ("maxRatePerInstance" .=) <$> _bMaxRatePerInstance,
+                  ("description" .=) <$> _bDescription,
+                  ("capacityScaler" .=) <$> _bCapacityScaler])
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+--
+-- /See:/ 'targetVPNGatewaysScopedListWarning' smart constructor.
+data TargetVPNGatewaysScopedListWarning = TargetVPNGatewaysScopedListWarning
+    { _tvgslwData    :: !(Maybe [TargetVPNGatewaysScopedListWarningDataItem])
+    , _tvgslwCode    :: !(Maybe TargetVPNGatewaysScopedListWarningCode)
+    , _tvgslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgslwData'
+--
+-- * 'tvgslwCode'
+--
+-- * 'tvgslwMessage'
+targetVPNGatewaysScopedListWarning
+    :: TargetVPNGatewaysScopedListWarning
+targetVPNGatewaysScopedListWarning =
+    TargetVPNGatewaysScopedListWarning
+    { _tvgslwData = Nothing
+    , _tvgslwCode = Nothing
+    , _tvgslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+tvgslwData :: Lens' TargetVPNGatewaysScopedListWarning [TargetVPNGatewaysScopedListWarningDataItem]
+tvgslwData
+  = lens _tvgslwData (\ s a -> s{_tvgslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+tvgslwCode :: Lens' TargetVPNGatewaysScopedListWarning (Maybe TargetVPNGatewaysScopedListWarningCode)
+tvgslwCode
+  = lens _tvgslwCode (\ s a -> s{_tvgslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+tvgslwMessage :: Lens' TargetVPNGatewaysScopedListWarning (Maybe Text)
+tvgslwMessage
+  = lens _tvgslwMessage
+      (\ s a -> s{_tvgslwMessage = a})
+
+instance FromJSON TargetVPNGatewaysScopedListWarning
+         where
+        parseJSON
+          = withObject "TargetVPNGatewaysScopedListWarning"
+              (\ o ->
+                 TargetVPNGatewaysScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetVPNGatewaysScopedListWarning
+         where
+        toJSON TargetVPNGatewaysScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tvgslwData,
+                  ("code" .=) <$> _tvgslwCode,
+                  ("message" .=) <$> _tvgslwMessage])
+
+-- | Contains a list of address resources.
+--
+-- /See:/ 'addressList' smart constructor.
+data AddressList = AddressList
+    { _alNextPageToken :: !(Maybe Text)
+    , _alKind          :: !Text
+    , _alItems         :: !(Maybe [Address])
+    , _alSelfLink      :: !(Maybe Text)
+    , _alId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alNextPageToken'
+--
+-- * 'alKind'
+--
+-- * 'alItems'
+--
+-- * 'alSelfLink'
+--
+-- * 'alId'
+addressList
+    :: AddressList
+addressList =
+    AddressList
+    { _alNextPageToken = Nothing
+    , _alKind = "compute#addressList"
+    , _alItems = Nothing
+    , _alSelfLink = Nothing
+    , _alId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+alNextPageToken :: Lens' AddressList (Maybe Text)
+alNextPageToken
+  = lens _alNextPageToken
+      (\ s a -> s{_alNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#addressList for lists of
+-- addresses.
+alKind :: Lens' AddressList Text
+alKind = lens _alKind (\ s a -> s{_alKind = a})
+
+-- | [Output Only] A list of Address resources.
+alItems :: Lens' AddressList [Address]
+alItems
+  = lens _alItems (\ s a -> s{_alItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+alSelfLink :: Lens' AddressList (Maybe Text)
+alSelfLink
+  = lens _alSelfLink (\ s a -> s{_alSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+alId :: Lens' AddressList (Maybe Text)
+alId = lens _alId (\ s a -> s{_alId = a})
+
+instance FromJSON AddressList where
+        parseJSON
+          = withObject "AddressList"
+              (\ o ->
+                 AddressList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#addressList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON AddressList where
+        toJSON AddressList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _alNextPageToken,
+                  Just ("kind" .= _alKind), ("items" .=) <$> _alItems,
+                  ("selfLink" .=) <$> _alSelfLink,
+                  ("id" .=) <$> _alId])
+
+-- | A map of scoped forwarding rule lists.
+--
+-- /See:/ 'forwardingRuleAggregatedListItems' smart constructor.
+newtype ForwardingRuleAggregatedListItems = ForwardingRuleAggregatedListItems
+    { _fraliAddtional :: HashMap Text ForwardingRulesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRuleAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fraliAddtional'
+forwardingRuleAggregatedListItems
+    :: HashMap Text ForwardingRulesScopedList -- ^ 'fraliAddtional'
+    -> ForwardingRuleAggregatedListItems
+forwardingRuleAggregatedListItems pFraliAddtional_ =
+    ForwardingRuleAggregatedListItems
+    { _fraliAddtional = _Coerce # pFraliAddtional_
+    }
+
+-- | Name of the scope containing this set of addresses.
+fraliAddtional :: Lens' ForwardingRuleAggregatedListItems (HashMap Text ForwardingRulesScopedList)
+fraliAddtional
+  = lens _fraliAddtional
+      (\ s a -> s{_fraliAddtional = a})
+      . _Coerce
+
+instance FromJSON ForwardingRuleAggregatedListItems
+         where
+        parseJSON
+          = withObject "ForwardingRuleAggregatedListItems"
+              (\ o ->
+                 ForwardingRuleAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON ForwardingRuleAggregatedListItems
+         where
+        toJSON = toJSON . _fraliAddtional
+
+-- | [Output Only] A map of scoped operation lists.
+--
+-- /See:/ 'operationAggregatedListItems' smart constructor.
+newtype OperationAggregatedListItems = OperationAggregatedListItems
+    { _oaliAddtional :: HashMap Text OperationsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oaliAddtional'
+operationAggregatedListItems
+    :: HashMap Text OperationsScopedList -- ^ 'oaliAddtional'
+    -> OperationAggregatedListItems
+operationAggregatedListItems pOaliAddtional_ =
+    OperationAggregatedListItems
+    { _oaliAddtional = _Coerce # pOaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of operations.
+oaliAddtional :: Lens' OperationAggregatedListItems (HashMap Text OperationsScopedList)
+oaliAddtional
+  = lens _oaliAddtional
+      (\ s a -> s{_oaliAddtional = a})
+      . _Coerce
+
+instance FromJSON OperationAggregatedListItems where
+        parseJSON
+          = withObject "OperationAggregatedListItems"
+              (\ o ->
+                 OperationAggregatedListItems <$> (parseJSONObject o))
+
+instance ToJSON OperationAggregatedListItems where
+        toJSON = toJSON . _oaliAddtional
+
+--
+-- /See:/ 'instanceGroupManagerActionsSummary' smart constructor.
+data InstanceGroupManagerActionsSummary = InstanceGroupManagerActionsSummary
+    { _igmasDeleting   :: !(Maybe (Textual Int32))
+    , _igmasRestarting :: !(Maybe (Textual Int32))
+    , _igmasNone       :: !(Maybe (Textual Int32))
+    , _igmasCreating   :: !(Maybe (Textual Int32))
+    , _igmasRefreshing :: !(Maybe (Textual Int32))
+    , _igmasRecreating :: !(Maybe (Textual Int32))
+    , _igmasAbandoning :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagerActionsSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmasDeleting'
+--
+-- * 'igmasRestarting'
+--
+-- * 'igmasNone'
+--
+-- * 'igmasCreating'
+--
+-- * 'igmasRefreshing'
+--
+-- * 'igmasRecreating'
+--
+-- * 'igmasAbandoning'
+instanceGroupManagerActionsSummary
+    :: InstanceGroupManagerActionsSummary
+instanceGroupManagerActionsSummary =
+    InstanceGroupManagerActionsSummary
+    { _igmasDeleting = Nothing
+    , _igmasRestarting = Nothing
+    , _igmasNone = Nothing
+    , _igmasCreating = Nothing
+    , _igmasRefreshing = Nothing
+    , _igmasRecreating = Nothing
+    , _igmasAbandoning = Nothing
+    }
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be deleted or are currently being deleted.
+igmasDeleting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasDeleting
+  = lens _igmasDeleting
+      (\ s a -> s{_igmasDeleting = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be restarted or are currently being restarted.
+igmasRestarting :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasRestarting
+  = lens _igmasRestarting
+      (\ s a -> s{_igmasRestarting = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are running and have no scheduled actions.
+igmasNone :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasNone
+  = lens _igmasNone (\ s a -> s{_igmasNone = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be created or are currently being created.
+igmasCreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasCreating
+  = lens _igmasCreating
+      (\ s a -> s{_igmasCreating = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are being reconfigured with properties that do not require a restart or
+-- a recreate action. For example, setting or removing target pools for the
+-- instance.
+igmasRefreshing :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasRefreshing
+  = lens _igmasRefreshing
+      (\ s a -> s{_igmasRefreshing = a})
+      . mapping _Coerce
+
+-- | [Output Only] The number of instances in the managed instance group that
+-- are scheduled to be recreated or are currently being being recreated.
+-- Recreating an instance deletes the existing root persistent disk and
+-- creates a new disk from the image that is defined in the instance
+-- template.
+igmasRecreating :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasRecreating
+  = lens _igmasRecreating
+      (\ s a -> s{_igmasRecreating = a})
+      . mapping _Coerce
+
+-- | [Output Only] The total number of instances in the managed instance
+-- group that are scheduled to be abandoned. Abandoning an instance removes
+-- it from the managed instance group without deleting it.
+igmasAbandoning :: Lens' InstanceGroupManagerActionsSummary (Maybe Int32)
+igmasAbandoning
+  = lens _igmasAbandoning
+      (\ s a -> s{_igmasAbandoning = a})
+      . mapping _Coerce
+
+instance FromJSON InstanceGroupManagerActionsSummary
+         where
+        parseJSON
+          = withObject "InstanceGroupManagerActionsSummary"
+              (\ o ->
+                 InstanceGroupManagerActionsSummary <$>
+                   (o .:? "deleting") <*> (o .:? "restarting") <*>
+                     (o .:? "none")
+                     <*> (o .:? "creating")
+                     <*> (o .:? "refreshing")
+                     <*> (o .:? "recreating")
+                     <*> (o .:? "abandoning"))
+
+instance ToJSON InstanceGroupManagerActionsSummary
+         where
+        toJSON InstanceGroupManagerActionsSummary{..}
+          = object
+              (catMaybes
+                 [("deleting" .=) <$> _igmasDeleting,
+                  ("restarting" .=) <$> _igmasRestarting,
+                  ("none" .=) <$> _igmasNone,
+                  ("creating" .=) <$> _igmasCreating,
+                  ("refreshing" .=) <$> _igmasRefreshing,
+                  ("recreating" .=) <$> _igmasRecreating,
+                  ("abandoning" .=) <$> _igmasAbandoning])
+
+-- | A service account.
+--
+-- /See:/ 'serviceAccount' smart constructor.
+data ServiceAccount = ServiceAccount
+    { _saEmail  :: !(Maybe Text)
+    , _saScopes :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServiceAccount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saEmail'
+--
+-- * 'saScopes'
+serviceAccount
+    :: ServiceAccount
+serviceAccount =
+    ServiceAccount
+    { _saEmail = Nothing
+    , _saScopes = Nothing
+    }
+
+-- | Email address of the service account.
+saEmail :: Lens' ServiceAccount (Maybe Text)
+saEmail = lens _saEmail (\ s a -> s{_saEmail = a})
+
+-- | The list of scopes to be made available for this service account.
+saScopes :: Lens' ServiceAccount [Text]
+saScopes
+  = lens _saScopes (\ s a -> s{_saScopes = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ServiceAccount where
+        parseJSON
+          = withObject "ServiceAccount"
+              (\ o ->
+                 ServiceAccount <$>
+                   (o .:? "email") <*> (o .:? "scopes" .!= mempty))
+
+instance ToJSON ServiceAccount where
+        toJSON ServiceAccount{..}
+          = object
+              (catMaybes
+                 [("email" .=) <$> _saEmail,
+                  ("scopes" .=) <$> _saScopes])
+
+-- | Contains a list of Network resources.
+--
+-- /See:/ 'networkList' smart constructor.
+data NetworkList = NetworkList
+    { _nlNextPageToken :: !(Maybe Text)
+    , _nlKind          :: !Text
+    , _nlItems         :: !(Maybe [Network])
+    , _nlSelfLink      :: !(Maybe Text)
+    , _nlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nlNextPageToken'
+--
+-- * 'nlKind'
+--
+-- * 'nlItems'
+--
+-- * 'nlSelfLink'
+--
+-- * 'nlId'
+networkList
+    :: NetworkList
+networkList =
+    NetworkList
+    { _nlNextPageToken = Nothing
+    , _nlKind = "compute#networkList"
+    , _nlItems = Nothing
+    , _nlSelfLink = Nothing
+    , _nlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+nlNextPageToken :: Lens' NetworkList (Maybe Text)
+nlNextPageToken
+  = lens _nlNextPageToken
+      (\ s a -> s{_nlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#networkList for lists of
+-- networks.
+nlKind :: Lens' NetworkList Text
+nlKind = lens _nlKind (\ s a -> s{_nlKind = a})
+
+-- | [Output Only] A list of Network resources.
+nlItems :: Lens' NetworkList [Network]
+nlItems
+  = lens _nlItems (\ s a -> s{_nlItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource .
+nlSelfLink :: Lens' NetworkList (Maybe Text)
+nlSelfLink
+  = lens _nlSelfLink (\ s a -> s{_nlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+nlId :: Lens' NetworkList (Maybe Text)
+nlId = lens _nlId (\ s a -> s{_nlId = a})
+
+instance FromJSON NetworkList where
+        parseJSON
+          = withObject "NetworkList"
+              (\ o ->
+                 NetworkList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#networkList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON NetworkList where
+        toJSON NetworkList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _nlNextPageToken,
+                  Just ("kind" .= _nlKind), ("items" .=) <$> _nlItems,
+                  ("selfLink" .=) <$> _nlSelfLink,
+                  ("id" .=) <$> _nlId])
+
+--
+-- /See:/ 'instanceGroupsListInstancesRequest' smart constructor.
+newtype InstanceGroupsListInstancesRequest = InstanceGroupsListInstancesRequest
+    { _iglirInstanceState :: Maybe InstanceGroupsListInstancesRequestInstanceState
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstancesRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglirInstanceState'
+instanceGroupsListInstancesRequest
+    :: InstanceGroupsListInstancesRequest
+instanceGroupsListInstancesRequest =
+    InstanceGroupsListInstancesRequest
+    { _iglirInstanceState = Nothing
+    }
+
+-- | A filter for the state of the instances in the instance group. Valid
+-- options are ALL or RUNNING. If you do not specify this parameter the
+-- list includes all instances regardless of their state.
+iglirInstanceState :: Lens' InstanceGroupsListInstancesRequest (Maybe InstanceGroupsListInstancesRequestInstanceState)
+iglirInstanceState
+  = lens _iglirInstanceState
+      (\ s a -> s{_iglirInstanceState = a})
+
+instance FromJSON InstanceGroupsListInstancesRequest
+         where
+        parseJSON
+          = withObject "InstanceGroupsListInstancesRequest"
+              (\ o ->
+                 InstanceGroupsListInstancesRequest <$>
+                   (o .:? "instanceState"))
+
+instance ToJSON InstanceGroupsListInstancesRequest
+         where
+        toJSON InstanceGroupsListInstancesRequest{..}
+          = object
+              (catMaybes
+                 [("instanceState" .=) <$> _iglirInstanceState])
+
+-- | A map of scoped target pool lists.
+--
+-- /See:/ 'targetPoolAggregatedListItems' smart constructor.
+newtype TargetPoolAggregatedListItems = TargetPoolAggregatedListItems
+    { _tpaliAddtional :: HashMap Text TargetPoolsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpaliAddtional'
+targetPoolAggregatedListItems
+    :: HashMap Text TargetPoolsScopedList -- ^ 'tpaliAddtional'
+    -> TargetPoolAggregatedListItems
+targetPoolAggregatedListItems pTpaliAddtional_ =
+    TargetPoolAggregatedListItems
+    { _tpaliAddtional = _Coerce # pTpaliAddtional_
+    }
+
+-- | Name of the scope containing this set of target pools.
+tpaliAddtional :: Lens' TargetPoolAggregatedListItems (HashMap Text TargetPoolsScopedList)
+tpaliAddtional
+  = lens _tpaliAddtional
+      (\ s a -> s{_tpaliAddtional = a})
+      . _Coerce
+
+instance FromJSON TargetPoolAggregatedListItems where
+        parseJSON
+          = withObject "TargetPoolAggregatedListItems"
+              (\ o ->
+                 TargetPoolAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON TargetPoolAggregatedListItems where
+        toJSON = toJSON . _tpaliAddtional
+
+--
+-- /See:/ 'targetInstancesScopedList' smart constructor.
+data TargetInstancesScopedList = TargetInstancesScopedList
+    { _tislWarning         :: !(Maybe TargetInstancesScopedListWarning)
+    , _tislTargetInstances :: !(Maybe [TargetInstance])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tislWarning'
+--
+-- * 'tislTargetInstances'
+targetInstancesScopedList
+    :: TargetInstancesScopedList
+targetInstancesScopedList =
+    TargetInstancesScopedList
+    { _tislWarning = Nothing
+    , _tislTargetInstances = Nothing
+    }
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+tislWarning :: Lens' TargetInstancesScopedList (Maybe TargetInstancesScopedListWarning)
+tislWarning
+  = lens _tislWarning (\ s a -> s{_tislWarning = a})
+
+-- | List of target instances contained in this scope.
+tislTargetInstances :: Lens' TargetInstancesScopedList [TargetInstance]
+tislTargetInstances
+  = lens _tislTargetInstances
+      (\ s a -> s{_tislTargetInstances = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON TargetInstancesScopedList where
+        parseJSON
+          = withObject "TargetInstancesScopedList"
+              (\ o ->
+                 TargetInstancesScopedList <$>
+                   (o .:? "warning") <*>
+                     (o .:? "targetInstances" .!= mempty))
+
+instance ToJSON TargetInstancesScopedList where
+        toJSON TargetInstancesScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _tislWarning,
+                  ("targetInstances" .=) <$> _tislTargetInstances])
+
+-- | [Output Only] A map of scoped address lists.
+--
+-- /See:/ 'addressAggregatedListItems' smart constructor.
+newtype AddressAggregatedListItems = AddressAggregatedListItems
+    { _aAddtional :: HashMap Text AddressesScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAddtional'
+addressAggregatedListItems
+    :: HashMap Text AddressesScopedList -- ^ 'aAddtional'
+    -> AddressAggregatedListItems
+addressAggregatedListItems pAAddtional_ =
+    AddressAggregatedListItems
+    { _aAddtional = _Coerce # pAAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of addresses.
+aAddtional :: Lens' AddressAggregatedListItems (HashMap Text AddressesScopedList)
+aAddtional
+  = lens _aAddtional (\ s a -> s{_aAddtional = a}) .
+      _Coerce
+
+instance FromJSON AddressAggregatedListItems where
+        parseJSON
+          = withObject "AddressAggregatedListItems"
+              (\ o ->
+                 AddressAggregatedListItems <$> (parseJSONObject o))
+
+instance ToJSON AddressAggregatedListItems where
+        toJSON = toJSON . _aAddtional
+
+-- | Contains a list of persistent autoscaler resources.
+--
+-- /See:/ 'autoscalerList' smart constructor.
+data AutoscalerList = AutoscalerList
+    { _autNextPageToken :: !(Maybe Text)
+    , _autKind          :: !Text
+    , _autItems         :: !(Maybe [Autoscaler])
+    , _autSelfLink      :: !(Maybe Text)
+    , _autId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'autNextPageToken'
+--
+-- * 'autKind'
+--
+-- * 'autItems'
+--
+-- * 'autSelfLink'
+--
+-- * 'autId'
+autoscalerList
+    :: AutoscalerList
+autoscalerList =
+    AutoscalerList
+    { _autNextPageToken = Nothing
+    , _autKind = "compute#autoscalerList"
+    , _autItems = Nothing
+    , _autSelfLink = Nothing
+    , _autId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+autNextPageToken :: Lens' AutoscalerList (Maybe Text)
+autNextPageToken
+  = lens _autNextPageToken
+      (\ s a -> s{_autNextPageToken = a})
+
+-- | Type of resource.
+autKind :: Lens' AutoscalerList Text
+autKind = lens _autKind (\ s a -> s{_autKind = a})
+
+-- | A list of Autoscaler resources.
+autItems :: Lens' AutoscalerList [Autoscaler]
+autItems
+  = lens _autItems (\ s a -> s{_autItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+autSelfLink :: Lens' AutoscalerList (Maybe Text)
+autSelfLink
+  = lens _autSelfLink (\ s a -> s{_autSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+autId :: Lens' AutoscalerList (Maybe Text)
+autId = lens _autId (\ s a -> s{_autId = a})
+
+instance FromJSON AutoscalerList where
+        parseJSON
+          = withObject "AutoscalerList"
+              (\ o ->
+                 AutoscalerList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#autoscalerList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON AutoscalerList where
+        toJSON AutoscalerList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _autNextPageToken,
+                  Just ("kind" .= _autKind),
+                  ("items" .=) <$> _autItems,
+                  ("selfLink" .=) <$> _autSelfLink,
+                  ("id" .=) <$> _autId])
+
+--
+-- /See:/ 'vpnTunnelAggregatedList' smart constructor.
+data VPNTunnelAggregatedList = VPNTunnelAggregatedList
+    { _vtalNextPageToken :: !(Maybe Text)
+    , _vtalKind          :: !Text
+    , _vtalItems         :: !(Maybe VPNTunnelAggregatedListItems)
+    , _vtalSelfLink      :: !(Maybe Text)
+    , _vtalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtalNextPageToken'
+--
+-- * 'vtalKind'
+--
+-- * 'vtalItems'
+--
+-- * 'vtalSelfLink'
+--
+-- * 'vtalId'
+vpnTunnelAggregatedList
+    :: VPNTunnelAggregatedList
+vpnTunnelAggregatedList =
+    VPNTunnelAggregatedList
+    { _vtalNextPageToken = Nothing
+    , _vtalKind = "compute#vpnTunnelAggregatedList"
+    , _vtalItems = Nothing
+    , _vtalSelfLink = Nothing
+    , _vtalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+vtalNextPageToken :: Lens' VPNTunnelAggregatedList (Maybe Text)
+vtalNextPageToken
+  = lens _vtalNextPageToken
+      (\ s a -> s{_vtalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
+-- tunnels.
+vtalKind :: Lens' VPNTunnelAggregatedList Text
+vtalKind = lens _vtalKind (\ s a -> s{_vtalKind = a})
+
+-- | [Output Only] A map of scoped vpn tunnel lists.
+vtalItems :: Lens' VPNTunnelAggregatedList (Maybe VPNTunnelAggregatedListItems)
+vtalItems
+  = lens _vtalItems (\ s a -> s{_vtalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+vtalSelfLink :: Lens' VPNTunnelAggregatedList (Maybe Text)
+vtalSelfLink
+  = lens _vtalSelfLink (\ s a -> s{_vtalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+vtalId :: Lens' VPNTunnelAggregatedList (Maybe Text)
+vtalId = lens _vtalId (\ s a -> s{_vtalId = a})
+
+instance FromJSON VPNTunnelAggregatedList where
+        parseJSON
+          = withObject "VPNTunnelAggregatedList"
+              (\ o ->
+                 VPNTunnelAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#vpnTunnelAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON VPNTunnelAggregatedList where
+        toJSON VPNTunnelAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _vtalNextPageToken,
+                  Just ("kind" .= _vtalKind),
+                  ("items" .=) <$> _vtalItems,
+                  ("selfLink" .=) <$> _vtalSelfLink,
+                  ("id" .=) <$> _vtalId])
+
+-- | An instance-attached disk resource.
+--
+-- /See:/ 'attachedDisk' smart constructor.
+data AttachedDisk = AttachedDisk
+    { _adKind             :: !Text
+    , _adMode             :: !(Maybe AttachedDiskMode)
+    , _adBoot             :: !(Maybe Bool)
+    , _adAutoDelete       :: !(Maybe Bool)
+    , _adInitializeParams :: !(Maybe AttachedDiskInitializeParams)
+    , _adDeviceName       :: !(Maybe Text)
+    , _adInterface        :: !(Maybe AttachedDiskInterface)
+    , _adSource           :: !(Maybe Text)
+    , _adLicenses         :: !(Maybe [Text])
+    , _adType             :: !(Maybe AttachedDiskType)
+    , _adIndex            :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachedDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adKind'
+--
+-- * 'adMode'
+--
+-- * 'adBoot'
+--
+-- * 'adAutoDelete'
+--
+-- * 'adInitializeParams'
+--
+-- * 'adDeviceName'
+--
+-- * 'adInterface'
+--
+-- * 'adSource'
+--
+-- * 'adLicenses'
+--
+-- * 'adType'
+--
+-- * 'adIndex'
+attachedDisk
+    :: AttachedDisk
+attachedDisk =
+    AttachedDisk
+    { _adKind = "compute#attachedDisk"
+    , _adMode = Nothing
+    , _adBoot = Nothing
+    , _adAutoDelete = Nothing
+    , _adInitializeParams = Nothing
+    , _adDeviceName = Nothing
+    , _adInterface = Nothing
+    , _adSource = Nothing
+    , _adLicenses = Nothing
+    , _adType = Nothing
+    , _adIndex = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#attachedDisk for
+-- attached disks.
+adKind :: Lens' AttachedDisk Text
+adKind = lens _adKind (\ s a -> s{_adKind = a})
+
+-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
+-- If not specified, the default is to attach the disk in READ_WRITE mode.
+adMode :: Lens' AttachedDisk (Maybe AttachedDiskMode)
+adMode = lens _adMode (\ s a -> s{_adMode = a})
+
+-- | Indicates that this is a boot disk. The virtual machine will use the
+-- first partition of the disk for its root filesystem.
+adBoot :: Lens' AttachedDisk (Maybe Bool)
+adBoot = lens _adBoot (\ s a -> s{_adBoot = a})
+
+-- | Specifies whether the disk will be auto-deleted when the instance is
+-- deleted (but not when the disk is detached from the instance).
+adAutoDelete :: Lens' AttachedDisk (Maybe Bool)
+adAutoDelete
+  = lens _adAutoDelete (\ s a -> s{_adAutoDelete = a})
+
+-- | [Input Only] Specifies the parameters for a new disk that will be
+-- created alongside the new instance. Use initialization parameters to
+-- create boot disks or local SSDs attached to the new instance. This
+-- property is mutually exclusive with the source property; you can only
+-- define one or the other, but not both.
+adInitializeParams :: Lens' AttachedDisk (Maybe AttachedDiskInitializeParams)
+adInitializeParams
+  = lens _adInitializeParams
+      (\ s a -> s{_adInitializeParams = a})
+
+-- | Specifies a unique device name of your choice that is reflected into the
+-- \/dev\/disk\/by-id\/google-* tree of a Linux operating system running
+-- within the instance. This name can be used to reference the device for
+-- mounting, resizing, and so on, from within the instance. If not
+-- specified, the server chooses a default device name to apply to this
+-- disk, in the form persistent-disks-x, where x is a number assigned by
+-- Google Compute Engine. This field is only applicable for persistent
+-- disks.
+adDeviceName :: Lens' AttachedDisk (Maybe Text)
+adDeviceName
+  = lens _adDeviceName (\ s a -> s{_adDeviceName = a})
+
+-- | Specifies the disk interface to use for attaching this disk, either SCSI
+-- or NVME. The default is SCSI. For performance characteristics of SCSI
+-- over NVMe, see Local SSD performance.
+adInterface :: Lens' AttachedDisk (Maybe AttachedDiskInterface)
+adInterface
+  = lens _adInterface (\ s a -> s{_adInterface = a})
+
+-- | Specifies a valid partial or full URL to an existing Persistent Disk
+-- resource. This field is only applicable for persistent disks.
+adSource :: Lens' AttachedDisk (Maybe Text)
+adSource = lens _adSource (\ s a -> s{_adSource = a})
+
+-- | [Output Only] Any valid publicly visible licenses.
+adLicenses :: Lens' AttachedDisk [Text]
+adLicenses
+  = lens _adLicenses (\ s a -> s{_adLicenses = a}) .
+      _Default
+      . _Coerce
+
+-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
+-- specified, the default is PERSISTENT.
+adType :: Lens' AttachedDisk (Maybe AttachedDiskType)
+adType = lens _adType (\ s a -> s{_adType = a})
+
+-- | Assigns a zero-based index to this disk, where 0 is reserved for the
+-- boot disk. For example, if you have many disks attached to an instance,
+-- each disk would have a unique index number. If not specified, the server
+-- will choose an appropriate value.
+adIndex :: Lens' AttachedDisk (Maybe Int32)
+adIndex
+  = lens _adIndex (\ s a -> s{_adIndex = a}) .
+      mapping _Coerce
+
+instance FromJSON AttachedDisk where
+        parseJSON
+          = withObject "AttachedDisk"
+              (\ o ->
+                 AttachedDisk <$>
+                   (o .:? "kind" .!= "compute#attachedDisk") <*>
+                     (o .:? "mode")
+                     <*> (o .:? "boot")
+                     <*> (o .:? "autoDelete")
+                     <*> (o .:? "initializeParams")
+                     <*> (o .:? "deviceName")
+                     <*> (o .:? "interface")
+                     <*> (o .:? "source")
+                     <*> (o .:? "licenses" .!= mempty)
+                     <*> (o .:? "type")
+                     <*> (o .:? "index"))
+
+instance ToJSON AttachedDisk where
+        toJSON AttachedDisk{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _adKind), ("mode" .=) <$> _adMode,
+                  ("boot" .=) <$> _adBoot,
+                  ("autoDelete" .=) <$> _adAutoDelete,
+                  ("initializeParams" .=) <$> _adInitializeParams,
+                  ("deviceName" .=) <$> _adDeviceName,
+                  ("interface" .=) <$> _adInterface,
+                  ("source" .=) <$> _adSource,
+                  ("licenses" .=) <$> _adLicenses,
+                  ("type" .=) <$> _adType, ("index" .=) <$> _adIndex])
+
+-- | Contains a list of disk type resources.
+--
+-- /See:/ 'diskTypeList' smart constructor.
+data DiskTypeList = DiskTypeList
+    { _dtlNextPageToken :: !(Maybe Text)
+    , _dtlKind          :: !Text
+    , _dtlItems         :: !(Maybe [DiskType])
+    , _dtlSelfLink      :: !(Maybe Text)
+    , _dtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtlNextPageToken'
+--
+-- * 'dtlKind'
+--
+-- * 'dtlItems'
+--
+-- * 'dtlSelfLink'
+--
+-- * 'dtlId'
+diskTypeList
+    :: DiskTypeList
+diskTypeList =
+    DiskTypeList
+    { _dtlNextPageToken = Nothing
+    , _dtlKind = "compute#diskTypeList"
+    , _dtlItems = Nothing
+    , _dtlSelfLink = Nothing
+    , _dtlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+dtlNextPageToken :: Lens' DiskTypeList (Maybe Text)
+dtlNextPageToken
+  = lens _dtlNextPageToken
+      (\ s a -> s{_dtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskTypeList for disk
+-- types.
+dtlKind :: Lens' DiskTypeList Text
+dtlKind = lens _dtlKind (\ s a -> s{_dtlKind = a})
+
+-- | [Output Only] A list of Disk Type resources.
+dtlItems :: Lens' DiskTypeList [DiskType]
+dtlItems
+  = lens _dtlItems (\ s a -> s{_dtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+dtlSelfLink :: Lens' DiskTypeList (Maybe Text)
+dtlSelfLink
+  = lens _dtlSelfLink (\ s a -> s{_dtlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dtlId :: Lens' DiskTypeList (Maybe Text)
+dtlId = lens _dtlId (\ s a -> s{_dtlId = a})
+
+instance FromJSON DiskTypeList where
+        parseJSON
+          = withObject "DiskTypeList"
+              (\ o ->
+                 DiskTypeList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskTypeList where
+        toJSON DiskTypeList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dtlNextPageToken,
+                  Just ("kind" .= _dtlKind),
+                  ("items" .=) <$> _dtlItems,
+                  ("selfLink" .=) <$> _dtlSelfLink,
+                  ("id" .=) <$> _dtlId])
+
+-- | Contains a list of Machine Type resources.
+--
+-- /See:/ 'machineTypeList' smart constructor.
+data MachineTypeList = MachineTypeList
+    { _mtlNextPageToken :: !(Maybe Text)
+    , _mtlKind          :: !Text
+    , _mtlItems         :: !(Maybe [MachineType])
+    , _mtlSelfLink      :: !(Maybe Text)
+    , _mtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtlNextPageToken'
+--
+-- * 'mtlKind'
+--
+-- * 'mtlItems'
+--
+-- * 'mtlSelfLink'
+--
+-- * 'mtlId'
+machineTypeList
+    :: MachineTypeList
+machineTypeList =
+    MachineTypeList
+    { _mtlNextPageToken = Nothing
+    , _mtlKind = "compute#machineTypeList"
+    , _mtlItems = Nothing
+    , _mtlSelfLink = Nothing
+    , _mtlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+mtlNextPageToken :: Lens' MachineTypeList (Maybe Text)
+mtlNextPageToken
+  = lens _mtlNextPageToken
+      (\ s a -> s{_mtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#machineTypeList for lists
+-- of machine types.
+mtlKind :: Lens' MachineTypeList Text
+mtlKind = lens _mtlKind (\ s a -> s{_mtlKind = a})
+
+-- | [Output Only] A list of Machine Type resources.
+mtlItems :: Lens' MachineTypeList [MachineType]
+mtlItems
+  = lens _mtlItems (\ s a -> s{_mtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+mtlSelfLink :: Lens' MachineTypeList (Maybe Text)
+mtlSelfLink
+  = lens _mtlSelfLink (\ s a -> s{_mtlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+mtlId :: Lens' MachineTypeList (Maybe Text)
+mtlId = lens _mtlId (\ s a -> s{_mtlId = a})
+
+instance FromJSON MachineTypeList where
+        parseJSON
+          = withObject "MachineTypeList"
+              (\ o ->
+                 MachineTypeList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#machineTypeList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON MachineTypeList where
+        toJSON MachineTypeList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _mtlNextPageToken,
+                  Just ("kind" .= _mtlKind),
+                  ("items" .=) <$> _mtlItems,
+                  ("selfLink" .=) <$> _mtlSelfLink,
+                  ("id" .=) <$> _mtlId])
+
+-- | A list of TargetHttpProxy resources.
+--
+-- /See:/ 'targetHTTPProxyList' smart constructor.
+data TargetHTTPProxyList = TargetHTTPProxyList
+    { _thttpplNextPageToken :: !(Maybe Text)
+    , _thttpplKind          :: !Text
+    , _thttpplItems         :: !(Maybe [TargetHTTPProxy])
+    , _thttpplSelfLink      :: !(Maybe Text)
+    , _thttpplId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttpplNextPageToken'
+--
+-- * 'thttpplKind'
+--
+-- * 'thttpplItems'
+--
+-- * 'thttpplSelfLink'
+--
+-- * 'thttpplId'
+targetHTTPProxyList
+    :: TargetHTTPProxyList
+targetHTTPProxyList =
+    TargetHTTPProxyList
+    { _thttpplNextPageToken = Nothing
+    , _thttpplKind = "compute#targetHttpProxyList"
+    , _thttpplItems = Nothing
+    , _thttpplSelfLink = Nothing
+    , _thttpplId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+thttpplNextPageToken :: Lens' TargetHTTPProxyList (Maybe Text)
+thttpplNextPageToken
+  = lens _thttpplNextPageToken
+      (\ s a -> s{_thttpplNextPageToken = a})
+
+-- | Type of resource. Always compute#targetHttpProxyList for lists of Target
+-- HTTP proxies.
+thttpplKind :: Lens' TargetHTTPProxyList Text
+thttpplKind
+  = lens _thttpplKind (\ s a -> s{_thttpplKind = a})
+
+-- | A list of TargetHttpProxy resources.
+thttpplItems :: Lens' TargetHTTPProxyList [TargetHTTPProxy]
+thttpplItems
+  = lens _thttpplItems (\ s a -> s{_thttpplItems = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+thttpplSelfLink :: Lens' TargetHTTPProxyList (Maybe Text)
+thttpplSelfLink
+  = lens _thttpplSelfLink
+      (\ s a -> s{_thttpplSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+thttpplId :: Lens' TargetHTTPProxyList (Maybe Text)
+thttpplId
+  = lens _thttpplId (\ s a -> s{_thttpplId = a})
+
+instance FromJSON TargetHTTPProxyList where
+        parseJSON
+          = withObject "TargetHTTPProxyList"
+              (\ o ->
+                 TargetHTTPProxyList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#targetHttpProxyList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetHTTPProxyList where
+        toJSON TargetHTTPProxyList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _thttpplNextPageToken,
+                  Just ("kind" .= _thttpplKind),
+                  ("items" .=) <$> _thttpplItems,
+                  ("selfLink" .=) <$> _thttpplSelfLink,
+                  ("id" .=) <$> _thttpplId])
+
+--
+-- /See:/ 'diskTypesScopedList' smart constructor.
+data DiskTypesScopedList = DiskTypesScopedList
+    { _dtslDiskTypes :: !(Maybe [DiskType])
+    , _dtslWarning   :: !(Maybe DiskTypesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtslDiskTypes'
+--
+-- * 'dtslWarning'
+diskTypesScopedList
+    :: DiskTypesScopedList
+diskTypesScopedList =
+    DiskTypesScopedList
+    { _dtslDiskTypes = Nothing
+    , _dtslWarning = Nothing
+    }
+
+-- | [Output Only] List of disk types contained in this scope.
+dtslDiskTypes :: Lens' DiskTypesScopedList [DiskType]
+dtslDiskTypes
+  = lens _dtslDiskTypes
+      (\ s a -> s{_dtslDiskTypes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of disk
+-- types when the list is empty.
+dtslWarning :: Lens' DiskTypesScopedList (Maybe DiskTypesScopedListWarning)
+dtslWarning
+  = lens _dtslWarning (\ s a -> s{_dtslWarning = a})
+
+instance FromJSON DiskTypesScopedList where
+        parseJSON
+          = withObject "DiskTypesScopedList"
+              (\ o ->
+                 DiskTypesScopedList <$>
+                   (o .:? "diskTypes" .!= mempty) <*> (o .:? "warning"))
+
+instance ToJSON DiskTypesScopedList where
+        toJSON DiskTypesScopedList{..}
+          = object
+              (catMaybes
+                 [("diskTypes" .=) <$> _dtslDiskTypes,
+                  ("warning" .=) <$> _dtslWarning])
+
+--
+-- /See:/ 'diskTypeAggregatedList' smart constructor.
+data DiskTypeAggregatedList = DiskTypeAggregatedList
+    { _dtalNextPageToken :: !(Maybe Text)
+    , _dtalKind          :: !Text
+    , _dtalItems         :: !(Maybe DiskTypeAggregatedListItems)
+    , _dtalSelfLink      :: !(Maybe Text)
+    , _dtalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypeAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtalNextPageToken'
+--
+-- * 'dtalKind'
+--
+-- * 'dtalItems'
+--
+-- * 'dtalSelfLink'
+--
+-- * 'dtalId'
+diskTypeAggregatedList
+    :: DiskTypeAggregatedList
+diskTypeAggregatedList =
+    DiskTypeAggregatedList
+    { _dtalNextPageToken = Nothing
+    , _dtalKind = "compute#diskTypeAggregatedList"
+    , _dtalItems = Nothing
+    , _dtalSelfLink = Nothing
+    , _dtalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+dtalNextPageToken :: Lens' DiskTypeAggregatedList (Maybe Text)
+dtalNextPageToken
+  = lens _dtalNextPageToken
+      (\ s a -> s{_dtalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#diskTypeAggregatedList.
+dtalKind :: Lens' DiskTypeAggregatedList Text
+dtalKind = lens _dtalKind (\ s a -> s{_dtalKind = a})
+
+-- | [Output Only] A map of scoped disk type lists.
+dtalItems :: Lens' DiskTypeAggregatedList (Maybe DiskTypeAggregatedListItems)
+dtalItems
+  = lens _dtalItems (\ s a -> s{_dtalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+dtalSelfLink :: Lens' DiskTypeAggregatedList (Maybe Text)
+dtalSelfLink
+  = lens _dtalSelfLink (\ s a -> s{_dtalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dtalId :: Lens' DiskTypeAggregatedList (Maybe Text)
+dtalId = lens _dtalId (\ s a -> s{_dtalId = a})
+
+instance FromJSON DiskTypeAggregatedList where
+        parseJSON
+          = withObject "DiskTypeAggregatedList"
+              (\ o ->
+                 DiskTypeAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#diskTypeAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON DiskTypeAggregatedList where
+        toJSON DiskTypeAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dtalNextPageToken,
+                  Just ("kind" .= _dtalKind),
+                  ("items" .=) <$> _dtalItems,
+                  ("selfLink" .=) <$> _dtalSelfLink,
+                  ("id" .=) <$> _dtalId])
+
+-- | An HttpHealthCheck resource. This resource defines a template for how
+-- individual instances should be checked for health, via HTTP.
+--
+-- /See:/ 'hTTPHealthCheck' smart constructor.
+data HTTPHealthCheck = HTTPHealthCheck
+    { _httphcHealthyThreshold   :: !(Maybe (Textual Int32))
+    , _httphcKind               :: !Text
+    , _httphcRequestPath        :: !(Maybe Text)
+    , _httphcSelfLink           :: !(Maybe Text)
+    , _httphcCheckIntervalSec   :: !(Maybe (Textual Int32))
+    , _httphcName               :: !(Maybe Text)
+    , _httphcCreationTimestamp  :: !(Maybe Text)
+    , _httphcId                 :: !(Maybe (Textual Word64))
+    , _httphcHost               :: !(Maybe Text)
+    , _httphcTimeoutSec         :: !(Maybe (Textual Int32))
+    , _httphcDescription        :: !(Maybe Text)
+    , _httphcUnhealthyThreshold :: !(Maybe (Textual Int32))
+    , _httphcPort               :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcHealthyThreshold'
+--
+-- * 'httphcKind'
+--
+-- * 'httphcRequestPath'
+--
+-- * 'httphcSelfLink'
+--
+-- * 'httphcCheckIntervalSec'
+--
+-- * 'httphcName'
+--
+-- * 'httphcCreationTimestamp'
+--
+-- * 'httphcId'
+--
+-- * 'httphcHost'
+--
+-- * 'httphcTimeoutSec'
+--
+-- * 'httphcDescription'
+--
+-- * 'httphcUnhealthyThreshold'
+--
+-- * 'httphcPort'
+hTTPHealthCheck
+    :: HTTPHealthCheck
+hTTPHealthCheck =
+    HTTPHealthCheck
+    { _httphcHealthyThreshold = Nothing
+    , _httphcKind = "compute#httpHealthCheck"
+    , _httphcRequestPath = Nothing
+    , _httphcSelfLink = Nothing
+    , _httphcCheckIntervalSec = Nothing
+    , _httphcName = Nothing
+    , _httphcCreationTimestamp = Nothing
+    , _httphcId = Nothing
+    , _httphcHost = Nothing
+    , _httphcTimeoutSec = Nothing
+    , _httphcDescription = Nothing
+    , _httphcUnhealthyThreshold = Nothing
+    , _httphcPort = Nothing
+    }
+
+-- | A so-far unhealthy instance will be marked healthy after this many
+-- consecutive successes. The default value is 2.
+httphcHealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
+httphcHealthyThreshold
+  = lens _httphcHealthyThreshold
+      (\ s a -> s{_httphcHealthyThreshold = a})
+      . mapping _Coerce
+
+-- | Type of the resource.
+httphcKind :: Lens' HTTPHealthCheck Text
+httphcKind
+  = lens _httphcKind (\ s a -> s{_httphcKind = a})
+
+-- | The request path of the HTTP health check request. The default value is
+-- \"\/\".
+httphcRequestPath :: Lens' HTTPHealthCheck (Maybe Text)
+httphcRequestPath
+  = lens _httphcRequestPath
+      (\ s a -> s{_httphcRequestPath = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+httphcSelfLink :: Lens' HTTPHealthCheck (Maybe Text)
+httphcSelfLink
+  = lens _httphcSelfLink
+      (\ s a -> s{_httphcSelfLink = a})
+
+-- | How often (in seconds) to send a health check. The default value is 5
+-- seconds.
+httphcCheckIntervalSec :: Lens' HTTPHealthCheck (Maybe Int32)
+httphcCheckIntervalSec
+  = lens _httphcCheckIntervalSec
+      (\ s a -> s{_httphcCheckIntervalSec = a})
+      . mapping _Coerce
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+httphcName :: Lens' HTTPHealthCheck (Maybe Text)
+httphcName
+  = lens _httphcName (\ s a -> s{_httphcName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+httphcCreationTimestamp :: Lens' HTTPHealthCheck (Maybe Text)
+httphcCreationTimestamp
+  = lens _httphcCreationTimestamp
+      (\ s a -> s{_httphcCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+httphcId :: Lens' HTTPHealthCheck (Maybe Word64)
+httphcId
+  = lens _httphcId (\ s a -> s{_httphcId = a}) .
+      mapping _Coerce
+
+-- | The value of the host header in the HTTP health check request. If left
+-- empty (default value), the public IP on behalf of which this health
+-- check is performed will be used.
+httphcHost :: Lens' HTTPHealthCheck (Maybe Text)
+httphcHost
+  = lens _httphcHost (\ s a -> s{_httphcHost = a})
+
+-- | How long (in seconds) to wait before claiming failure. The default value
+-- is 5 seconds. It is invalid for timeoutSec to have greater value than
+-- checkIntervalSec.
+httphcTimeoutSec :: Lens' HTTPHealthCheck (Maybe Int32)
+httphcTimeoutSec
+  = lens _httphcTimeoutSec
+      (\ s a -> s{_httphcTimeoutSec = a})
+      . mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+httphcDescription :: Lens' HTTPHealthCheck (Maybe Text)
+httphcDescription
+  = lens _httphcDescription
+      (\ s a -> s{_httphcDescription = a})
+
+-- | A so-far healthy instance will be marked unhealthy after this many
+-- consecutive failures. The default value is 2.
+httphcUnhealthyThreshold :: Lens' HTTPHealthCheck (Maybe Int32)
+httphcUnhealthyThreshold
+  = lens _httphcUnhealthyThreshold
+      (\ s a -> s{_httphcUnhealthyThreshold = a})
+      . mapping _Coerce
+
+-- | The TCP port number for the HTTP health check request. The default value
+-- is 80.
+httphcPort :: Lens' HTTPHealthCheck (Maybe Int32)
+httphcPort
+  = lens _httphcPort (\ s a -> s{_httphcPort = a}) .
+      mapping _Coerce
+
+instance FromJSON HTTPHealthCheck where
+        parseJSON
+          = withObject "HTTPHealthCheck"
+              (\ o ->
+                 HTTPHealthCheck <$>
+                   (o .:? "healthyThreshold") <*>
+                     (o .:? "kind" .!= "compute#httpHealthCheck")
+                     <*> (o .:? "requestPath")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "checkIntervalSec")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "host")
+                     <*> (o .:? "timeoutSec")
+                     <*> (o .:? "description")
+                     <*> (o .:? "unhealthyThreshold")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTPHealthCheck where
+        toJSON HTTPHealthCheck{..}
+          = object
+              (catMaybes
+                 [("healthyThreshold" .=) <$> _httphcHealthyThreshold,
+                  Just ("kind" .= _httphcKind),
+                  ("requestPath" .=) <$> _httphcRequestPath,
+                  ("selfLink" .=) <$> _httphcSelfLink,
+                  ("checkIntervalSec" .=) <$> _httphcCheckIntervalSec,
+                  ("name" .=) <$> _httphcName,
+                  ("creationTimestamp" .=) <$>
+                    _httphcCreationTimestamp,
+                  ("id" .=) <$> _httphcId, ("host" .=) <$> _httphcHost,
+                  ("timeoutSec" .=) <$> _httphcTimeoutSec,
+                  ("description" .=) <$> _httphcDescription,
+                  ("unhealthyThreshold" .=) <$>
+                    _httphcUnhealthyThreshold,
+                  ("port" .=) <$> _httphcPort])
+
+--
+-- /See:/ 'backendServiceGroupHealth' smart constructor.
+data BackendServiceGroupHealth = BackendServiceGroupHealth
+    { _bsghKind         :: !Text
+    , _bsghHealthStatus :: !(Maybe [HealthStatus])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceGroupHealth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsghKind'
+--
+-- * 'bsghHealthStatus'
+backendServiceGroupHealth
+    :: BackendServiceGroupHealth
+backendServiceGroupHealth =
+    BackendServiceGroupHealth
+    { _bsghKind = "compute#backendServiceGroupHealth"
+    , _bsghHealthStatus = Nothing
+    }
+
+-- | [Output Only] Type of resource. Always compute#backendServiceGroupHealth
+-- for the health of backend services.
+bsghKind :: Lens' BackendServiceGroupHealth Text
+bsghKind = lens _bsghKind (\ s a -> s{_bsghKind = a})
+
+bsghHealthStatus :: Lens' BackendServiceGroupHealth [HealthStatus]
+bsghHealthStatus
+  = lens _bsghHealthStatus
+      (\ s a -> s{_bsghHealthStatus = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON BackendServiceGroupHealth where
+        parseJSON
+          = withObject "BackendServiceGroupHealth"
+              (\ o ->
+                 BackendServiceGroupHealth <$>
+                   (o .:? "kind" .!=
+                      "compute#backendServiceGroupHealth")
+                     <*> (o .:? "healthStatus" .!= mempty))
+
+instance ToJSON BackendServiceGroupHealth where
+        toJSON BackendServiceGroupHealth{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _bsghKind),
+                  ("healthStatus" .=) <$> _bsghHealthStatus])
+
+--
+-- /See:/ 'autoscalersScopedList' smart constructor.
+data AutoscalersScopedList = AutoscalersScopedList
+    { _aAutoscalers :: !(Maybe [Autoscaler])
+    , _aWarning     :: !(Maybe AutoscalersScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAutoscalers'
+--
+-- * 'aWarning'
+autoscalersScopedList
+    :: AutoscalersScopedList
+autoscalersScopedList =
+    AutoscalersScopedList
+    { _aAutoscalers = Nothing
+    , _aWarning = Nothing
+    }
+
+-- | List of autoscalers contained in this scope.
+aAutoscalers :: Lens' AutoscalersScopedList [Autoscaler]
+aAutoscalers
+  = lens _aAutoscalers (\ s a -> s{_aAutoscalers = a})
+      . _Default
+      . _Coerce
+
+-- | Informational warning which replaces the list of autoscalers when the
+-- list is empty.
+aWarning :: Lens' AutoscalersScopedList (Maybe AutoscalersScopedListWarning)
+aWarning = lens _aWarning (\ s a -> s{_aWarning = a})
+
+instance FromJSON AutoscalersScopedList where
+        parseJSON
+          = withObject "AutoscalersScopedList"
+              (\ o ->
+                 AutoscalersScopedList <$>
+                   (o .:? "autoscalers" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON AutoscalersScopedList where
+        toJSON AutoscalersScopedList{..}
+          = object
+              (catMaybes
+                 [("autoscalers" .=) <$> _aAutoscalers,
+                  ("warning" .=) <$> _aWarning])
+
+--
+-- /See:/ 'autoscalerAggregatedList' smart constructor.
+data AutoscalerAggregatedList = AutoscalerAggregatedList
+    { _aalNextPageToken :: !(Maybe Text)
+    , _aalKind          :: !Text
+    , _aalItems         :: !(Maybe AutoscalerAggregatedListItems)
+    , _aalSelfLink      :: !(Maybe Text)
+    , _aalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalNextPageToken'
+--
+-- * 'aalKind'
+--
+-- * 'aalItems'
+--
+-- * 'aalSelfLink'
+--
+-- * 'aalId'
+autoscalerAggregatedList
+    :: AutoscalerAggregatedList
+autoscalerAggregatedList =
+    AutoscalerAggregatedList
+    { _aalNextPageToken = Nothing
+    , _aalKind = "compute#autoscalerAggregatedList"
+    , _aalItems = Nothing
+    , _aalSelfLink = Nothing
+    , _aalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+aalNextPageToken :: Lens' AutoscalerAggregatedList (Maybe Text)
+aalNextPageToken
+  = lens _aalNextPageToken
+      (\ s a -> s{_aalNextPageToken = a})
+
+-- | Type of resource.
+aalKind :: Lens' AutoscalerAggregatedList Text
+aalKind = lens _aalKind (\ s a -> s{_aalKind = a})
+
+-- | A map of scoped autoscaler lists.
+aalItems :: Lens' AutoscalerAggregatedList (Maybe AutoscalerAggregatedListItems)
+aalItems = lens _aalItems (\ s a -> s{_aalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+aalSelfLink :: Lens' AutoscalerAggregatedList (Maybe Text)
+aalSelfLink
+  = lens _aalSelfLink (\ s a -> s{_aalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+aalId :: Lens' AutoscalerAggregatedList (Maybe Text)
+aalId = lens _aalId (\ s a -> s{_aalId = a})
+
+instance FromJSON AutoscalerAggregatedList where
+        parseJSON
+          = withObject "AutoscalerAggregatedList"
+              (\ o ->
+                 AutoscalerAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#autoscalerAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON AutoscalerAggregatedList where
+        toJSON AutoscalerAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _aalNextPageToken,
+                  Just ("kind" .= _aalKind),
+                  ("items" .=) <$> _aalItems,
+                  ("selfLink" .=) <$> _aalSelfLink,
+                  ("id" .=) <$> _aalId])
+
+-- | Cloud Autoscaler policy.
+--
+-- /See:/ 'autoscalingPolicy' smart constructor.
+data AutoscalingPolicy = AutoscalingPolicy
+    { _apCustomMetricUtilizations :: !(Maybe [AutoscalingPolicyCustomMetricUtilization])
+    , _apMaxNumReplicas           :: !(Maybe (Textual Int32))
+    , _apCPUUtilization           :: !(Maybe AutoscalingPolicyCPUUtilization)
+    , _apLoadBalancingUtilization :: !(Maybe AutoscalingPolicyLoadBalancingUtilization)
+    , _apMinNumReplicas           :: !(Maybe (Textual Int32))
+    , _apCoolDownPeriodSec        :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apCustomMetricUtilizations'
+--
+-- * 'apMaxNumReplicas'
+--
+-- * 'apCPUUtilization'
+--
+-- * 'apLoadBalancingUtilization'
+--
+-- * 'apMinNumReplicas'
+--
+-- * 'apCoolDownPeriodSec'
+autoscalingPolicy
+    :: AutoscalingPolicy
+autoscalingPolicy =
+    AutoscalingPolicy
+    { _apCustomMetricUtilizations = Nothing
+    , _apMaxNumReplicas = Nothing
+    , _apCPUUtilization = Nothing
+    , _apLoadBalancingUtilization = Nothing
+    , _apMinNumReplicas = Nothing
+    , _apCoolDownPeriodSec = Nothing
+    }
+
+-- | Configuration parameters of autoscaling based on custom metric.
+apCustomMetricUtilizations :: Lens' AutoscalingPolicy [AutoscalingPolicyCustomMetricUtilization]
+apCustomMetricUtilizations
+  = lens _apCustomMetricUtilizations
+      (\ s a -> s{_apCustomMetricUtilizations = a})
+      . _Default
+      . _Coerce
+
+-- | The maximum number of replicas that the Autoscaler can scale up to. This
+-- field is required for config to be effective. Maximum number of replicas
+-- should be not lower than minimal number of replicas. Absolute limit for
+-- this value is defined in Autoscaler backend.
+apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
+apMaxNumReplicas
+  = lens _apMaxNumReplicas
+      (\ s a -> s{_apMaxNumReplicas = a})
+      . mapping _Coerce
+
+-- | TODO(jbartosik): Add support for scaling based on muliple utilization
+-- metrics (take max recommendation). Exactly one utilization policy should
+-- be provided. Configuration parameters of CPU based autoscaling policy.
+apCPUUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyCPUUtilization)
+apCPUUtilization
+  = lens _apCPUUtilization
+      (\ s a -> s{_apCPUUtilization = a})
+
+-- | Configuration parameters of autoscaling based on load balancer.
+apLoadBalancingUtilization :: Lens' AutoscalingPolicy (Maybe AutoscalingPolicyLoadBalancingUtilization)
+apLoadBalancingUtilization
+  = lens _apLoadBalancingUtilization
+      (\ s a -> s{_apLoadBalancingUtilization = a})
+
+-- | The minimum number of replicas that the Autoscaler can scale down to.
+-- Can\'t be less than 0. If not provided Autoscaler will choose default
+-- value depending on maximal number of replicas.
+apMinNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
+apMinNumReplicas
+  = lens _apMinNumReplicas
+      (\ s a -> s{_apMinNumReplicas = a})
+      . mapping _Coerce
+
+-- | The number of seconds that the Autoscaler should wait between two
+-- succeeding changes to the number of virtual machines. You should define
+-- an interval that is at least as long as the initialization time of a
+-- virtual machine and the time it may take for replica pool to create the
+-- virtual machine. The default is 60 seconds.
+apCoolDownPeriodSec :: Lens' AutoscalingPolicy (Maybe Int32)
+apCoolDownPeriodSec
+  = lens _apCoolDownPeriodSec
+      (\ s a -> s{_apCoolDownPeriodSec = a})
+      . mapping _Coerce
+
+instance FromJSON AutoscalingPolicy where
+        parseJSON
+          = withObject "AutoscalingPolicy"
+              (\ o ->
+                 AutoscalingPolicy <$>
+                   (o .:? "customMetricUtilizations" .!= mempty) <*>
+                     (o .:? "maxNumReplicas")
+                     <*> (o .:? "cpuUtilization")
+                     <*> (o .:? "loadBalancingUtilization")
+                     <*> (o .:? "minNumReplicas")
+                     <*> (o .:? "coolDownPeriodSec"))
+
+instance ToJSON AutoscalingPolicy where
+        toJSON AutoscalingPolicy{..}
+          = object
+              (catMaybes
+                 [("customMetricUtilizations" .=) <$>
+                    _apCustomMetricUtilizations,
+                  ("maxNumReplicas" .=) <$> _apMaxNumReplicas,
+                  ("cpuUtilization" .=) <$> _apCPUUtilization,
+                  ("loadBalancingUtilization" .=) <$>
+                    _apLoadBalancingUtilization,
+                  ("minNumReplicas" .=) <$> _apMinNumReplicas,
+                  ("coolDownPeriodSec" .=) <$> _apCoolDownPeriodSec])
+
+-- | Contains a list of region resources.
+--
+-- /See:/ 'regionList' smart constructor.
+data RegionList = RegionList
+    { _regNextPageToken :: !(Maybe Text)
+    , _regKind          :: !Text
+    , _regItems         :: !(Maybe [Region])
+    , _regSelfLink      :: !(Maybe Text)
+    , _regId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'regNextPageToken'
+--
+-- * 'regKind'
+--
+-- * 'regItems'
+--
+-- * 'regSelfLink'
+--
+-- * 'regId'
+regionList
+    :: RegionList
+regionList =
+    RegionList
+    { _regNextPageToken = Nothing
+    , _regKind = "compute#regionList"
+    , _regItems = Nothing
+    , _regSelfLink = Nothing
+    , _regId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+regNextPageToken :: Lens' RegionList (Maybe Text)
+regNextPageToken
+  = lens _regNextPageToken
+      (\ s a -> s{_regNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#regionList for lists of
+-- regions.
+regKind :: Lens' RegionList Text
+regKind = lens _regKind (\ s a -> s{_regKind = a})
+
+-- | [Output Only] A list of Region resources.
+regItems :: Lens' RegionList [Region]
+regItems
+  = lens _regItems (\ s a -> s{_regItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+regSelfLink :: Lens' RegionList (Maybe Text)
+regSelfLink
+  = lens _regSelfLink (\ s a -> s{_regSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+regId :: Lens' RegionList (Maybe Text)
+regId = lens _regId (\ s a -> s{_regId = a})
+
+instance FromJSON RegionList where
+        parseJSON
+          = withObject "RegionList"
+              (\ o ->
+                 RegionList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#regionList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON RegionList where
+        toJSON RegionList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _regNextPageToken,
+                  Just ("kind" .= _regKind),
+                  ("items" .=) <$> _regItems,
+                  ("selfLink" .=) <$> _regSelfLink,
+                  ("id" .=) <$> _regId])
+
+-- | Contains a list of VpnTunnel resources.
+--
+-- /See:/ 'vpnTunnelList' smart constructor.
+data VPNTunnelList = VPNTunnelList
+    { _vtlNextPageToken :: !(Maybe Text)
+    , _vtlKind          :: !Text
+    , _vtlItems         :: !(Maybe [VPNTunnel])
+    , _vtlSelfLink      :: !(Maybe Text)
+    , _vtlId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtlNextPageToken'
+--
+-- * 'vtlKind'
+--
+-- * 'vtlItems'
+--
+-- * 'vtlSelfLink'
+--
+-- * 'vtlId'
+vpnTunnelList
+    :: VPNTunnelList
+vpnTunnelList =
+    VPNTunnelList
+    { _vtlNextPageToken = Nothing
+    , _vtlKind = "compute#vpnTunnelList"
+    , _vtlItems = Nothing
+    , _vtlSelfLink = Nothing
+    , _vtlId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+vtlNextPageToken :: Lens' VPNTunnelList (Maybe Text)
+vtlNextPageToken
+  = lens _vtlNextPageToken
+      (\ s a -> s{_vtlNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
+-- tunnels.
+vtlKind :: Lens' VPNTunnelList Text
+vtlKind = lens _vtlKind (\ s a -> s{_vtlKind = a})
+
+-- | [Output Only] A list of VpnTunnel resources.
+vtlItems :: Lens' VPNTunnelList [VPNTunnel]
+vtlItems
+  = lens _vtlItems (\ s a -> s{_vtlItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+vtlSelfLink :: Lens' VPNTunnelList (Maybe Text)
+vtlSelfLink
+  = lens _vtlSelfLink (\ s a -> s{_vtlSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+vtlId :: Lens' VPNTunnelList (Maybe Text)
+vtlId = lens _vtlId (\ s a -> s{_vtlId = a})
+
+instance FromJSON VPNTunnelList where
+        parseJSON
+          = withObject "VPNTunnelList"
+              (\ o ->
+                 VPNTunnelList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#vpnTunnelList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON VPNTunnelList where
+        toJSON VPNTunnelList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _vtlNextPageToken,
+                  Just ("kind" .= _vtlKind),
+                  ("items" .=) <$> _vtlItems,
+                  ("selfLink" .=) <$> _vtlSelfLink,
+                  ("id" .=) <$> _vtlId])
+
+--
+-- /See:/ 'machineTypeScratchDisksItem' smart constructor.
+newtype MachineTypeScratchDisksItem = MachineTypeScratchDisksItem
+    { _mtsdiDiskGb :: Maybe (Textual Int32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeScratchDisksItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtsdiDiskGb'
+machineTypeScratchDisksItem
+    :: MachineTypeScratchDisksItem
+machineTypeScratchDisksItem =
+    MachineTypeScratchDisksItem
+    { _mtsdiDiskGb = Nothing
+    }
+
+-- | Size of the scratch disk, defined in GB.
+mtsdiDiskGb :: Lens' MachineTypeScratchDisksItem (Maybe Int32)
+mtsdiDiskGb
+  = lens _mtsdiDiskGb (\ s a -> s{_mtsdiDiskGb = a}) .
+      mapping _Coerce
+
+instance FromJSON MachineTypeScratchDisksItem where
+        parseJSON
+          = withObject "MachineTypeScratchDisksItem"
+              (\ o ->
+                 MachineTypeScratchDisksItem <$> (o .:? "diskGb"))
+
+instance ToJSON MachineTypeScratchDisksItem where
+        toJSON MachineTypeScratchDisksItem{..}
+          = object (catMaybes [("diskGb" .=) <$> _mtsdiDiskGb])
+
+--
+-- /See:/ 'machineTypesScopedList' smart constructor.
+data MachineTypesScopedList = MachineTypesScopedList
+    { _mtslMachineTypes :: !(Maybe [MachineType])
+    , _mtslWarning      :: !(Maybe MachineTypesScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtslMachineTypes'
+--
+-- * 'mtslWarning'
+machineTypesScopedList
+    :: MachineTypesScopedList
+machineTypesScopedList =
+    MachineTypesScopedList
+    { _mtslMachineTypes = Nothing
+    , _mtslWarning = Nothing
+    }
+
+-- | [Output Only] List of machine types contained in this scope.
+mtslMachineTypes :: Lens' MachineTypesScopedList [MachineType]
+mtslMachineTypes
+  = lens _mtslMachineTypes
+      (\ s a -> s{_mtslMachineTypes = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] An informational warning that appears when the machine
+-- types list is empty.
+mtslWarning :: Lens' MachineTypesScopedList (Maybe MachineTypesScopedListWarning)
+mtslWarning
+  = lens _mtslWarning (\ s a -> s{_mtslWarning = a})
+
+instance FromJSON MachineTypesScopedList where
+        parseJSON
+          = withObject "MachineTypesScopedList"
+              (\ o ->
+                 MachineTypesScopedList <$>
+                   (o .:? "machineTypes" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON MachineTypesScopedList where
+        toJSON MachineTypesScopedList{..}
+          = object
+              (catMaybes
+                 [("machineTypes" .=) <$> _mtslMachineTypes,
+                  ("warning" .=) <$> _mtslWarning])
+
+--
+-- /See:/ 'machineTypeAggregatedList' smart constructor.
+data MachineTypeAggregatedList = MachineTypeAggregatedList
+    { _mtalNextPageToken :: !(Maybe Text)
+    , _mtalKind          :: !Text
+    , _mtalItems         :: !(Maybe MachineTypeAggregatedListItems)
+    , _mtalSelfLink      :: !(Maybe Text)
+    , _mtalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypeAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtalNextPageToken'
+--
+-- * 'mtalKind'
+--
+-- * 'mtalItems'
+--
+-- * 'mtalSelfLink'
+--
+-- * 'mtalId'
+machineTypeAggregatedList
+    :: MachineTypeAggregatedList
+machineTypeAggregatedList =
+    MachineTypeAggregatedList
+    { _mtalNextPageToken = Nothing
+    , _mtalKind = "compute#machineTypeAggregatedList"
+    , _mtalItems = Nothing
+    , _mtalSelfLink = Nothing
+    , _mtalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+mtalNextPageToken :: Lens' MachineTypeAggregatedList (Maybe Text)
+mtalNextPageToken
+  = lens _mtalNextPageToken
+      (\ s a -> s{_mtalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#machineTypeAggregatedList
+-- for aggregated lists of machine types.
+mtalKind :: Lens' MachineTypeAggregatedList Text
+mtalKind = lens _mtalKind (\ s a -> s{_mtalKind = a})
+
+-- | [Output Only] A map of scoped machine type lists.
+mtalItems :: Lens' MachineTypeAggregatedList (Maybe MachineTypeAggregatedListItems)
+mtalItems
+  = lens _mtalItems (\ s a -> s{_mtalItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+mtalSelfLink :: Lens' MachineTypeAggregatedList (Maybe Text)
+mtalSelfLink
+  = lens _mtalSelfLink (\ s a -> s{_mtalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+mtalId :: Lens' MachineTypeAggregatedList (Maybe Text)
+mtalId = lens _mtalId (\ s a -> s{_mtalId = a})
+
+instance FromJSON MachineTypeAggregatedList where
+        parseJSON
+          = withObject "MachineTypeAggregatedList"
+              (\ o ->
+                 MachineTypeAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#machineTypeAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON MachineTypeAggregatedList where
+        toJSON MachineTypeAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _mtalNextPageToken,
+                  Just ("kind" .= _mtalKind),
+                  ("items" .=) <$> _mtalItems,
+                  ("selfLink" .=) <$> _mtalSelfLink,
+                  ("id" .=) <$> _mtalId])
+
+-- | A disk type resource.
+--
+-- /See:/ 'diskType' smart constructor.
+data DiskType = DiskType
+    { _dtKind              :: !Text
+    , _dtZone              :: !(Maybe Text)
+    , _dtSelfLink          :: !(Maybe Text)
+    , _dtName              :: !(Maybe Text)
+    , _dtCreationTimestamp :: !(Maybe Text)
+    , _dtId                :: !(Maybe (Textual Word64))
+    , _dtValidDiskSize     :: !(Maybe Text)
+    , _dtDescription       :: !(Maybe Text)
+    , _dtDefaultDiskSizeGb :: !(Maybe (Textual Int64))
+    , _dtDeprecated        :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtKind'
+--
+-- * 'dtZone'
+--
+-- * 'dtSelfLink'
+--
+-- * 'dtName'
+--
+-- * 'dtCreationTimestamp'
+--
+-- * 'dtId'
+--
+-- * 'dtValidDiskSize'
+--
+-- * 'dtDescription'
+--
+-- * 'dtDefaultDiskSizeGb'
+--
+-- * 'dtDeprecated'
+diskType
+    :: DiskType
+diskType =
+    DiskType
+    { _dtKind = "compute#diskType"
+    , _dtZone = Nothing
+    , _dtSelfLink = Nothing
+    , _dtName = Nothing
+    , _dtCreationTimestamp = Nothing
+    , _dtId = Nothing
+    , _dtValidDiskSize = Nothing
+    , _dtDescription = Nothing
+    , _dtDefaultDiskSizeGb = Nothing
+    , _dtDeprecated = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#diskType for disk
+-- types.
+dtKind :: Lens' DiskType Text
+dtKind = lens _dtKind (\ s a -> s{_dtKind = a})
+
+-- | [Output Only] URL of the zone where the disk type resides.
+dtZone :: Lens' DiskType (Maybe Text)
+dtZone = lens _dtZone (\ s a -> s{_dtZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+dtSelfLink :: Lens' DiskType (Maybe Text)
+dtSelfLink
+  = lens _dtSelfLink (\ s a -> s{_dtSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+dtName :: Lens' DiskType (Maybe Text)
+dtName = lens _dtName (\ s a -> s{_dtName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+dtCreationTimestamp :: Lens' DiskType (Maybe Text)
+dtCreationTimestamp
+  = lens _dtCreationTimestamp
+      (\ s a -> s{_dtCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+dtId :: Lens' DiskType (Maybe Word64)
+dtId
+  = lens _dtId (\ s a -> s{_dtId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] An optional textual description of the valid disk size,
+-- such as \"10GB-10TB\".
+dtValidDiskSize :: Lens' DiskType (Maybe Text)
+dtValidDiskSize
+  = lens _dtValidDiskSize
+      (\ s a -> s{_dtValidDiskSize = a})
+
+-- | [Output Only] An optional textual description of the resource.
+dtDescription :: Lens' DiskType (Maybe Text)
+dtDescription
+  = lens _dtDescription
+      (\ s a -> s{_dtDescription = a})
+
+-- | [Output Only] Server-defined default disk size in GB.
+dtDefaultDiskSizeGb :: Lens' DiskType (Maybe Int64)
+dtDefaultDiskSizeGb
+  = lens _dtDefaultDiskSizeGb
+      (\ s a -> s{_dtDefaultDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] The deprecation status associated with this disk type.
+dtDeprecated :: Lens' DiskType (Maybe DeprecationStatus)
+dtDeprecated
+  = lens _dtDeprecated (\ s a -> s{_dtDeprecated = a})
+
+instance FromJSON DiskType where
+        parseJSON
+          = withObject "DiskType"
+              (\ o ->
+                 DiskType <$>
+                   (o .:? "kind" .!= "compute#diskType") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "validDiskSize")
+                     <*> (o .:? "description")
+                     <*> (o .:? "defaultDiskSizeGb")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON DiskType where
+        toJSON DiskType{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _dtKind), ("zone" .=) <$> _dtZone,
+                  ("selfLink" .=) <$> _dtSelfLink,
+                  ("name" .=) <$> _dtName,
+                  ("creationTimestamp" .=) <$> _dtCreationTimestamp,
+                  ("id" .=) <$> _dtId,
+                  ("validDiskSize" .=) <$> _dtValidDiskSize,
+                  ("description" .=) <$> _dtDescription,
+                  ("defaultDiskSizeGb" .=) <$> _dtDefaultDiskSizeGb,
+                  ("deprecated" .=) <$> _dtDeprecated])
+
+-- | Message representing the validation result for a UrlMap.
+--
+-- /See:/ 'urlMapValidationResult' smart constructor.
+data URLMapValidationResult = URLMapValidationResult
+    { _umvrLoadErrors    :: !(Maybe [Text])
+    , _umvrLoadSucceeded :: !(Maybe Bool)
+    , _umvrTestPassed    :: !(Maybe Bool)
+    , _umvrTestFailures  :: !(Maybe [TestFailure])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapValidationResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvrLoadErrors'
+--
+-- * 'umvrLoadSucceeded'
+--
+-- * 'umvrTestPassed'
+--
+-- * 'umvrTestFailures'
+urlMapValidationResult
+    :: URLMapValidationResult
+urlMapValidationResult =
+    URLMapValidationResult
+    { _umvrLoadErrors = Nothing
+    , _umvrLoadSucceeded = Nothing
+    , _umvrTestPassed = Nothing
+    , _umvrTestFailures = Nothing
+    }
+
+umvrLoadErrors :: Lens' URLMapValidationResult [Text]
+umvrLoadErrors
+  = lens _umvrLoadErrors
+      (\ s a -> s{_umvrLoadErrors = a})
+      . _Default
+      . _Coerce
+
+-- | Whether the given UrlMap can be successfully loaded. If false,
+-- \'loadErrors\' indicates the reasons.
+umvrLoadSucceeded :: Lens' URLMapValidationResult (Maybe Bool)
+umvrLoadSucceeded
+  = lens _umvrLoadSucceeded
+      (\ s a -> s{_umvrLoadSucceeded = a})
+
+-- | If successfully loaded, this field indicates whether the test passed. If
+-- false, \'testFailures\'s indicate the reason of failure.
+umvrTestPassed :: Lens' URLMapValidationResult (Maybe Bool)
+umvrTestPassed
+  = lens _umvrTestPassed
+      (\ s a -> s{_umvrTestPassed = a})
+
+umvrTestFailures :: Lens' URLMapValidationResult [TestFailure]
+umvrTestFailures
+  = lens _umvrTestFailures
+      (\ s a -> s{_umvrTestFailures = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON URLMapValidationResult where
+        parseJSON
+          = withObject "URLMapValidationResult"
+              (\ o ->
+                 URLMapValidationResult <$>
+                   (o .:? "loadErrors" .!= mempty) <*>
+                     (o .:? "loadSucceeded")
+                     <*> (o .:? "testPassed")
+                     <*> (o .:? "testFailures" .!= mempty))
+
+instance ToJSON URLMapValidationResult where
+        toJSON URLMapValidationResult{..}
+          = object
+              (catMaybes
+                 [("loadErrors" .=) <$> _umvrLoadErrors,
+                  ("loadSucceeded" .=) <$> _umvrLoadSucceeded,
+                  ("testPassed" .=) <$> _umvrTestPassed,
+                  ("testFailures" .=) <$> _umvrTestFailures])
+
+-- | A metadata key\/value entry.
+--
+-- /See:/ 'metadata' smart constructor.
+data Metadata = Metadata
+    { _mKind        :: !Text
+    , _mFingerprint :: !(Maybe (Textual Word8))
+    , _mItems       :: !(Maybe [MetadataItemsItem])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Metadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mKind'
+--
+-- * 'mFingerprint'
+--
+-- * 'mItems'
+metadata
+    :: Metadata
+metadata =
+    Metadata
+    { _mKind = "compute#metadata"
+    , _mFingerprint = Nothing
+    , _mItems = Nothing
+    }
+
+-- | [Output Only] Type of the resource. Always compute#metadata for
+-- metadata.
+mKind :: Lens' Metadata Text
+mKind = lens _mKind (\ s a -> s{_mKind = a})
+
+-- | Specifies a fingerprint for this request, which is essentially a hash of
+-- the metadata\'s contents and used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update metadata. You must always provide an
+-- up-to-date fingerprint hash in order to update or change metadata.
+mFingerprint :: Lens' Metadata (Maybe Word8)
+mFingerprint
+  = lens _mFingerprint (\ s a -> s{_mFingerprint = a})
+      . mapping _Coerce
+
+-- | Array of key\/value pairs. The total size of all keys and values must be
+-- less than 512 KB.
+mItems :: Lens' Metadata [MetadataItemsItem]
+mItems
+  = lens _mItems (\ s a -> s{_mItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Metadata where
+        parseJSON
+          = withObject "Metadata"
+              (\ o ->
+                 Metadata <$>
+                   (o .:? "kind" .!= "compute#metadata") <*>
+                     (o .:? "fingerprint")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Metadata where
+        toJSON Metadata{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _mKind),
+                  ("fingerprint" .=) <$> _mFingerprint,
+                  ("items" .=) <$> _mItems])
+
+--
+-- /See:/ 'routeWarningsItem' smart constructor.
+data RouteWarningsItem = RouteWarningsItem
+    { _rwiData    :: !(Maybe [RouteWarningsItemDataItem])
+    , _rwiCode    :: !(Maybe RouteWarningsItemCode)
+    , _rwiMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RouteWarningsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rwiData'
+--
+-- * 'rwiCode'
+--
+-- * 'rwiMessage'
+routeWarningsItem
+    :: RouteWarningsItem
+routeWarningsItem =
+    RouteWarningsItem
+    { _rwiData = Nothing
+    , _rwiCode = Nothing
+    , _rwiMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+rwiData :: Lens' RouteWarningsItem [RouteWarningsItemDataItem]
+rwiData
+  = lens _rwiData (\ s a -> s{_rwiData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+rwiCode :: Lens' RouteWarningsItem (Maybe RouteWarningsItemCode)
+rwiCode = lens _rwiCode (\ s a -> s{_rwiCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+rwiMessage :: Lens' RouteWarningsItem (Maybe Text)
+rwiMessage
+  = lens _rwiMessage (\ s a -> s{_rwiMessage = a})
+
+instance FromJSON RouteWarningsItem where
+        parseJSON
+          = withObject "RouteWarningsItem"
+              (\ o ->
+                 RouteWarningsItem <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON RouteWarningsItem where
+        toJSON RouteWarningsItem{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _rwiData, ("code" .=) <$> _rwiCode,
+                  ("message" .=) <$> _rwiMessage])
+
+--
+-- /See:/ 'machineTypesScopedListWarningDataItem' smart constructor.
+data MachineTypesScopedListWarningDataItem = MachineTypesScopedListWarningDataItem
+    { _mtslwdiValue :: !(Maybe Text)
+    , _mtslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtslwdiValue'
+--
+-- * 'mtslwdiKey'
+machineTypesScopedListWarningDataItem
+    :: MachineTypesScopedListWarningDataItem
+machineTypesScopedListWarningDataItem =
+    MachineTypesScopedListWarningDataItem
+    { _mtslwdiValue = Nothing
+    , _mtslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+mtslwdiValue :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)
+mtslwdiValue
+  = lens _mtslwdiValue (\ s a -> s{_mtslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+mtslwdiKey :: Lens' MachineTypesScopedListWarningDataItem (Maybe Text)
+mtslwdiKey
+  = lens _mtslwdiKey (\ s a -> s{_mtslwdiKey = a})
+
+instance FromJSON
+         MachineTypesScopedListWarningDataItem where
+        parseJSON
+          = withObject "MachineTypesScopedListWarningDataItem"
+              (\ o ->
+                 MachineTypesScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON MachineTypesScopedListWarningDataItem
+         where
+        toJSON MachineTypesScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _mtslwdiValue,
+                  ("key" .=) <$> _mtslwdiKey])
+
+--
+-- /See:/ 'diskTypesScopedListWarningDataItem' smart constructor.
+data DiskTypesScopedListWarningDataItem = DiskTypesScopedListWarningDataItem
+    { _dtslwdiValue :: !(Maybe Text)
+    , _dtslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtslwdiValue'
+--
+-- * 'dtslwdiKey'
+diskTypesScopedListWarningDataItem
+    :: DiskTypesScopedListWarningDataItem
+diskTypesScopedListWarningDataItem =
+    DiskTypesScopedListWarningDataItem
+    { _dtslwdiValue = Nothing
+    , _dtslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+dtslwdiValue :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)
+dtslwdiValue
+  = lens _dtslwdiValue (\ s a -> s{_dtslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+dtslwdiKey :: Lens' DiskTypesScopedListWarningDataItem (Maybe Text)
+dtslwdiKey
+  = lens _dtslwdiKey (\ s a -> s{_dtslwdiKey = a})
+
+instance FromJSON DiskTypesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "DiskTypesScopedListWarningDataItem"
+              (\ o ->
+                 DiskTypesScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON DiskTypesScopedListWarningDataItem
+         where
+        toJSON DiskTypesScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _dtslwdiValue,
+                  ("key" .=) <$> _dtslwdiKey])
+
+-- | A TargetHttpProxy resource. This resource defines an HTTP proxy.
+--
+-- /See:/ 'targetHTTPProxy' smart constructor.
+data TargetHTTPProxy = TargetHTTPProxy
+    { _thttppURLMap            :: !(Maybe Text)
+    , _thttppKind              :: !Text
+    , _thttppSelfLink          :: !(Maybe Text)
+    , _thttppName              :: !(Maybe Text)
+    , _thttppCreationTimestamp :: !(Maybe Text)
+    , _thttppId                :: !(Maybe (Textual Word64))
+    , _thttppDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttppURLMap'
+--
+-- * 'thttppKind'
+--
+-- * 'thttppSelfLink'
+--
+-- * 'thttppName'
+--
+-- * 'thttppCreationTimestamp'
+--
+-- * 'thttppId'
+--
+-- * 'thttppDescription'
+targetHTTPProxy
+    :: TargetHTTPProxy
+targetHTTPProxy =
+    TargetHTTPProxy
+    { _thttppURLMap = Nothing
+    , _thttppKind = "compute#targetHttpProxy"
+    , _thttppSelfLink = Nothing
+    , _thttppName = Nothing
+    , _thttppCreationTimestamp = Nothing
+    , _thttppId = Nothing
+    , _thttppDescription = Nothing
+    }
+
+-- | URL to the UrlMap resource that defines the mapping from URL to the
+-- BackendService.
+thttppURLMap :: Lens' TargetHTTPProxy (Maybe Text)
+thttppURLMap
+  = lens _thttppURLMap (\ s a -> s{_thttppURLMap = a})
+
+-- | [Output Only] Type of resource. Always compute#operation for Operation
+-- resources.
+thttppKind :: Lens' TargetHTTPProxy Text
+thttppKind
+  = lens _thttppKind (\ s a -> s{_thttppKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+thttppSelfLink :: Lens' TargetHTTPProxy (Maybe Text)
+thttppSelfLink
+  = lens _thttppSelfLink
+      (\ s a -> s{_thttppSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+thttppName :: Lens' TargetHTTPProxy (Maybe Text)
+thttppName
+  = lens _thttppName (\ s a -> s{_thttppName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+thttppCreationTimestamp :: Lens' TargetHTTPProxy (Maybe Text)
+thttppCreationTimestamp
+  = lens _thttppCreationTimestamp
+      (\ s a -> s{_thttppCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+thttppId :: Lens' TargetHTTPProxy (Maybe Word64)
+thttppId
+  = lens _thttppId (\ s a -> s{_thttppId = a}) .
+      mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+thttppDescription :: Lens' TargetHTTPProxy (Maybe Text)
+thttppDescription
+  = lens _thttppDescription
+      (\ s a -> s{_thttppDescription = a})
+
+instance FromJSON TargetHTTPProxy where
+        parseJSON
+          = withObject "TargetHTTPProxy"
+              (\ o ->
+                 TargetHTTPProxy <$>
+                   (o .:? "urlMap") <*>
+                     (o .:? "kind" .!= "compute#targetHttpProxy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON TargetHTTPProxy where
+        toJSON TargetHTTPProxy{..}
+          = object
+              (catMaybes
+                 [("urlMap" .=) <$> _thttppURLMap,
+                  Just ("kind" .= _thttppKind),
+                  ("selfLink" .=) <$> _thttppSelfLink,
+                  ("name" .=) <$> _thttppName,
+                  ("creationTimestamp" .=) <$>
+                    _thttppCreationTimestamp,
+                  ("id" .=) <$> _thttppId,
+                  ("description" .=) <$> _thttppDescription])
+
+-- | A Machine Type resource.
+--
+-- /See:/ 'machineType' smart constructor.
+data MachineType = MachineType
+    { _mtKind                         :: !Text
+    , _mtImageSpaceGb                 :: !(Maybe (Textual Int32))
+    , _mtZone                         :: !(Maybe Text)
+    , _mtSelfLink                     :: !(Maybe Text)
+    , _mtName                         :: !(Maybe Text)
+    , _mtCreationTimestamp            :: !(Maybe Text)
+    , _mtScratchDisks                 :: !(Maybe [MachineTypeScratchDisksItem])
+    , _mtId                           :: !(Maybe (Textual Word64))
+    , _mtGuestCPUs                    :: !(Maybe (Textual Int32))
+    , _mtMaximumPersistentDisksSizeGb :: !(Maybe (Textual Int64))
+    , _mtMaximumPersistentDisks       :: !(Maybe (Textual Int32))
+    , _mtMemoryMb                     :: !(Maybe (Textual Int32))
+    , _mtDescription                  :: !(Maybe Text)
+    , _mtDeprecated                   :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineType' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtKind'
+--
+-- * 'mtImageSpaceGb'
+--
+-- * 'mtZone'
+--
+-- * 'mtSelfLink'
+--
+-- * 'mtName'
+--
+-- * 'mtCreationTimestamp'
+--
+-- * 'mtScratchDisks'
+--
+-- * 'mtId'
+--
+-- * 'mtGuestCPUs'
+--
+-- * 'mtMaximumPersistentDisksSizeGb'
+--
+-- * 'mtMaximumPersistentDisks'
+--
+-- * 'mtMemoryMb'
+--
+-- * 'mtDescription'
+--
+-- * 'mtDeprecated'
+machineType
+    :: MachineType
+machineType =
+    MachineType
+    { _mtKind = "compute#machineType"
+    , _mtImageSpaceGb = Nothing
+    , _mtZone = Nothing
+    , _mtSelfLink = Nothing
+    , _mtName = Nothing
+    , _mtCreationTimestamp = Nothing
+    , _mtScratchDisks = Nothing
+    , _mtId = Nothing
+    , _mtGuestCPUs = Nothing
+    , _mtMaximumPersistentDisksSizeGb = Nothing
+    , _mtMaximumPersistentDisks = Nothing
+    , _mtMemoryMb = Nothing
+    , _mtDescription = Nothing
+    , _mtDeprecated = Nothing
+    }
+
+-- | Type of the resource.
+mtKind :: Lens' MachineType Text
+mtKind = lens _mtKind (\ s a -> s{_mtKind = a})
+
+-- | [Deprecated] This property is deprecated and will never be populated
+-- with any relevant values.
+mtImageSpaceGb :: Lens' MachineType (Maybe Int32)
+mtImageSpaceGb
+  = lens _mtImageSpaceGb
+      (\ s a -> s{_mtImageSpaceGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] The name of the zone where the machine type resides, such
+-- as us-central1-a.
+mtZone :: Lens' MachineType (Maybe Text)
+mtZone = lens _mtZone (\ s a -> s{_mtZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+mtSelfLink :: Lens' MachineType (Maybe Text)
+mtSelfLink
+  = lens _mtSelfLink (\ s a -> s{_mtSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+mtName :: Lens' MachineType (Maybe Text)
+mtName = lens _mtName (\ s a -> s{_mtName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+mtCreationTimestamp :: Lens' MachineType (Maybe Text)
+mtCreationTimestamp
+  = lens _mtCreationTimestamp
+      (\ s a -> s{_mtCreationTimestamp = a})
+
+-- | [Output Only] List of extended scratch disks assigned to the instance.
+mtScratchDisks :: Lens' MachineType [MachineTypeScratchDisksItem]
+mtScratchDisks
+  = lens _mtScratchDisks
+      (\ s a -> s{_mtScratchDisks = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+mtId :: Lens' MachineType (Maybe Word64)
+mtId
+  = lens _mtId (\ s a -> s{_mtId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The tumber of CPUs exposed to the instance.
+mtGuestCPUs :: Lens' MachineType (Maybe Int32)
+mtGuestCPUs
+  = lens _mtGuestCPUs (\ s a -> s{_mtGuestCPUs = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Maximum total persistent disks size (GB) allowed.
+mtMaximumPersistentDisksSizeGb :: Lens' MachineType (Maybe Int64)
+mtMaximumPersistentDisksSizeGb
+  = lens _mtMaximumPersistentDisksSizeGb
+      (\ s a -> s{_mtMaximumPersistentDisksSizeGb = a})
+      . mapping _Coerce
+
+-- | [Output Only] Maximum persistent disks allowed.
+mtMaximumPersistentDisks :: Lens' MachineType (Maybe Int32)
+mtMaximumPersistentDisks
+  = lens _mtMaximumPersistentDisks
+      (\ s a -> s{_mtMaximumPersistentDisks = a})
+      . mapping _Coerce
+
+-- | [Output Only] The amount of physical memory available to the instance,
+-- defined in MB.
+mtMemoryMb :: Lens' MachineType (Maybe Int32)
+mtMemoryMb
+  = lens _mtMemoryMb (\ s a -> s{_mtMemoryMb = a}) .
+      mapping _Coerce
+
+-- | [Output Only] An optional textual description of the resource.
+mtDescription :: Lens' MachineType (Maybe Text)
+mtDescription
+  = lens _mtDescription
+      (\ s a -> s{_mtDescription = a})
+
+-- | [Output Only] The deprecation status associated with this machine type.
+mtDeprecated :: Lens' MachineType (Maybe DeprecationStatus)
+mtDeprecated
+  = lens _mtDeprecated (\ s a -> s{_mtDeprecated = a})
+
+instance FromJSON MachineType where
+        parseJSON
+          = withObject "MachineType"
+              (\ o ->
+                 MachineType <$>
+                   (o .:? "kind" .!= "compute#machineType") <*>
+                     (o .:? "imageSpaceGb")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "scratchDisks" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "guestCpus")
+                     <*> (o .:? "maximumPersistentDisksSizeGb")
+                     <*> (o .:? "maximumPersistentDisks")
+                     <*> (o .:? "memoryMb")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON MachineType where
+        toJSON MachineType{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _mtKind),
+                  ("imageSpaceGb" .=) <$> _mtImageSpaceGb,
+                  ("zone" .=) <$> _mtZone,
+                  ("selfLink" .=) <$> _mtSelfLink,
+                  ("name" .=) <$> _mtName,
+                  ("creationTimestamp" .=) <$> _mtCreationTimestamp,
+                  ("scratchDisks" .=) <$> _mtScratchDisks,
+                  ("id" .=) <$> _mtId,
+                  ("guestCpus" .=) <$> _mtGuestCPUs,
+                  ("maximumPersistentDisksSizeGb" .=) <$>
+                    _mtMaximumPersistentDisksSizeGb,
+                  ("maximumPersistentDisks" .=) <$>
+                    _mtMaximumPersistentDisks,
+                  ("memoryMb" .=) <$> _mtMemoryMb,
+                  ("description" .=) <$> _mtDescription,
+                  ("deprecated" .=) <$> _mtDeprecated])
+
+-- | [Output Only] If errors are generated during processing of the
+-- operation, this field will be populated.
+--
+-- /See:/ 'operationError' smart constructor.
+newtype OperationError = OperationError
+    { _oeErrors :: Maybe [OperationErrorErrorsItem]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationError' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oeErrors'
+operationError
+    :: OperationError
+operationError =
+    OperationError
+    { _oeErrors = Nothing
+    }
+
+-- | [Output Only] The array of errors encountered while processing this
+-- operation.
+oeErrors :: Lens' OperationError [OperationErrorErrorsItem]
+oeErrors
+  = lens _oeErrors (\ s a -> s{_oeErrors = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON OperationError where
+        parseJSON
+          = withObject "OperationError"
+              (\ o ->
+                 OperationError <$> (o .:? "errors" .!= mempty))
+
+instance ToJSON OperationError where
+        toJSON OperationError{..}
+          = object (catMaybes [("errors" .=) <$> _oeErrors])
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'targetInstancesScopedListWarning' smart constructor.
+data TargetInstancesScopedListWarning = TargetInstancesScopedListWarning
+    { _tislwData    :: !(Maybe [TargetInstancesScopedListWarningDataItem])
+    , _tislwCode    :: !(Maybe TargetInstancesScopedListWarningCode)
+    , _tislwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tislwData'
+--
+-- * 'tislwCode'
+--
+-- * 'tislwMessage'
+targetInstancesScopedListWarning
+    :: TargetInstancesScopedListWarning
+targetInstancesScopedListWarning =
+    TargetInstancesScopedListWarning
+    { _tislwData = Nothing
+    , _tislwCode = Nothing
+    , _tislwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+tislwData :: Lens' TargetInstancesScopedListWarning [TargetInstancesScopedListWarningDataItem]
+tislwData
+  = lens _tislwData (\ s a -> s{_tislwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+tislwCode :: Lens' TargetInstancesScopedListWarning (Maybe TargetInstancesScopedListWarningCode)
+tislwCode
+  = lens _tislwCode (\ s a -> s{_tislwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+tislwMessage :: Lens' TargetInstancesScopedListWarning (Maybe Text)
+tislwMessage
+  = lens _tislwMessage (\ s a -> s{_tislwMessage = a})
+
+instance FromJSON TargetInstancesScopedListWarning
+         where
+        parseJSON
+          = withObject "TargetInstancesScopedListWarning"
+              (\ o ->
+                 TargetInstancesScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetInstancesScopedListWarning
+         where
+        toJSON TargetInstancesScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tislwData,
+                  ("code" .=) <$> _tislwCode,
+                  ("message" .=) <$> _tislwMessage])
+
+--
+-- /See:/ 'autoscalersScopedListWarningDataItem' smart constructor.
+data AutoscalersScopedListWarningDataItem = AutoscalersScopedListWarningDataItem
+    { _aValue :: !(Maybe Text)
+    , _aKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aValue'
+--
+-- * 'aKey'
+autoscalersScopedListWarningDataItem
+    :: AutoscalersScopedListWarningDataItem
+autoscalersScopedListWarningDataItem =
+    AutoscalersScopedListWarningDataItem
+    { _aValue = Nothing
+    , _aKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+aValue :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)
+aValue = lens _aValue (\ s a -> s{_aValue = a})
+
+-- | [Output Only] A key for the warning data.
+aKey :: Lens' AutoscalersScopedListWarningDataItem (Maybe Text)
+aKey = lens _aKey (\ s a -> s{_aKey = a})
+
+instance FromJSON
+         AutoscalersScopedListWarningDataItem where
+        parseJSON
+          = withObject "AutoscalersScopedListWarningDataItem"
+              (\ o ->
+                 AutoscalersScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON AutoscalersScopedListWarningDataItem
+         where
+        toJSON AutoscalersScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _aValue, ("key" .=) <$> _aKey])
+
+--
+-- /See:/ 'instanceGroupsListInstances' smart constructor.
+data InstanceGroupsListInstances = InstanceGroupsListInstances
+    { _igliNextPageToken :: !(Maybe Text)
+    , _igliKind          :: !Text
+    , _igliItems         :: !(Maybe [InstanceWithNamedPorts])
+    , _igliSelfLink      :: !(Maybe Text)
+    , _igliId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igliNextPageToken'
+--
+-- * 'igliKind'
+--
+-- * 'igliItems'
+--
+-- * 'igliSelfLink'
+--
+-- * 'igliId'
+instanceGroupsListInstances
+    :: InstanceGroupsListInstances
+instanceGroupsListInstances =
+    InstanceGroupsListInstances
+    { _igliNextPageToken = Nothing
+    , _igliKind = "compute#instanceGroupsListInstances"
+    , _igliItems = Nothing
+    , _igliSelfLink = Nothing
+    , _igliId = Nothing
+    }
+
+-- | [Output Only] A token that is used to continue a truncated list request.
+igliNextPageToken :: Lens' InstanceGroupsListInstances (Maybe Text)
+igliNextPageToken
+  = lens _igliNextPageToken
+      (\ s a -> s{_igliNextPageToken = a})
+
+-- | [Output Only] The resource type, which is always
+-- compute#instanceGroupsListInstances for lists of instance groups.
+igliKind :: Lens' InstanceGroupsListInstances Text
+igliKind = lens _igliKind (\ s a -> s{_igliKind = a})
+
+-- | [Output Only] A list of instances and any named ports that are assigned
+-- to those instances.
+igliItems :: Lens' InstanceGroupsListInstances [InstanceWithNamedPorts]
+igliItems
+  = lens _igliItems (\ s a -> s{_igliItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The URL for this list of instance groups. The server
+-- generates this URL.
+igliSelfLink :: Lens' InstanceGroupsListInstances (Maybe Text)
+igliSelfLink
+  = lens _igliSelfLink (\ s a -> s{_igliSelfLink = a})
+
+-- | [Output Only] A unique identifier for this list of instance groups. The
+-- server generates this identifier.
+igliId :: Lens' InstanceGroupsListInstances (Maybe Text)
+igliId = lens _igliId (\ s a -> s{_igliId = a})
+
+instance FromJSON InstanceGroupsListInstances where
+        parseJSON
+          = withObject "InstanceGroupsListInstances"
+              (\ o ->
+                 InstanceGroupsListInstances <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#instanceGroupsListInstances")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceGroupsListInstances where
+        toJSON InstanceGroupsListInstances{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _igliNextPageToken,
+                  Just ("kind" .= _igliKind),
+                  ("items" .=) <$> _igliItems,
+                  ("selfLink" .=) <$> _igliSelfLink,
+                  ("id" .=) <$> _igliId])
+
+--
+-- /See:/ 'autoscaler' smart constructor.
+data Autoscaler = Autoscaler
+    { _aaKind              :: !Text
+    , _aaZone              :: !(Maybe Text)
+    , _aaSelfLink          :: !(Maybe Text)
+    , _aaName              :: !(Maybe Text)
+    , _aaCreationTimestamp :: !(Maybe Text)
+    , _aaAutoscalingPolicy :: !(Maybe AutoscalingPolicy)
+    , _aaId                :: !(Maybe (Textual Word64))
+    , _aaDescription       :: !(Maybe Text)
+    , _aaTarget            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Autoscaler' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaKind'
+--
+-- * 'aaZone'
+--
+-- * 'aaSelfLink'
+--
+-- * 'aaName'
+--
+-- * 'aaCreationTimestamp'
+--
+-- * 'aaAutoscalingPolicy'
+--
+-- * 'aaId'
+--
+-- * 'aaDescription'
+--
+-- * 'aaTarget'
+autoscaler
+    :: Autoscaler
+autoscaler =
+    Autoscaler
+    { _aaKind = "compute#autoscaler"
+    , _aaZone = Nothing
+    , _aaSelfLink = Nothing
+    , _aaName = Nothing
+    , _aaCreationTimestamp = Nothing
+    , _aaAutoscalingPolicy = Nothing
+    , _aaId = Nothing
+    , _aaDescription = Nothing
+    , _aaTarget = Nothing
+    }
+
+-- | Type of the resource.
+aaKind :: Lens' Autoscaler Text
+aaKind = lens _aaKind (\ s a -> s{_aaKind = a})
+
+-- | [Output Only] URL of the zone where the instance group resides.
+aaZone :: Lens' Autoscaler (Maybe Text)
+aaZone = lens _aaZone (\ s a -> s{_aaZone = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+aaSelfLink :: Lens' Autoscaler (Maybe Text)
+aaSelfLink
+  = lens _aaSelfLink (\ s a -> s{_aaSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+aaName :: Lens' Autoscaler (Maybe Text)
+aaName = lens _aaName (\ s a -> s{_aaName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+aaCreationTimestamp :: Lens' Autoscaler (Maybe Text)
+aaCreationTimestamp
+  = lens _aaCreationTimestamp
+      (\ s a -> s{_aaCreationTimestamp = a})
+
+-- | Autoscaling configuration.
+aaAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)
+aaAutoscalingPolicy
+  = lens _aaAutoscalingPolicy
+      (\ s a -> s{_aaAutoscalingPolicy = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+aaId :: Lens' Autoscaler (Maybe Word64)
+aaId
+  = lens _aaId (\ s a -> s{_aaId = a}) .
+      mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+aaDescription :: Lens' Autoscaler (Maybe Text)
+aaDescription
+  = lens _aaDescription
+      (\ s a -> s{_aaDescription = a})
+
+-- | URL of Instance Group Manager or Replica Pool which will be controlled
+-- by Autoscaler.
+aaTarget :: Lens' Autoscaler (Maybe Text)
+aaTarget = lens _aaTarget (\ s a -> s{_aaTarget = a})
+
+instance FromJSON Autoscaler where
+        parseJSON
+          = withObject "Autoscaler"
+              (\ o ->
+                 Autoscaler <$>
+                   (o .:? "kind" .!= "compute#autoscaler") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "autoscalingPolicy")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "target"))
+
+instance ToJSON Autoscaler where
+        toJSON Autoscaler{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _aaKind), ("zone" .=) <$> _aaZone,
+                  ("selfLink" .=) <$> _aaSelfLink,
+                  ("name" .=) <$> _aaName,
+                  ("creationTimestamp" .=) <$> _aaCreationTimestamp,
+                  ("autoscalingPolicy" .=) <$> _aaAutoscalingPolicy,
+                  ("id" .=) <$> _aaId,
+                  ("description" .=) <$> _aaDescription,
+                  ("target" .=) <$> _aaTarget])
+
+-- | [Output Only] Informational warning which replaces the list of disks
+-- when the list is empty.
+--
+-- /See:/ 'disksScopedListWarning' smart constructor.
+data DisksScopedListWarning = DisksScopedListWarning
+    { _dslwData    :: !(Maybe [DisksScopedListWarningDataItem])
+    , _dslwCode    :: !(Maybe DisksScopedListWarningCode)
+    , _dslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslwData'
+--
+-- * 'dslwCode'
+--
+-- * 'dslwMessage'
+disksScopedListWarning
+    :: DisksScopedListWarning
+disksScopedListWarning =
+    DisksScopedListWarning
+    { _dslwData = Nothing
+    , _dslwCode = Nothing
+    , _dslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+dslwData :: Lens' DisksScopedListWarning [DisksScopedListWarningDataItem]
+dslwData
+  = lens _dslwData (\ s a -> s{_dslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+dslwCode :: Lens' DisksScopedListWarning (Maybe DisksScopedListWarningCode)
+dslwCode = lens _dslwCode (\ s a -> s{_dslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+dslwMessage :: Lens' DisksScopedListWarning (Maybe Text)
+dslwMessage
+  = lens _dslwMessage (\ s a -> s{_dslwMessage = a})
+
+instance FromJSON DisksScopedListWarning where
+        parseJSON
+          = withObject "DisksScopedListWarning"
+              (\ o ->
+                 DisksScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON DisksScopedListWarning where
+        toJSON DisksScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _dslwData,
+                  ("code" .=) <$> _dslwCode,
+                  ("message" .=) <$> _dslwMessage])
+
+-- | A map of scoped target vpn gateway lists.
+--
+-- /See:/ 'targetVPNGatewayAggregatedListItems' smart constructor.
+newtype TargetVPNGatewayAggregatedListItems = TargetVPNGatewayAggregatedListItems
+    { _tvgaliAddtional :: HashMap Text TargetVPNGatewaysScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgaliAddtional'
+targetVPNGatewayAggregatedListItems
+    :: HashMap Text TargetVPNGatewaysScopedList -- ^ 'tvgaliAddtional'
+    -> TargetVPNGatewayAggregatedListItems
+targetVPNGatewayAggregatedListItems pTvgaliAddtional_ =
+    TargetVPNGatewayAggregatedListItems
+    { _tvgaliAddtional = _Coerce # pTvgaliAddtional_
+    }
+
+-- | [Output Only] Name of the scope containing this set of target vpn
+-- gateways.
+tvgaliAddtional :: Lens' TargetVPNGatewayAggregatedListItems (HashMap Text TargetVPNGatewaysScopedList)
+tvgaliAddtional
+  = lens _tvgaliAddtional
+      (\ s a -> s{_tvgaliAddtional = a})
+      . _Coerce
+
+instance FromJSON TargetVPNGatewayAggregatedListItems
+         where
+        parseJSON
+          = withObject "TargetVPNGatewayAggregatedListItems"
+              (\ o ->
+                 TargetVPNGatewayAggregatedListItems <$>
+                   (parseJSONObject o))
+
+instance ToJSON TargetVPNGatewayAggregatedListItems
+         where
+        toJSON = toJSON . _tvgaliAddtional
+
+-- | Informational warning which replaces the list of addresses when the list
+-- is empty.
+--
+-- /See:/ 'targetPoolsScopedListWarning' smart constructor.
+data TargetPoolsScopedListWarning = TargetPoolsScopedListWarning
+    { _tpslwData    :: !(Maybe [TargetPoolsScopedListWarningDataItem])
+    , _tpslwCode    :: !(Maybe TargetPoolsScopedListWarningCode)
+    , _tpslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpslwData'
+--
+-- * 'tpslwCode'
+--
+-- * 'tpslwMessage'
+targetPoolsScopedListWarning
+    :: TargetPoolsScopedListWarning
+targetPoolsScopedListWarning =
+    TargetPoolsScopedListWarning
+    { _tpslwData = Nothing
+    , _tpslwCode = Nothing
+    , _tpslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+tpslwData :: Lens' TargetPoolsScopedListWarning [TargetPoolsScopedListWarningDataItem]
+tpslwData
+  = lens _tpslwData (\ s a -> s{_tpslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+tpslwCode :: Lens' TargetPoolsScopedListWarning (Maybe TargetPoolsScopedListWarningCode)
+tpslwCode
+  = lens _tpslwCode (\ s a -> s{_tpslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+tpslwMessage :: Lens' TargetPoolsScopedListWarning (Maybe Text)
+tpslwMessage
+  = lens _tpslwMessage (\ s a -> s{_tpslwMessage = a})
+
+instance FromJSON TargetPoolsScopedListWarning where
+        parseJSON
+          = withObject "TargetPoolsScopedListWarning"
+              (\ o ->
+                 TargetPoolsScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON TargetPoolsScopedListWarning where
+        toJSON TargetPoolsScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _tpslwData,
+                  ("code" .=) <$> _tpslwCode,
+                  ("message" .=) <$> _tpslwMessage])
+
+--
+-- /See:/ 'healthStatus' smart constructor.
+data HealthStatus = HealthStatus
+    { _hsIPAddress   :: !(Maybe Text)
+    , _hsHealthState :: !(Maybe HealthStatusHealthState)
+    , _hsPort        :: !(Maybe (Textual Int32))
+    , _hsInstance    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HealthStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hsIPAddress'
+--
+-- * 'hsHealthState'
+--
+-- * 'hsPort'
+--
+-- * 'hsInstance'
+healthStatus
+    :: HealthStatus
+healthStatus =
+    HealthStatus
+    { _hsIPAddress = Nothing
+    , _hsHealthState = Nothing
+    , _hsPort = Nothing
+    , _hsInstance = Nothing
+    }
+
+-- | The IP address represented by this resource.
+hsIPAddress :: Lens' HealthStatus (Maybe Text)
+hsIPAddress
+  = lens _hsIPAddress (\ s a -> s{_hsIPAddress = a})
+
+-- | Health state of the instance.
+hsHealthState :: Lens' HealthStatus (Maybe HealthStatusHealthState)
+hsHealthState
+  = lens _hsHealthState
+      (\ s a -> s{_hsHealthState = a})
+
+-- | The port on the instance.
+hsPort :: Lens' HealthStatus (Maybe Int32)
+hsPort
+  = lens _hsPort (\ s a -> s{_hsPort = a}) .
+      mapping _Coerce
+
+-- | URL of the instance resource.
+hsInstance :: Lens' HealthStatus (Maybe Text)
+hsInstance
+  = lens _hsInstance (\ s a -> s{_hsInstance = a})
+
+instance FromJSON HealthStatus where
+        parseJSON
+          = withObject "HealthStatus"
+              (\ o ->
+                 HealthStatus <$>
+                   (o .:? "ipAddress") <*> (o .:? "healthState") <*>
+                     (o .:? "port")
+                     <*> (o .:? "instance"))
+
+instance ToJSON HealthStatus where
+        toJSON HealthStatus{..}
+          = object
+              (catMaybes
+                 [("ipAddress" .=) <$> _hsIPAddress,
+                  ("healthState" .=) <$> _hsHealthState,
+                  ("port" .=) <$> _hsPort,
+                  ("instance" .=) <$> _hsInstance])
+
+-- | Region resource.
+--
+-- /See:/ 'region' smart constructor.
+data Region = Region
+    { _rrStatus            :: !(Maybe RegionStatus)
+    , _rrZones             :: !(Maybe [Text])
+    , _rrKind              :: !Text
+    , _rrSelfLink          :: !(Maybe Text)
+    , _rrName              :: !(Maybe Text)
+    , _rrCreationTimestamp :: !(Maybe Text)
+    , _rrQuotas            :: !(Maybe [Quota])
+    , _rrId                :: !(Maybe (Textual Word64))
+    , _rrDescription       :: !(Maybe Text)
+    , _rrDeprecated        :: !(Maybe DeprecationStatus)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Region' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrStatus'
+--
+-- * 'rrZones'
+--
+-- * 'rrKind'
+--
+-- * 'rrSelfLink'
+--
+-- * 'rrName'
+--
+-- * 'rrCreationTimestamp'
+--
+-- * 'rrQuotas'
+--
+-- * 'rrId'
+--
+-- * 'rrDescription'
+--
+-- * 'rrDeprecated'
+region
+    :: Region
+region =
+    Region
+    { _rrStatus = Nothing
+    , _rrZones = Nothing
+    , _rrKind = "compute#region"
+    , _rrSelfLink = Nothing
+    , _rrName = Nothing
+    , _rrCreationTimestamp = Nothing
+    , _rrQuotas = Nothing
+    , _rrId = Nothing
+    , _rrDescription = Nothing
+    , _rrDeprecated = Nothing
+    }
+
+-- | [Output Only] Status of the region, either UP or DOWN.
+rrStatus :: Lens' Region (Maybe RegionStatus)
+rrStatus = lens _rrStatus (\ s a -> s{_rrStatus = a})
+
+-- | [Output Only] A list of zones available in this region, in the form of
+-- resource URLs.
+rrZones :: Lens' Region [Text]
+rrZones
+  = lens _rrZones (\ s a -> s{_rrZones = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#region for regions.
+rrKind :: Lens' Region Text
+rrKind = lens _rrKind (\ s a -> s{_rrKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+rrSelfLink :: Lens' Region (Maybe Text)
+rrSelfLink
+  = lens _rrSelfLink (\ s a -> s{_rrSelfLink = a})
+
+-- | [Output Only] Name of the resource.
+rrName :: Lens' Region (Maybe Text)
+rrName = lens _rrName (\ s a -> s{_rrName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+rrCreationTimestamp :: Lens' Region (Maybe Text)
+rrCreationTimestamp
+  = lens _rrCreationTimestamp
+      (\ s a -> s{_rrCreationTimestamp = a})
+
+-- | [Output Only] Quotas assigned to this region.
+rrQuotas :: Lens' Region [Quota]
+rrQuotas
+  = lens _rrQuotas (\ s a -> s{_rrQuotas = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Unique identifier for the resource; defined by the server
+-- .
+rrId :: Lens' Region (Maybe Word64)
+rrId
+  = lens _rrId (\ s a -> s{_rrId = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Textual description of the resource.
+rrDescription :: Lens' Region (Maybe Text)
+rrDescription
+  = lens _rrDescription
+      (\ s a -> s{_rrDescription = a})
+
+-- | [Output Only] The deprecation status associated with this region.
+rrDeprecated :: Lens' Region (Maybe DeprecationStatus)
+rrDeprecated
+  = lens _rrDeprecated (\ s a -> s{_rrDeprecated = a})
+
+instance FromJSON Region where
+        parseJSON
+          = withObject "Region"
+              (\ o ->
+                 Region <$>
+                   (o .:? "status") <*> (o .:? "zones" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#region")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "quotas" .!= mempty)
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "deprecated"))
+
+instance ToJSON Region where
+        toJSON Region{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _rrStatus,
+                  ("zones" .=) <$> _rrZones, Just ("kind" .= _rrKind),
+                  ("selfLink" .=) <$> _rrSelfLink,
+                  ("name" .=) <$> _rrName,
+                  ("creationTimestamp" .=) <$> _rrCreationTimestamp,
+                  ("quotas" .=) <$> _rrQuotas, ("id" .=) <$> _rrId,
+                  ("description" .=) <$> _rrDescription,
+                  ("deprecated" .=) <$> _rrDeprecated])
+
+--
+-- /See:/ 'vpnTunnel' smart constructor.
+data VPNTunnel = VPNTunnel
+    { _vtDetailedStatus    :: !(Maybe Text)
+    , _vtStatus            :: !(Maybe VPNTunnelStatus)
+    , _vtKind              :: !Text
+    , _vtPeerIP            :: !(Maybe Text)
+    , _vtTargetVPNGateway  :: !(Maybe Text)
+    , _vtSelfLink          :: !(Maybe Text)
+    , _vtSharedSecret      :: !(Maybe Text)
+    , _vtName              :: !(Maybe Text)
+    , _vtCreationTimestamp :: !(Maybe Text)
+    , _vtSharedSecretHash  :: !(Maybe Text)
+    , _vtId                :: !(Maybe (Textual Word64))
+    , _vtIkeVersion        :: !(Maybe (Textual Int32))
+    , _vtRegion            :: !(Maybe Text)
+    , _vtDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtDetailedStatus'
+--
+-- * 'vtStatus'
+--
+-- * 'vtKind'
+--
+-- * 'vtPeerIP'
+--
+-- * 'vtTargetVPNGateway'
+--
+-- * 'vtSelfLink'
+--
+-- * 'vtSharedSecret'
+--
+-- * 'vtName'
+--
+-- * 'vtCreationTimestamp'
+--
+-- * 'vtSharedSecretHash'
+--
+-- * 'vtId'
+--
+-- * 'vtIkeVersion'
+--
+-- * 'vtRegion'
+--
+-- * 'vtDescription'
+vpnTunnel
+    :: VPNTunnel
+vpnTunnel =
+    VPNTunnel
+    { _vtDetailedStatus = Nothing
+    , _vtStatus = Nothing
+    , _vtKind = "compute#vpnTunnel"
+    , _vtPeerIP = Nothing
+    , _vtTargetVPNGateway = Nothing
+    , _vtSelfLink = Nothing
+    , _vtSharedSecret = Nothing
+    , _vtName = Nothing
+    , _vtCreationTimestamp = Nothing
+    , _vtSharedSecretHash = Nothing
+    , _vtId = Nothing
+    , _vtIkeVersion = Nothing
+    , _vtRegion = Nothing
+    , _vtDescription = Nothing
+    }
+
+-- | [Output Only] Detailed status message for the VPN tunnel.
+vtDetailedStatus :: Lens' VPNTunnel (Maybe Text)
+vtDetailedStatus
+  = lens _vtDetailedStatus
+      (\ s a -> s{_vtDetailedStatus = a})
+
+-- | [Output Only] The status of the VPN tunnel.
+vtStatus :: Lens' VPNTunnel (Maybe VPNTunnelStatus)
+vtStatus = lens _vtStatus (\ s a -> s{_vtStatus = a})
+
+-- | [Output Only] Type of resource. Always compute#vpnTunnel for VPN
+-- tunnels.
+vtKind :: Lens' VPNTunnel Text
+vtKind = lens _vtKind (\ s a -> s{_vtKind = a})
+
+-- | IP address of the peer VPN gateway.
+vtPeerIP :: Lens' VPNTunnel (Maybe Text)
+vtPeerIP = lens _vtPeerIP (\ s a -> s{_vtPeerIP = a})
+
+-- | URL of the VPN gateway to which this VPN tunnel is associated. Provided
+-- by the client when the VPN tunnel is created.
+vtTargetVPNGateway :: Lens' VPNTunnel (Maybe Text)
+vtTargetVPNGateway
+  = lens _vtTargetVPNGateway
+      (\ s a -> s{_vtTargetVPNGateway = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+vtSelfLink :: Lens' VPNTunnel (Maybe Text)
+vtSelfLink
+  = lens _vtSelfLink (\ s a -> s{_vtSelfLink = a})
+
+-- | Shared secret used to set the secure session between the GCE VPN gateway
+-- and the peer VPN gateway.
+vtSharedSecret :: Lens' VPNTunnel (Maybe Text)
+vtSharedSecret
+  = lens _vtSharedSecret
+      (\ s a -> s{_vtSharedSecret = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+vtName :: Lens' VPNTunnel (Maybe Text)
+vtName = lens _vtName (\ s a -> s{_vtName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+vtCreationTimestamp :: Lens' VPNTunnel (Maybe Text)
+vtCreationTimestamp
+  = lens _vtCreationTimestamp
+      (\ s a -> s{_vtCreationTimestamp = a})
+
+-- | Hash of the shared secret.
+vtSharedSecretHash :: Lens' VPNTunnel (Maybe Text)
+vtSharedSecretHash
+  = lens _vtSharedSecretHash
+      (\ s a -> s{_vtSharedSecretHash = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+vtId :: Lens' VPNTunnel (Maybe Word64)
+vtId
+  = lens _vtId (\ s a -> s{_vtId = a}) .
+      mapping _Coerce
+
+-- | IKE protocol version to use when establishing the VPN tunnel with peer
+-- VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.
+vtIkeVersion :: Lens' VPNTunnel (Maybe Int32)
+vtIkeVersion
+  = lens _vtIkeVersion (\ s a -> s{_vtIkeVersion = a})
+      . mapping _Coerce
+
+-- | [Output Only] URL of the region where the VPN tunnel resides.
+vtRegion :: Lens' VPNTunnel (Maybe Text)
+vtRegion = lens _vtRegion (\ s a -> s{_vtRegion = a})
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+vtDescription :: Lens' VPNTunnel (Maybe Text)
+vtDescription
+  = lens _vtDescription
+      (\ s a -> s{_vtDescription = a})
+
+instance FromJSON VPNTunnel where
+        parseJSON
+          = withObject "VPNTunnel"
+              (\ o ->
+                 VPNTunnel <$>
+                   (o .:? "detailedStatus") <*> (o .:? "status") <*>
+                     (o .:? "kind" .!= "compute#vpnTunnel")
+                     <*> (o .:? "peerIp")
+                     <*> (o .:? "targetVpnGateway")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "sharedSecret")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "sharedSecretHash")
+                     <*> (o .:? "id")
+                     <*> (o .:? "ikeVersion")
+                     <*> (o .:? "region")
+                     <*> (o .:? "description"))
+
+instance ToJSON VPNTunnel where
+        toJSON VPNTunnel{..}
+          = object
+              (catMaybes
+                 [("detailedStatus" .=) <$> _vtDetailedStatus,
+                  ("status" .=) <$> _vtStatus,
+                  Just ("kind" .= _vtKind),
+                  ("peerIp" .=) <$> _vtPeerIP,
+                  ("targetVpnGateway" .=) <$> _vtTargetVPNGateway,
+                  ("selfLink" .=) <$> _vtSelfLink,
+                  ("sharedSecret" .=) <$> _vtSharedSecret,
+                  ("name" .=) <$> _vtName,
+                  ("creationTimestamp" .=) <$> _vtCreationTimestamp,
+                  ("sharedSecretHash" .=) <$> _vtSharedSecretHash,
+                  ("id" .=) <$> _vtId,
+                  ("ikeVersion" .=) <$> _vtIkeVersion,
+                  ("region" .=) <$> _vtRegion,
+                  ("description" .=) <$> _vtDescription])
+
+-- | [Output Only] Informational warning which replaces the list of
+-- operations when the list is empty.
+--
+-- /See:/ 'operationsScopedListWarning' smart constructor.
+data OperationsScopedListWarning = OperationsScopedListWarning
+    { _oslwData    :: !(Maybe [OperationsScopedListWarningDataItem])
+    , _oslwCode    :: !(Maybe OperationsScopedListWarningCode)
+    , _oslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oslwData'
+--
+-- * 'oslwCode'
+--
+-- * 'oslwMessage'
+operationsScopedListWarning
+    :: OperationsScopedListWarning
+operationsScopedListWarning =
+    OperationsScopedListWarning
+    { _oslwData = Nothing
+    , _oslwCode = Nothing
+    , _oslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+oslwData :: Lens' OperationsScopedListWarning [OperationsScopedListWarningDataItem]
+oslwData
+  = lens _oslwData (\ s a -> s{_oslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+oslwCode :: Lens' OperationsScopedListWarning (Maybe OperationsScopedListWarningCode)
+oslwCode = lens _oslwCode (\ s a -> s{_oslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+oslwMessage :: Lens' OperationsScopedListWarning (Maybe Text)
+oslwMessage
+  = lens _oslwMessage (\ s a -> s{_oslwMessage = a})
+
+instance FromJSON OperationsScopedListWarning where
+        parseJSON
+          = withObject "OperationsScopedListWarning"
+              (\ o ->
+                 OperationsScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationsScopedListWarning where
+        toJSON OperationsScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _oslwData,
+                  ("code" .=) <$> _oslwCode,
+                  ("message" .=) <$> _oslwMessage])
+
+-- | Sets the scheduling options for an Instance.
+--
+-- /See:/ 'scheduling' smart constructor.
+data Scheduling = Scheduling
+    { _sAutomaticRestart  :: !(Maybe Bool)
+    , _sOnHostMaintenance :: !(Maybe SchedulingOnHostMaintenance)
+    , _sPreemptible       :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Scheduling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sAutomaticRestart'
+--
+-- * 'sOnHostMaintenance'
+--
+-- * 'sPreemptible'
+scheduling
+    :: Scheduling
+scheduling =
+    Scheduling
+    { _sAutomaticRestart = Nothing
+    , _sOnHostMaintenance = Nothing
+    , _sPreemptible = Nothing
+    }
+
+-- | Specifies whether the instance should be automatically restarted if it
+-- is terminated by Compute Engine (not terminated by a user). You can only
+-- set the automatic restart option for standard instances. Preemptible
+-- instances cannot be automatically restarted.
+sAutomaticRestart :: Lens' Scheduling (Maybe Bool)
+sAutomaticRestart
+  = lens _sAutomaticRestart
+      (\ s a -> s{_sAutomaticRestart = a})
+
+-- | Defines the maintenance behavior for this instance. For standard
+-- instances, the default behavior is MIGRATE. For preemptible instances,
+-- the default and only possible behavior is TERMINATE. For more
+-- information, see Setting maintenance behavior.
+sOnHostMaintenance :: Lens' Scheduling (Maybe SchedulingOnHostMaintenance)
+sOnHostMaintenance
+  = lens _sOnHostMaintenance
+      (\ s a -> s{_sOnHostMaintenance = a})
+
+-- | Whether the instance is preemptible.
+sPreemptible :: Lens' Scheduling (Maybe Bool)
+sPreemptible
+  = lens _sPreemptible (\ s a -> s{_sPreemptible = a})
+
+instance FromJSON Scheduling where
+        parseJSON
+          = withObject "Scheduling"
+              (\ o ->
+                 Scheduling <$>
+                   (o .:? "automaticRestart") <*>
+                     (o .:? "onHostMaintenance")
+                     <*> (o .:? "preemptible"))
+
+instance ToJSON Scheduling where
+        toJSON Scheduling{..}
+          = object
+              (catMaybes
+                 [("automaticRestart" .=) <$> _sAutomaticRestart,
+                  ("onHostMaintenance" .=) <$> _sOnHostMaintenance,
+                  ("preemptible" .=) <$> _sPreemptible])
+
+--
+-- /See:/ 'vpnTunnelsScopedListWarningDataItem' smart constructor.
+data VPNTunnelsScopedListWarningDataItem = VPNTunnelsScopedListWarningDataItem
+    { _vtslwdiValue :: !(Maybe Text)
+    , _vtslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtslwdiValue'
+--
+-- * 'vtslwdiKey'
+vpnTunnelsScopedListWarningDataItem
+    :: VPNTunnelsScopedListWarningDataItem
+vpnTunnelsScopedListWarningDataItem =
+    VPNTunnelsScopedListWarningDataItem
+    { _vtslwdiValue = Nothing
+    , _vtslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+vtslwdiValue :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)
+vtslwdiValue
+  = lens _vtslwdiValue (\ s a -> s{_vtslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+vtslwdiKey :: Lens' VPNTunnelsScopedListWarningDataItem (Maybe Text)
+vtslwdiKey
+  = lens _vtslwdiKey (\ s a -> s{_vtslwdiKey = a})
+
+instance FromJSON VPNTunnelsScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "VPNTunnelsScopedListWarningDataItem"
+              (\ o ->
+                 VPNTunnelsScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON VPNTunnelsScopedListWarningDataItem
+         where
+        toJSON VPNTunnelsScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _vtslwdiValue,
+                  ("key" .=) <$> _vtslwdiKey])
+
+-- | Informational warning which replaces the list of forwarding rules when
+-- the list is empty.
+--
+-- /See:/ 'forwardingRulesScopedListWarning' smart constructor.
+data ForwardingRulesScopedListWarning = ForwardingRulesScopedListWarning
+    { _frslwData    :: !(Maybe [ForwardingRulesScopedListWarningDataItem])
+    , _frslwCode    :: !(Maybe ForwardingRulesScopedListWarningCode)
+    , _frslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frslwData'
+--
+-- * 'frslwCode'
+--
+-- * 'frslwMessage'
+forwardingRulesScopedListWarning
+    :: ForwardingRulesScopedListWarning
+forwardingRulesScopedListWarning =
+    ForwardingRulesScopedListWarning
+    { _frslwData = Nothing
+    , _frslwCode = Nothing
+    , _frslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+frslwData :: Lens' ForwardingRulesScopedListWarning [ForwardingRulesScopedListWarningDataItem]
+frslwData
+  = lens _frslwData (\ s a -> s{_frslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+frslwCode :: Lens' ForwardingRulesScopedListWarning (Maybe ForwardingRulesScopedListWarningCode)
+frslwCode
+  = lens _frslwCode (\ s a -> s{_frslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+frslwMessage :: Lens' ForwardingRulesScopedListWarning (Maybe Text)
+frslwMessage
+  = lens _frslwMessage (\ s a -> s{_frslwMessage = a})
+
+instance FromJSON ForwardingRulesScopedListWarning
+         where
+        parseJSON
+          = withObject "ForwardingRulesScopedListWarning"
+              (\ o ->
+                 ForwardingRulesScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON ForwardingRulesScopedListWarning
+         where
+        toJSON ForwardingRulesScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _frslwData,
+                  ("code" .=) <$> _frslwCode,
+                  ("message" .=) <$> _frslwMessage])
+
+-- | Contains a list of HttpHealthCheck resources.
+--
+-- /See:/ 'hTTPHealthCheckList' smart constructor.
+data HTTPHealthCheckList = HTTPHealthCheckList
+    { _httphclNextPageToken :: !(Maybe Text)
+    , _httphclKind          :: !Text
+    , _httphclItems         :: !(Maybe [HTTPHealthCheck])
+    , _httphclSelfLink      :: !(Maybe Text)
+    , _httphclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthCheckList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphclNextPageToken'
+--
+-- * 'httphclKind'
+--
+-- * 'httphclItems'
+--
+-- * 'httphclSelfLink'
+--
+-- * 'httphclId'
+hTTPHealthCheckList
+    :: HTTPHealthCheckList
+hTTPHealthCheckList =
+    HTTPHealthCheckList
+    { _httphclNextPageToken = Nothing
+    , _httphclKind = "compute#httpHealthCheckList"
+    , _httphclItems = Nothing
+    , _httphclSelfLink = Nothing
+    , _httphclId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+httphclNextPageToken :: Lens' HTTPHealthCheckList (Maybe Text)
+httphclNextPageToken
+  = lens _httphclNextPageToken
+      (\ s a -> s{_httphclNextPageToken = a})
+
+-- | Type of resource.
+httphclKind :: Lens' HTTPHealthCheckList Text
+httphclKind
+  = lens _httphclKind (\ s a -> s{_httphclKind = a})
+
+-- | A list of HttpHealthCheck resources.
+httphclItems :: Lens' HTTPHealthCheckList [HTTPHealthCheck]
+httphclItems
+  = lens _httphclItems (\ s a -> s{_httphclItems = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+httphclSelfLink :: Lens' HTTPHealthCheckList (Maybe Text)
+httphclSelfLink
+  = lens _httphclSelfLink
+      (\ s a -> s{_httphclSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+httphclId :: Lens' HTTPHealthCheckList (Maybe Text)
+httphclId
+  = lens _httphclId (\ s a -> s{_httphclId = a})
+
+instance FromJSON HTTPHealthCheckList where
+        parseJSON
+          = withObject "HTTPHealthCheckList"
+              (\ o ->
+                 HTTPHealthCheckList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#httpHealthCheckList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON HTTPHealthCheckList where
+        toJSON HTTPHealthCheckList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _httphclNextPageToken,
+                  Just ("kind" .= _httphclKind),
+                  ("items" .=) <$> _httphclItems,
+                  ("selfLink" .=) <$> _httphclSelfLink,
+                  ("id" .=) <$> _httphclId])
+
+-- | [Output Only] The warning that replaces the list of managed instance
+-- groups when the list is empty.
+--
+-- /See:/ 'instanceGroupManagersScopedListWarning' smart constructor.
+data InstanceGroupManagersScopedListWarning = InstanceGroupManagersScopedListWarning
+    { _igmslwData    :: !(Maybe [InstanceGroupManagersScopedListWarningDataItem])
+    , _igmslwCode    :: !(Maybe InstanceGroupManagersScopedListWarningCode)
+    , _igmslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmslwData'
+--
+-- * 'igmslwCode'
+--
+-- * 'igmslwMessage'
+instanceGroupManagersScopedListWarning
+    :: InstanceGroupManagersScopedListWarning
+instanceGroupManagersScopedListWarning =
+    InstanceGroupManagersScopedListWarning
+    { _igmslwData = Nothing
+    , _igmslwCode = Nothing
+    , _igmslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+igmslwData :: Lens' InstanceGroupManagersScopedListWarning [InstanceGroupManagersScopedListWarningDataItem]
+igmslwData
+  = lens _igmslwData (\ s a -> s{_igmslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+igmslwCode :: Lens' InstanceGroupManagersScopedListWarning (Maybe InstanceGroupManagersScopedListWarningCode)
+igmslwCode
+  = lens _igmslwCode (\ s a -> s{_igmslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+igmslwMessage :: Lens' InstanceGroupManagersScopedListWarning (Maybe Text)
+igmslwMessage
+  = lens _igmslwMessage
+      (\ s a -> s{_igmslwMessage = a})
+
+instance FromJSON
+         InstanceGroupManagersScopedListWarning where
+        parseJSON
+          = withObject "InstanceGroupManagersScopedListWarning"
+              (\ o ->
+                 InstanceGroupManagersScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         InstanceGroupManagersScopedListWarning where
+        toJSON InstanceGroupManagersScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igmslwData,
+                  ("code" .=) <$> _igmslwCode,
+                  ("message" .=) <$> _igmslwMessage])
+
+--
+-- /See:/ 'urlMapsValidateRequest' smart constructor.
+newtype URLMapsValidateRequest = URLMapsValidateRequest
+    { _umvrResource :: Maybe URLMap
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsValidateRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvrResource'
+urlMapsValidateRequest
+    :: URLMapsValidateRequest
+urlMapsValidateRequest =
+    URLMapsValidateRequest
+    { _umvrResource = Nothing
+    }
+
+-- | Content of the UrlMap to be validated.
+umvrResource :: Lens' URLMapsValidateRequest (Maybe URLMap)
+umvrResource
+  = lens _umvrResource (\ s a -> s{_umvrResource = a})
+
+instance FromJSON URLMapsValidateRequest where
+        parseJSON
+          = withObject "URLMapsValidateRequest"
+              (\ o ->
+                 URLMapsValidateRequest <$> (o .:? "resource"))
+
+instance ToJSON URLMapsValidateRequest where
+        toJSON URLMapsValidateRequest{..}
+          = object
+              (catMaybes [("resource" .=) <$> _umvrResource])
+
+--
+-- /See:/ 'instanceGroupManagersSetTargetPoolsRequest' smart constructor.
+data InstanceGroupManagersSetTargetPoolsRequest = InstanceGroupManagersSetTargetPoolsRequest
+    { _igmstprFingerprint :: !(Maybe (Textual Word8))
+    , _igmstprTargetPools :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersSetTargetPoolsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmstprFingerprint'
+--
+-- * 'igmstprTargetPools'
+instanceGroupManagersSetTargetPoolsRequest
+    :: InstanceGroupManagersSetTargetPoolsRequest
+instanceGroupManagersSetTargetPoolsRequest =
+    InstanceGroupManagersSetTargetPoolsRequest
+    { _igmstprFingerprint = Nothing
+    , _igmstprTargetPools = Nothing
+    }
+
+-- | The fingerprint of the target pools information. Use this optional
+-- property to prevent conflicts when multiple users change the target
+-- pools settings concurrently. Obtain the fingerprint with the
+-- instanceGroupManagers.get method. Then, include the fingerprint in your
+-- request to ensure that you do not overwrite changes that were applied
+-- from another concurrent request.
+igmstprFingerprint :: Lens' InstanceGroupManagersSetTargetPoolsRequest (Maybe Word8)
+igmstprFingerprint
+  = lens _igmstprFingerprint
+      (\ s a -> s{_igmstprFingerprint = a})
+      . mapping _Coerce
+
+-- | The list of target pool URLs that instances in this managed instance
+-- group belong to. The managed instance group applies these target pools
+-- to all of the instances in the group. Existing instances and new
+-- instances in the group all receive these target pool settings.
+igmstprTargetPools :: Lens' InstanceGroupManagersSetTargetPoolsRequest [Text]
+igmstprTargetPools
+  = lens _igmstprTargetPools
+      (\ s a -> s{_igmstprTargetPools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON
+         InstanceGroupManagersSetTargetPoolsRequest where
+        parseJSON
+          = withObject
+              "InstanceGroupManagersSetTargetPoolsRequest"
+              (\ o ->
+                 InstanceGroupManagersSetTargetPoolsRequest <$>
+                   (o .:? "fingerprint") <*>
+                     (o .:? "targetPools" .!= mempty))
+
+instance ToJSON
+         InstanceGroupManagersSetTargetPoolsRequest where
+        toJSON InstanceGroupManagersSetTargetPoolsRequest{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _igmstprFingerprint,
+                  ("targetPools" .=) <$> _igmstprTargetPools])
+
+-- | Contains a list of HttpsHealthCheck resources.
+--
+-- /See:/ 'httpsHealthCheckList' smart constructor.
+data HTTPSHealthCheckList = HTTPSHealthCheckList
+    { _hhclNextPageToken :: !(Maybe Text)
+    , _hhclKind          :: !Text
+    , _hhclItems         :: !(Maybe [HTTPSHealthCheck])
+    , _hhclSelfLink      :: !(Maybe Text)
+    , _hhclId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthCheckList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhclNextPageToken'
+--
+-- * 'hhclKind'
+--
+-- * 'hhclItems'
+--
+-- * 'hhclSelfLink'
+--
+-- * 'hhclId'
+httpsHealthCheckList
+    :: HTTPSHealthCheckList
+httpsHealthCheckList =
+    HTTPSHealthCheckList
+    { _hhclNextPageToken = Nothing
+    , _hhclKind = "compute#httpsHealthCheckList"
+    , _hhclItems = Nothing
+    , _hhclSelfLink = Nothing
+    , _hhclId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+hhclNextPageToken :: Lens' HTTPSHealthCheckList (Maybe Text)
+hhclNextPageToken
+  = lens _hhclNextPageToken
+      (\ s a -> s{_hhclNextPageToken = a})
+
+-- | Type of resource.
+hhclKind :: Lens' HTTPSHealthCheckList Text
+hhclKind = lens _hhclKind (\ s a -> s{_hhclKind = a})
+
+-- | A list of HttpsHealthCheck resources.
+hhclItems :: Lens' HTTPSHealthCheckList [HTTPSHealthCheck]
+hhclItems
+  = lens _hhclItems (\ s a -> s{_hhclItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+hhclSelfLink :: Lens' HTTPSHealthCheckList (Maybe Text)
+hhclSelfLink
+  = lens _hhclSelfLink (\ s a -> s{_hhclSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+hhclId :: Lens' HTTPSHealthCheckList (Maybe Text)
+hhclId = lens _hhclId (\ s a -> s{_hhclId = a})
+
+instance FromJSON HTTPSHealthCheckList where
+        parseJSON
+          = withObject "HTTPSHealthCheckList"
+              (\ o ->
+                 HTTPSHealthCheckList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#httpsHealthCheckList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON HTTPSHealthCheckList where
+        toJSON HTTPSHealthCheckList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _hhclNextPageToken,
+                  Just ("kind" .= _hhclKind),
+                  ("items" .=) <$> _hhclItems,
+                  ("selfLink" .=) <$> _hhclSelfLink,
+                  ("id" .=) <$> _hhclId])
+
+--
+-- /See:/ 'operationErrorErrorsItem' smart constructor.
+data OperationErrorErrorsItem = OperationErrorErrorsItem
+    { _oeeiLocation :: !(Maybe Text)
+    , _oeeiCode     :: !(Maybe Text)
+    , _oeeiMessage  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationErrorErrorsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oeeiLocation'
+--
+-- * 'oeeiCode'
+--
+-- * 'oeeiMessage'
+operationErrorErrorsItem
+    :: OperationErrorErrorsItem
+operationErrorErrorsItem =
+    OperationErrorErrorsItem
+    { _oeeiLocation = Nothing
+    , _oeeiCode = Nothing
+    , _oeeiMessage = Nothing
+    }
+
+-- | [Output Only] Indicates the field in the request which caused the error.
+-- This property is optional.
+oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiLocation
+  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})
+
+-- | [Output Only] The error type identifier for this error.
+oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})
+
+-- | [Output Only] An optional, human-readable error message.
+oeeiMessage :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiMessage
+  = lens _oeeiMessage (\ s a -> s{_oeeiMessage = a})
+
+instance FromJSON OperationErrorErrorsItem where
+        parseJSON
+          = withObject "OperationErrorErrorsItem"
+              (\ o ->
+                 OperationErrorErrorsItem <$>
+                   (o .:? "location") <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationErrorErrorsItem where
+        toJSON OperationErrorErrorsItem{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _oeeiLocation,
+                  ("code" .=) <$> _oeeiCode,
+                  ("message" .=) <$> _oeeiMessage])
+
+-- | A license resource.
+--
+-- /See:/ 'license' smart constructor.
+data License = License
+    { _lChargesUseFee :: !(Maybe Bool)
+    , _lKind          :: !Text
+    , _lSelfLink      :: !(Maybe Text)
+    , _lName          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'License' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lChargesUseFee'
+--
+-- * 'lKind'
+--
+-- * 'lSelfLink'
+--
+-- * 'lName'
+license
+    :: License
+license =
+    License
+    { _lChargesUseFee = Nothing
+    , _lKind = "compute#license"
+    , _lSelfLink = Nothing
+    , _lName = Nothing
+    }
+
+-- | If true, the customer will be charged license fee for running software
+-- that contains this license on an instance.
+lChargesUseFee :: Lens' License (Maybe Bool)
+lChargesUseFee
+  = lens _lChargesUseFee
+      (\ s a -> s{_lChargesUseFee = a})
+
+-- | [Output Only] Type of resource. Always compute#license for licenses.
+lKind :: Lens' License Text
+lKind = lens _lKind (\ s a -> s{_lKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+lSelfLink :: Lens' License (Maybe Text)
+lSelfLink
+  = lens _lSelfLink (\ s a -> s{_lSelfLink = a})
+
+-- | [Output Only] Name of the resource. The name is 1-63 characters long and
+-- complies with RFC1035.
+lName :: Lens' License (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a})
+
+instance FromJSON License where
+        parseJSON
+          = withObject "License"
+              (\ o ->
+                 License <$>
+                   (o .:? "chargesUseFee") <*>
+                     (o .:? "kind" .!= "compute#license")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name"))
+
+instance ToJSON License where
+        toJSON License{..}
+          = object
+              (catMaybes
+                 [("chargesUseFee" .=) <$> _lChargesUseFee,
+                  Just ("kind" .= _lKind),
+                  ("selfLink" .=) <$> _lSelfLink,
+                  ("name" .=) <$> _lName])
+
+-- | A path-matching rule for a URL. If matched, will use the specified
+-- BackendService to handle the traffic arriving at this URL.
+--
+-- /See:/ 'pathRule' smart constructor.
+data PathRule = PathRule
+    { _prService :: !(Maybe Text)
+    , _prPaths   :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PathRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prService'
+--
+-- * 'prPaths'
+pathRule
+    :: PathRule
+pathRule =
+    PathRule
+    { _prService = Nothing
+    , _prPaths = Nothing
+    }
+
+-- | The URL of the BackendService resource if this rule is matched.
+prService :: Lens' PathRule (Maybe Text)
+prService
+  = lens _prService (\ s a -> s{_prService = a})
+
+-- | The list of path patterns to match. Each must start with \/ and the only
+-- place a * is allowed is at the end following a \/. The string fed to the
+-- path matcher does not include any text after the first ? or #, and those
+-- chars are not allowed here.
+prPaths :: Lens' PathRule [Text]
+prPaths
+  = lens _prPaths (\ s a -> s{_prPaths = a}) . _Default
+      . _Coerce
+
+instance FromJSON PathRule where
+        parseJSON
+          = withObject "PathRule"
+              (\ o ->
+                 PathRule <$>
+                   (o .:? "service") <*> (o .:? "paths" .!= mempty))
+
+instance ToJSON PathRule where
+        toJSON PathRule{..}
+          = object
+              (catMaybes
+                 [("service" .=) <$> _prService,
+                  ("paths" .=) <$> _prPaths])
+
+-- | Contains a list of instance resources.
+--
+-- /See:/ 'instanceList' smart constructor.
+data InstanceList = InstanceList
+    { _insNextPageToken :: !(Maybe Text)
+    , _insKind          :: !Text
+    , _insItems         :: !(Maybe [Instance])
+    , _insSelfLink      :: !(Maybe Text)
+    , _insId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'insNextPageToken'
+--
+-- * 'insKind'
+--
+-- * 'insItems'
+--
+-- * 'insSelfLink'
+--
+-- * 'insId'
+instanceList
+    :: InstanceList
+instanceList =
+    InstanceList
+    { _insNextPageToken = Nothing
+    , _insKind = "compute#instanceList"
+    , _insItems = Nothing
+    , _insSelfLink = Nothing
+    , _insId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+insNextPageToken :: Lens' InstanceList (Maybe Text)
+insNextPageToken
+  = lens _insNextPageToken
+      (\ s a -> s{_insNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#instanceList for lists of
+-- Instance resources.
+insKind :: Lens' InstanceList Text
+insKind = lens _insKind (\ s a -> s{_insKind = a})
+
+-- | [Output Only] A list of Instance resources.
+insItems :: Lens' InstanceList [Instance]
+insItems
+  = lens _insItems (\ s a -> s{_insItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server defined URL for this resource.
+insSelfLink :: Lens' InstanceList (Maybe Text)
+insSelfLink
+  = lens _insSelfLink (\ s a -> s{_insSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+insId :: Lens' InstanceList (Maybe Text)
+insId = lens _insId (\ s a -> s{_insId = a})
+
+instance FromJSON InstanceList where
+        parseJSON
+          = withObject "InstanceList"
+              (\ o ->
+                 InstanceList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#instanceList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON InstanceList where
+        toJSON InstanceList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _insNextPageToken,
+                  Just ("kind" .= _insKind),
+                  ("items" .=) <$> _insItems,
+                  ("selfLink" .=) <$> _insSelfLink,
+                  ("id" .=) <$> _insId])
+
+--
+-- /See:/ 'managedInstanceLastAttempt' smart constructor.
+newtype ManagedInstanceLastAttempt = ManagedInstanceLastAttempt
+    { _milaErrors :: Maybe ManagedInstanceLastAttemptErrors
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstanceLastAttempt' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'milaErrors'
+managedInstanceLastAttempt
+    :: ManagedInstanceLastAttempt
+managedInstanceLastAttempt =
+    ManagedInstanceLastAttempt
+    { _milaErrors = Nothing
+    }
+
+-- | [Output Only] Encountered errors during the last attempt to create or
+-- delete the instance.
+milaErrors :: Lens' ManagedInstanceLastAttempt (Maybe ManagedInstanceLastAttemptErrors)
+milaErrors
+  = lens _milaErrors (\ s a -> s{_milaErrors = a})
+
+instance FromJSON ManagedInstanceLastAttempt where
+        parseJSON
+          = withObject "ManagedInstanceLastAttempt"
+              (\ o ->
+                 ManagedInstanceLastAttempt <$> (o .:? "errors"))
+
+instance ToJSON ManagedInstanceLastAttempt where
+        toJSON ManagedInstanceLastAttempt{..}
+          = object (catMaybes [("errors" .=) <$> _milaErrors])
+
+-- | Contains a list of BackendService resources.
+--
+-- /See:/ 'backendServiceList' smart constructor.
+data BackendServiceList = BackendServiceList
+    { _bslNextPageToken :: !(Maybe Text)
+    , _bslKind          :: !Text
+    , _bslItems         :: !(Maybe [BackendService])
+    , _bslSelfLink      :: !(Maybe Text)
+    , _bslId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServiceList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bslNextPageToken'
+--
+-- * 'bslKind'
+--
+-- * 'bslItems'
+--
+-- * 'bslSelfLink'
+--
+-- * 'bslId'
+backendServiceList
+    :: BackendServiceList
+backendServiceList =
+    BackendServiceList
+    { _bslNextPageToken = Nothing
+    , _bslKind = "compute#backendServiceList"
+    , _bslItems = Nothing
+    , _bslSelfLink = Nothing
+    , _bslId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+bslNextPageToken :: Lens' BackendServiceList (Maybe Text)
+bslNextPageToken
+  = lens _bslNextPageToken
+      (\ s a -> s{_bslNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#backendServiceList for
+-- lists of backend services.
+bslKind :: Lens' BackendServiceList Text
+bslKind = lens _bslKind (\ s a -> s{_bslKind = a})
+
+-- | A list of BackendService resources.
+bslItems :: Lens' BackendServiceList [BackendService]
+bslItems
+  = lens _bslItems (\ s a -> s{_bslItems = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+bslSelfLink :: Lens' BackendServiceList (Maybe Text)
+bslSelfLink
+  = lens _bslSelfLink (\ s a -> s{_bslSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+bslId :: Lens' BackendServiceList (Maybe Text)
+bslId = lens _bslId (\ s a -> s{_bslId = a})
+
+instance FromJSON BackendServiceList where
+        parseJSON
+          = withObject "BackendServiceList"
+              (\ o ->
+                 BackendServiceList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#backendServiceList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON BackendServiceList where
+        toJSON BackendServiceList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _bslNextPageToken,
+                  Just ("kind" .= _bslKind),
+                  ("items" .=) <$> _bslItems,
+                  ("selfLink" .=) <$> _bslSelfLink,
+                  ("id" .=) <$> _bslId])
+
+-- | [Output Only] An informational warning that replaces the list of
+-- instance groups when the list is empty.
+--
+-- /See:/ 'instanceGroupsScopedListWarning' smart constructor.
+data InstanceGroupsScopedListWarning = InstanceGroupsScopedListWarning
+    { _igslwData    :: !(Maybe [InstanceGroupsScopedListWarningDataItem])
+    , _igslwCode    :: !(Maybe InstanceGroupsScopedListWarningCode)
+    , _igslwMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsScopedListWarning' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igslwData'
+--
+-- * 'igslwCode'
+--
+-- * 'igslwMessage'
+instanceGroupsScopedListWarning
+    :: InstanceGroupsScopedListWarning
+instanceGroupsScopedListWarning =
+    InstanceGroupsScopedListWarning
+    { _igslwData = Nothing
+    , _igslwCode = Nothing
+    , _igslwMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+igslwData :: Lens' InstanceGroupsScopedListWarning [InstanceGroupsScopedListWarningDataItem]
+igslwData
+  = lens _igslwData (\ s a -> s{_igslwData = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+igslwCode :: Lens' InstanceGroupsScopedListWarning (Maybe InstanceGroupsScopedListWarningCode)
+igslwCode
+  = lens _igslwCode (\ s a -> s{_igslwCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+igslwMessage :: Lens' InstanceGroupsScopedListWarning (Maybe Text)
+igslwMessage
+  = lens _igslwMessage (\ s a -> s{_igslwMessage = a})
+
+instance FromJSON InstanceGroupsScopedListWarning
+         where
+        parseJSON
+          = withObject "InstanceGroupsScopedListWarning"
+              (\ o ->
+                 InstanceGroupsScopedListWarning <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON InstanceGroupsScopedListWarning where
+        toJSON InstanceGroupsScopedListWarning{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _igslwData,
+                  ("code" .=) <$> _igslwCode,
+                  ("message" .=) <$> _igslwMessage])
+
+-- | CPU utilization policy.
+--
+-- /See:/ 'autoscalingPolicyCPUUtilization' smart constructor.
+newtype AutoscalingPolicyCPUUtilization = AutoscalingPolicyCPUUtilization
+    { _apcuUtilizationTarget :: Maybe (Textual Double)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalingPolicyCPUUtilization' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apcuUtilizationTarget'
+autoscalingPolicyCPUUtilization
+    :: AutoscalingPolicyCPUUtilization
+autoscalingPolicyCPUUtilization =
+    AutoscalingPolicyCPUUtilization
+    { _apcuUtilizationTarget = Nothing
+    }
+
+-- | The target utilization that the Autoscaler should maintain. It is
+-- represented as a fraction of used cores. For example: 6 cores used in
+-- 8-core VM are represented here as 0.75. Must be a float value between
+-- (0, 1]. If not defined, the default is 0.8.
+apcuUtilizationTarget :: Lens' AutoscalingPolicyCPUUtilization (Maybe Double)
+apcuUtilizationTarget
+  = lens _apcuUtilizationTarget
+      (\ s a -> s{_apcuUtilizationTarget = a})
+      . mapping _Coerce
+
+instance FromJSON AutoscalingPolicyCPUUtilization
+         where
+        parseJSON
+          = withObject "AutoscalingPolicyCPUUtilization"
+              (\ o ->
+                 AutoscalingPolicyCPUUtilization <$>
+                   (o .:? "utilizationTarget"))
+
+instance ToJSON AutoscalingPolicyCPUUtilization where
+        toJSON AutoscalingPolicyCPUUtilization{..}
+          = object
+              (catMaybes
+                 [("utilizationTarget" .=) <$>
+                    _apcuUtilizationTarget])
+
+--
+-- /See:/ 'instanceGroupsScopedListWarningDataItem' smart constructor.
+data InstanceGroupsScopedListWarningDataItem = InstanceGroupsScopedListWarningDataItem
+    { _igslwdiValue :: !(Maybe Text)
+    , _igslwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igslwdiValue'
+--
+-- * 'igslwdiKey'
+instanceGroupsScopedListWarningDataItem
+    :: InstanceGroupsScopedListWarningDataItem
+instanceGroupsScopedListWarningDataItem =
+    InstanceGroupsScopedListWarningDataItem
+    { _igslwdiValue = Nothing
+    , _igslwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+igslwdiValue :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
+igslwdiValue
+  = lens _igslwdiValue (\ s a -> s{_igslwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+igslwdiKey :: Lens' InstanceGroupsScopedListWarningDataItem (Maybe Text)
+igslwdiKey
+  = lens _igslwdiKey (\ s a -> s{_igslwdiKey = a})
+
+instance FromJSON
+         InstanceGroupsScopedListWarningDataItem where
+        parseJSON
+          = withObject
+              "InstanceGroupsScopedListWarningDataItem"
+              (\ o ->
+                 InstanceGroupsScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON
+         InstanceGroupsScopedListWarningDataItem where
+        toJSON InstanceGroupsScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _igslwdiValue,
+                  ("key" .=) <$> _igslwdiKey])
+
+--
+-- /See:/ 'resourceGroupReference' smart constructor.
+newtype ResourceGroupReference = ResourceGroupReference
+    { _rgrGroup :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ResourceGroupReference' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgrGroup'
+resourceGroupReference
+    :: ResourceGroupReference
+resourceGroupReference =
+    ResourceGroupReference
+    { _rgrGroup = Nothing
+    }
+
+-- | A URI referencing one of the resource views listed in the backend
+-- service.
+rgrGroup :: Lens' ResourceGroupReference (Maybe Text)
+rgrGroup = lens _rgrGroup (\ s a -> s{_rgrGroup = a})
+
+instance FromJSON ResourceGroupReference where
+        parseJSON
+          = withObject "ResourceGroupReference"
+              (\ o -> ResourceGroupReference <$> (o .:? "group"))
+
+instance ToJSON ResourceGroupReference where
+        toJSON ResourceGroupReference{..}
+          = object (catMaybes [("group" .=) <$> _rgrGroup])
+
+-- | A Firewall resource.
+--
+-- /See:/ 'firewall' smart constructor.
+data Firewall = Firewall
+    { _fSourceTags        :: !(Maybe [Text])
+    , _fKind              :: !Text
+    , _fTargetTags        :: !(Maybe [Text])
+    , _fNetwork           :: !(Maybe Text)
+    , _fSourceRanges      :: !(Maybe [Text])
+    , _fSelfLink          :: !(Maybe Text)
+    , _fName              :: !(Maybe Text)
+    , _fCreationTimestamp :: !(Maybe Text)
+    , _fId                :: !(Maybe (Textual Word64))
+    , _fAllowed           :: !(Maybe [FirewallAllowedItem])
+    , _fDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Firewall' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fSourceTags'
+--
+-- * 'fKind'
+--
+-- * 'fTargetTags'
+--
+-- * 'fNetwork'
+--
+-- * 'fSourceRanges'
+--
+-- * 'fSelfLink'
+--
+-- * 'fName'
+--
+-- * 'fCreationTimestamp'
+--
+-- * 'fId'
+--
+-- * 'fAllowed'
+--
+-- * 'fDescription'
+firewall
+    :: Firewall
+firewall =
+    Firewall
+    { _fSourceTags = Nothing
+    , _fKind = "compute#firewall"
+    , _fTargetTags = Nothing
+    , _fNetwork = Nothing
+    , _fSourceRanges = Nothing
+    , _fSelfLink = Nothing
+    , _fName = Nothing
+    , _fCreationTimestamp = Nothing
+    , _fId = Nothing
+    , _fAllowed = Nothing
+    , _fDescription = Nothing
+    }
+
+-- | A list of instance tags which this rule applies to. One or both of
+-- sourceRanges and sourceTags may be set. If both properties are set, an
+-- inbound connection is allowed if the range matches the sourceRanges OR
+-- the tag of the source matches the sourceTags property. The connection
+-- does not need to match both properties.
+fSourceTags :: Lens' Firewall [Text]
+fSourceTags
+  = lens _fSourceTags (\ s a -> s{_fSourceTags = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Ony] Type of the resource. Always compute#firewall for firewall
+-- rules.
+fKind :: Lens' Firewall Text
+fKind = lens _fKind (\ s a -> s{_fKind = a})
+
+-- | A list of instance tags indicating sets of instances located in the
+-- network that may make network connections as specified in allowed[]. If
+-- no targetTags are specified, the firewall rule applies to all instances
+-- on the specified network.
+fTargetTags :: Lens' Firewall [Text]
+fTargetTags
+  = lens _fTargetTags (\ s a -> s{_fTargetTags = a}) .
+      _Default
+      . _Coerce
+
+-- | URL of the network resource for this firewall rule. This field is
+-- required for creating an instance but optional when creating a firewall
+-- rule. If not specified when creating a firewall rule, the default
+-- network is used: global\/networks\/default If you choose to specify this
+-- property, you can specify the network as a full or partial URL. For
+-- example, the following are all valid URLs: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/myproject\/global\/networks\/my-network
+-- - projects\/myproject\/global\/networks\/my-network -
+-- global\/networks\/default
+fNetwork :: Lens' Firewall (Maybe Text)
+fNetwork = lens _fNetwork (\ s a -> s{_fNetwork = a})
+
+-- | The IP address blocks that this rule applies to, expressed in CIDR
+-- format. One or both of sourceRanges and sourceTags may be set. If both
+-- properties are set, an inbound connection is allowed if the range
+-- matches the sourceRanges OR the tag of the source matches the sourceTags
+-- property. The connection does not need to match both properties.
+fSourceRanges :: Lens' Firewall [Text]
+fSourceRanges
+  = lens _fSourceRanges
+      (\ s a -> s{_fSourceRanges = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for the resource.
+fSelfLink :: Lens' Firewall (Maybe Text)
+fSelfLink
+  = lens _fSelfLink (\ s a -> s{_fSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+fName :: Lens' Firewall (Maybe Text)
+fName = lens _fName (\ s a -> s{_fName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+fCreationTimestamp :: Lens' Firewall (Maybe Text)
+fCreationTimestamp
+  = lens _fCreationTimestamp
+      (\ s a -> s{_fCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+fId :: Lens' Firewall (Maybe Word64)
+fId
+  = lens _fId (\ s a -> s{_fId = a}) . mapping _Coerce
+
+-- | The list of rules specified by this firewall. Each rule specifies a
+-- protocol and port-range tuple that describes a permitted connection.
+fAllowed :: Lens' Firewall [FirewallAllowedItem]
+fAllowed
+  = lens _fAllowed (\ s a -> s{_fAllowed = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+fDescription :: Lens' Firewall (Maybe Text)
+fDescription
+  = lens _fDescription (\ s a -> s{_fDescription = a})
+
+instance FromJSON Firewall where
+        parseJSON
+          = withObject "Firewall"
+              (\ o ->
+                 Firewall <$>
+                   (o .:? "sourceTags" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#firewall")
+                     <*> (o .:? "targetTags" .!= mempty)
+                     <*> (o .:? "network")
+                     <*> (o .:? "sourceRanges" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "allowed" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON Firewall where
+        toJSON Firewall{..}
+          = object
+              (catMaybes
+                 [("sourceTags" .=) <$> _fSourceTags,
+                  Just ("kind" .= _fKind),
+                  ("targetTags" .=) <$> _fTargetTags,
+                  ("network" .=) <$> _fNetwork,
+                  ("sourceRanges" .=) <$> _fSourceRanges,
+                  ("selfLink" .=) <$> _fSelfLink,
+                  ("name" .=) <$> _fName,
+                  ("creationTimestamp" .=) <$> _fCreationTimestamp,
+                  ("id" .=) <$> _fId, ("allowed" .=) <$> _fAllowed,
+                  ("description" .=) <$> _fDescription])
+
+-- | UrlMaps A host-matching rule for a URL. If matched, will use the named
+-- PathMatcher to select the BackendService.
+--
+-- /See:/ 'hostRule' smart constructor.
+data HostRule = HostRule
+    { _hrHosts       :: !(Maybe [Text])
+    , _hrDescription :: !(Maybe Text)
+    , _hrPathMatcher :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HostRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hrHosts'
+--
+-- * 'hrDescription'
+--
+-- * 'hrPathMatcher'
+hostRule
+    :: HostRule
+hostRule =
+    HostRule
+    { _hrHosts = Nothing
+    , _hrDescription = Nothing
+    , _hrPathMatcher = Nothing
+    }
+
+-- | The list of host patterns to match. They must be valid hostnames, except
+-- * will match any string of ([a-z0-9-.]*). In that case, * must be the
+-- first character and must be followed in the pattern by either - or ..
+hrHosts :: Lens' HostRule [Text]
+hrHosts
+  = lens _hrHosts (\ s a -> s{_hrHosts = a}) . _Default
+      . _Coerce
+
+-- | An optional textual description.
+hrDescription :: Lens' HostRule (Maybe Text)
+hrDescription
+  = lens _hrDescription
+      (\ s a -> s{_hrDescription = a})
+
+-- | The name of the PathMatcher to use to match the path portion of the URL
+-- if the hostRule matches the URL\'s host portion.
+hrPathMatcher :: Lens' HostRule (Maybe Text)
+hrPathMatcher
+  = lens _hrPathMatcher
+      (\ s a -> s{_hrPathMatcher = a})
+
+instance FromJSON HostRule where
+        parseJSON
+          = withObject "HostRule"
+              (\ o ->
+                 HostRule <$>
+                   (o .:? "hosts" .!= mempty) <*> (o .:? "description")
+                     <*> (o .:? "pathMatcher"))
+
+instance ToJSON HostRule where
+        toJSON HostRule{..}
+          = object
+              (catMaybes
+                 [("hosts" .=) <$> _hrHosts,
+                  ("description" .=) <$> _hrDescription,
+                  ("pathMatcher" .=) <$> _hrPathMatcher])
+
+-- | A quotas entry.
+--
+-- /See:/ 'quota' smart constructor.
+data Quota = Quota
+    { _qMetric :: !(Maybe QuotaMetric)
+    , _qLimit  :: !(Maybe (Textual Double))
+    , _qUsage  :: !(Maybe (Textual Double))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Quota' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'qMetric'
+--
+-- * 'qLimit'
+--
+-- * 'qUsage'
+quota
+    :: Quota
+quota =
+    Quota
+    { _qMetric = Nothing
+    , _qLimit = Nothing
+    , _qUsage = Nothing
+    }
+
+-- | [Output Only] Name of the quota metric.
+qMetric :: Lens' Quota (Maybe QuotaMetric)
+qMetric = lens _qMetric (\ s a -> s{_qMetric = a})
+
+-- | [Output Only] Quota limit for this metric.
+qLimit :: Lens' Quota (Maybe Double)
+qLimit
+  = lens _qLimit (\ s a -> s{_qLimit = a}) .
+      mapping _Coerce
+
+-- | [Output Only] Current usage of this metric.
+qUsage :: Lens' Quota (Maybe Double)
+qUsage
+  = lens _qUsage (\ s a -> s{_qUsage = a}) .
+      mapping _Coerce
+
+instance FromJSON Quota where
+        parseJSON
+          = withObject "Quota"
+              (\ o ->
+                 Quota <$>
+                   (o .:? "metric") <*> (o .:? "limit") <*>
+                     (o .:? "usage"))
+
+instance ToJSON Quota where
+        toJSON Quota{..}
+          = object
+              (catMaybes
+                 [("metric" .=) <$> _qMetric,
+                  ("limit" .=) <$> _qLimit, ("usage" .=) <$> _qUsage])
+
+--
+-- /See:/ 'instanceGroup' smart constructor.
+data InstanceGroup = InstanceGroup
+    { _iiSize              :: !(Maybe (Textual Int32))
+    , _iiKind              :: !Text
+    , _iiFingerprint       :: !(Maybe (Textual Word8))
+    , _iiNetwork           :: !(Maybe Text)
+    , _iiZone              :: !(Maybe Text)
+    , _iiSelfLink          :: !(Maybe Text)
+    , _iiName              :: !(Maybe Text)
+    , _iiCreationTimestamp :: !(Maybe Text)
+    , _iiId                :: !(Maybe (Textual Word64))
+    , _iiDescription       :: !(Maybe Text)
+    , _iiNamedPorts        :: !(Maybe [NamedPort])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiSize'
+--
+-- * 'iiKind'
+--
+-- * 'iiFingerprint'
+--
+-- * 'iiNetwork'
+--
+-- * 'iiZone'
+--
+-- * 'iiSelfLink'
+--
+-- * 'iiName'
+--
+-- * 'iiCreationTimestamp'
+--
+-- * 'iiId'
+--
+-- * 'iiDescription'
+--
+-- * 'iiNamedPorts'
+instanceGroup
+    :: InstanceGroup
+instanceGroup =
+    InstanceGroup
+    { _iiSize = Nothing
+    , _iiKind = "compute#instanceGroup"
+    , _iiFingerprint = Nothing
+    , _iiNetwork = Nothing
+    , _iiZone = Nothing
+    , _iiSelfLink = Nothing
+    , _iiName = Nothing
+    , _iiCreationTimestamp = Nothing
+    , _iiId = Nothing
+    , _iiDescription = Nothing
+    , _iiNamedPorts = Nothing
+    }
+
+-- | [Output Only] The total number of instances in the instance group.
+iiSize :: Lens' InstanceGroup (Maybe Int32)
+iiSize
+  = lens _iiSize (\ s a -> s{_iiSize = a}) .
+      mapping _Coerce
+
+-- | [Output Only] The resource type, which is always compute#instanceGroup
+-- for instance groups.
+iiKind :: Lens' InstanceGroup Text
+iiKind = lens _iiKind (\ s a -> s{_iiKind = a})
+
+-- | [Output Only] The fingerprint of the named ports. The system uses this
+-- fingerprint to detect conflicts when multiple users change the named
+-- ports concurrently.
+iiFingerprint :: Lens' InstanceGroup (Maybe Word8)
+iiFingerprint
+  = lens _iiFingerprint
+      (\ s a -> s{_iiFingerprint = a})
+      . mapping _Coerce
+
+-- | [Output Only] The URL of the network to which all instances in the
+-- instance group belong.
+iiNetwork :: Lens' InstanceGroup (Maybe Text)
+iiNetwork
+  = lens _iiNetwork (\ s a -> s{_iiNetwork = a})
+
+-- | [Output Only] The URL of the zone where the instance group is located.
+iiZone :: Lens' InstanceGroup (Maybe Text)
+iiZone = lens _iiZone (\ s a -> s{_iiZone = a})
+
+-- | [Output Only] The URL for this instance group. The server generates this
+-- URL.
+iiSelfLink :: Lens' InstanceGroup (Maybe Text)
+iiSelfLink
+  = lens _iiSelfLink (\ s a -> s{_iiSelfLink = a})
+
+-- | The name of the instance group. The name must be 1-63 characters long,
+-- and comply with RFC1035.
+iiName :: Lens' InstanceGroup (Maybe Text)
+iiName = lens _iiName (\ s a -> s{_iiName = a})
+
+-- | [Output Only] The creation timestamp for this instance group in RFC3339
+-- text format.
+iiCreationTimestamp :: Lens' InstanceGroup (Maybe Text)
+iiCreationTimestamp
+  = lens _iiCreationTimestamp
+      (\ s a -> s{_iiCreationTimestamp = a})
+
+-- | [Output Only] A unique identifier for this resource type. The server
+-- generates this identifier.
+iiId :: Lens' InstanceGroup (Maybe Word64)
+iiId
+  = lens _iiId (\ s a -> s{_iiId = a}) .
+      mapping _Coerce
+
+-- | An optional text description for the instance group.
+iiDescription :: Lens' InstanceGroup (Maybe Text)
+iiDescription
+  = lens _iiDescription
+      (\ s a -> s{_iiDescription = a})
+
+-- | Assigns a name to a port number. For example: {name: \"http\", port: 80}
+-- This allows the system to reference ports by the assigned name instead
+-- of a port number. Named ports can also contain multiple ports. For
+-- example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] Named
+-- ports apply to all instances in this instance group.
+iiNamedPorts :: Lens' InstanceGroup [NamedPort]
+iiNamedPorts
+  = lens _iiNamedPorts (\ s a -> s{_iiNamedPorts = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroup where
+        parseJSON
+          = withObject "InstanceGroup"
+              (\ o ->
+                 InstanceGroup <$>
+                   (o .:? "size") <*>
+                     (o .:? "kind" .!= "compute#instanceGroup")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "network")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "namedPorts" .!= mempty))
+
+instance ToJSON InstanceGroup where
+        toJSON InstanceGroup{..}
+          = object
+              (catMaybes
+                 [("size" .=) <$> _iiSize, Just ("kind" .= _iiKind),
+                  ("fingerprint" .=) <$> _iiFingerprint,
+                  ("network" .=) <$> _iiNetwork,
+                  ("zone" .=) <$> _iiZone,
+                  ("selfLink" .=) <$> _iiSelfLink,
+                  ("name" .=) <$> _iiName,
+                  ("creationTimestamp" .=) <$> _iiCreationTimestamp,
+                  ("id" .=) <$> _iiId,
+                  ("description" .=) <$> _iiDescription,
+                  ("namedPorts" .=) <$> _iiNamedPorts])
+
+-- | Contains a list of Snapshot resources.
+--
+-- /See:/ 'snapshotList' smart constructor.
+data SnapshotList = SnapshotList
+    { _slNextPageToken :: !(Maybe Text)
+    , _slKind          :: !Text
+    , _slItems         :: !(Maybe [Snapshot])
+    , _slSelfLink      :: !(Maybe Text)
+    , _slId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slNextPageToken'
+--
+-- * 'slKind'
+--
+-- * 'slItems'
+--
+-- * 'slSelfLink'
+--
+-- * 'slId'
+snapshotList
+    :: SnapshotList
+snapshotList =
+    SnapshotList
+    { _slNextPageToken = Nothing
+    , _slKind = "compute#snapshotList"
+    , _slItems = Nothing
+    , _slSelfLink = Nothing
+    , _slId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+slNextPageToken :: Lens' SnapshotList (Maybe Text)
+slNextPageToken
+  = lens _slNextPageToken
+      (\ s a -> s{_slNextPageToken = a})
+
+-- | Type of resource.
+slKind :: Lens' SnapshotList Text
+slKind = lens _slKind (\ s a -> s{_slKind = a})
+
+-- | A list of Snapshot resources.
+slItems :: Lens' SnapshotList [Snapshot]
+slItems
+  = lens _slItems (\ s a -> s{_slItems = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] Server-defined URL for this resource.
+slSelfLink :: Lens' SnapshotList (Maybe Text)
+slSelfLink
+  = lens _slSelfLink (\ s a -> s{_slSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+slId :: Lens' SnapshotList (Maybe Text)
+slId = lens _slId (\ s a -> s{_slId = a})
+
+instance FromJSON SnapshotList where
+        parseJSON
+          = withObject "SnapshotList"
+              (\ o ->
+                 SnapshotList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#snapshotList")
+                     <*> (o .:? "items" .!= mempty)
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON SnapshotList where
+        toJSON SnapshotList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _slNextPageToken,
+                  Just ("kind" .= _slKind), ("items" .=) <$> _slItems,
+                  ("selfLink" .=) <$> _slSelfLink,
+                  ("id" .=) <$> _slId])
+
+--
+-- /See:/ 'testFailure' smart constructor.
+data TestFailure = TestFailure
+    { _tfPath            :: !(Maybe Text)
+    , _tfExpectedService :: !(Maybe Text)
+    , _tfHost            :: !(Maybe Text)
+    , _tfActualService   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TestFailure' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tfPath'
+--
+-- * 'tfExpectedService'
+--
+-- * 'tfHost'
+--
+-- * 'tfActualService'
+testFailure
+    :: TestFailure
+testFailure =
+    TestFailure
+    { _tfPath = Nothing
+    , _tfExpectedService = Nothing
+    , _tfHost = Nothing
+    , _tfActualService = Nothing
+    }
+
+tfPath :: Lens' TestFailure (Maybe Text)
+tfPath = lens _tfPath (\ s a -> s{_tfPath = a})
+
+tfExpectedService :: Lens' TestFailure (Maybe Text)
+tfExpectedService
+  = lens _tfExpectedService
+      (\ s a -> s{_tfExpectedService = a})
+
+tfHost :: Lens' TestFailure (Maybe Text)
+tfHost = lens _tfHost (\ s a -> s{_tfHost = a})
+
+tfActualService :: Lens' TestFailure (Maybe Text)
+tfActualService
+  = lens _tfActualService
+      (\ s a -> s{_tfActualService = a})
+
+instance FromJSON TestFailure where
+        parseJSON
+          = withObject "TestFailure"
+              (\ o ->
+                 TestFailure <$>
+                   (o .:? "path") <*> (o .:? "expectedService") <*>
+                     (o .:? "host")
+                     <*> (o .:? "actualService"))
+
+instance ToJSON TestFailure where
+        toJSON TestFailure{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _tfPath,
+                  ("expectedService" .=) <$> _tfExpectedService,
+                  ("host" .=) <$> _tfHost,
+                  ("actualService" .=) <$> _tfActualService])
+
+-- | An instance\'s serial console output.
+--
+-- /See:/ 'serialPortOutput' smart constructor.
+data SerialPortOutput = SerialPortOutput
+    { _spoContents :: !(Maybe Text)
+    , _spoKind     :: !Text
+    , _spoSelfLink :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SerialPortOutput' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'spoContents'
+--
+-- * 'spoKind'
+--
+-- * 'spoSelfLink'
+serialPortOutput
+    :: SerialPortOutput
+serialPortOutput =
+    SerialPortOutput
+    { _spoContents = Nothing
+    , _spoKind = "compute#serialPortOutput"
+    , _spoSelfLink = Nothing
+    }
+
+-- | [Output Only] The contents of the console output.
+spoContents :: Lens' SerialPortOutput (Maybe Text)
+spoContents
+  = lens _spoContents (\ s a -> s{_spoContents = a})
+
+-- | [Output Only] Type of the resource. Always compute#serialPortOutput for
+-- serial port output.
+spoKind :: Lens' SerialPortOutput Text
+spoKind = lens _spoKind (\ s a -> s{_spoKind = a})
+
+-- | [Output Only] Server defined URL for the resource.
+spoSelfLink :: Lens' SerialPortOutput (Maybe Text)
+spoSelfLink
+  = lens _spoSelfLink (\ s a -> s{_spoSelfLink = a})
+
+instance FromJSON SerialPortOutput where
+        parseJSON
+          = withObject "SerialPortOutput"
+              (\ o ->
+                 SerialPortOutput <$>
+                   (o .:? "contents") <*>
+                     (o .:? "kind" .!= "compute#serialPortOutput")
+                     <*> (o .:? "selfLink"))
+
+instance ToJSON SerialPortOutput where
+        toJSON SerialPortOutput{..}
+          = object
+              (catMaybes
+                 [("contents" .=) <$> _spoContents,
+                  Just ("kind" .= _spoKind),
+                  ("selfLink" .=) <$> _spoSelfLink])
+
+--
+-- /See:/ 'targetVPNGatewayAggregatedList' smart constructor.
+data TargetVPNGatewayAggregatedList = TargetVPNGatewayAggregatedList
+    { _tvgalNextPageToken :: !(Maybe Text)
+    , _tvgalKind          :: !Text
+    , _tvgalItems         :: !(Maybe TargetVPNGatewayAggregatedListItems)
+    , _tvgalSelfLink      :: !(Maybe Text)
+    , _tvgalId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewayAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgalNextPageToken'
+--
+-- * 'tvgalKind'
+--
+-- * 'tvgalItems'
+--
+-- * 'tvgalSelfLink'
+--
+-- * 'tvgalId'
+targetVPNGatewayAggregatedList
+    :: TargetVPNGatewayAggregatedList
+targetVPNGatewayAggregatedList =
+    TargetVPNGatewayAggregatedList
+    { _tvgalNextPageToken = Nothing
+    , _tvgalKind = "compute#targetVpnGatewayAggregatedList"
+    , _tvgalItems = Nothing
+    , _tvgalSelfLink = Nothing
+    , _tvgalId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+tvgalNextPageToken :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
+tvgalNextPageToken
+  = lens _tvgalNextPageToken
+      (\ s a -> s{_tvgalNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#targetVpnGateway for
+-- target VPN gateways.
+tvgalKind :: Lens' TargetVPNGatewayAggregatedList Text
+tvgalKind
+  = lens _tvgalKind (\ s a -> s{_tvgalKind = a})
+
+-- | A map of scoped target vpn gateway lists.
+tvgalItems :: Lens' TargetVPNGatewayAggregatedList (Maybe TargetVPNGatewayAggregatedListItems)
+tvgalItems
+  = lens _tvgalItems (\ s a -> s{_tvgalItems = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+tvgalSelfLink :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
+tvgalSelfLink
+  = lens _tvgalSelfLink
+      (\ s a -> s{_tvgalSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource. Defined by the server.
+tvgalId :: Lens' TargetVPNGatewayAggregatedList (Maybe Text)
+tvgalId = lens _tvgalId (\ s a -> s{_tvgalId = a})
+
+instance FromJSON TargetVPNGatewayAggregatedList
+         where
+        parseJSON
+          = withObject "TargetVPNGatewayAggregatedList"
+              (\ o ->
+                 TargetVPNGatewayAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!=
+                        "compute#targetVpnGatewayAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON TargetVPNGatewayAggregatedList where
+        toJSON TargetVPNGatewayAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tvgalNextPageToken,
+                  Just ("kind" .= _tvgalKind),
+                  ("items" .=) <$> _tvgalItems,
+                  ("selfLink" .=) <$> _tvgalSelfLink,
+                  ("id" .=) <$> _tvgalId])
+
+--
+-- /See:/ 'metadataItemsItem' smart constructor.
+data MetadataItemsItem = MetadataItemsItem
+    { _miiValue :: !(Maybe Text)
+    , _miiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MetadataItemsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'miiValue'
+--
+-- * 'miiKey'
+metadataItemsItem
+    :: MetadataItemsItem
+metadataItemsItem =
+    MetadataItemsItem
+    { _miiValue = Nothing
+    , _miiKey = Nothing
+    }
+
+-- | Value for the metadata entry. These are free-form strings, and only have
+-- meaning as interpreted by the image running in the instance. The only
+-- restriction placed on values is that their size must be less than or
+-- equal to 32768 bytes.
+miiValue :: Lens' MetadataItemsItem (Maybe Text)
+miiValue = lens _miiValue (\ s a -> s{_miiValue = a})
+
+-- | Key for the metadata entry. Keys must conform to the following regexp:
+-- [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected
+-- as part of a URL in the metadata server. Additionally, to avoid
+-- ambiguity, keys must not conflict with any other metadata keys for the
+-- project.
+miiKey :: Lens' MetadataItemsItem (Maybe Text)
+miiKey = lens _miiKey (\ s a -> s{_miiKey = a})
+
+instance FromJSON MetadataItemsItem where
+        parseJSON
+          = withObject "MetadataItemsItem"
+              (\ o ->
+                 MetadataItemsItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON MetadataItemsItem where
+        toJSON MetadataItemsItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _miiValue, ("key" .=) <$> _miiKey])
+
+-- | A TargetHttpsProxy resource. This resource defines an HTTPS proxy.
+--
+-- /See:/ 'targetHTTPSProxy' smart constructor.
+data TargetHTTPSProxy = TargetHTTPSProxy
+    { _thpURLMap            :: !(Maybe Text)
+    , _thpSSLCertificates   :: !(Maybe [Text])
+    , _thpKind              :: !Text
+    , _thpSelfLink          :: !(Maybe Text)
+    , _thpName              :: !(Maybe Text)
+    , _thpCreationTimestamp :: !(Maybe Text)
+    , _thpId                :: !(Maybe (Textual Word64))
+    , _thpDescription       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpURLMap'
+--
+-- * 'thpSSLCertificates'
+--
+-- * 'thpKind'
+--
+-- * 'thpSelfLink'
+--
+-- * 'thpName'
+--
+-- * 'thpCreationTimestamp'
+--
+-- * 'thpId'
+--
+-- * 'thpDescription'
+targetHTTPSProxy
+    :: TargetHTTPSProxy
+targetHTTPSProxy =
+    TargetHTTPSProxy
+    { _thpURLMap = Nothing
+    , _thpSSLCertificates = Nothing
+    , _thpKind = "compute#targetHttpsProxy"
+    , _thpSelfLink = Nothing
+    , _thpName = Nothing
+    , _thpCreationTimestamp = Nothing
+    , _thpId = Nothing
+    , _thpDescription = Nothing
+    }
+
+-- | URL to the UrlMap resource that defines the mapping from URL to the
+-- BackendService.
+thpURLMap :: Lens' TargetHTTPSProxy (Maybe Text)
+thpURLMap
+  = lens _thpURLMap (\ s a -> s{_thpURLMap = a})
+
+-- | URLs to SslCertificate resources that are used to authenticate
+-- connections to Backends. Currently exactly one SSL certificate must be
+-- specified.
+thpSSLCertificates :: Lens' TargetHTTPSProxy [Text]
+thpSSLCertificates
+  = lens _thpSSLCertificates
+      (\ s a -> s{_thpSSLCertificates = a})
+      . _Default
+      . _Coerce
+
+-- | Type of the resource.
+thpKind :: Lens' TargetHTTPSProxy Text
+thpKind = lens _thpKind (\ s a -> s{_thpKind = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+thpSelfLink :: Lens' TargetHTTPSProxy (Maybe Text)
+thpSelfLink
+  = lens _thpSelfLink (\ s a -> s{_thpSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+thpName :: Lens' TargetHTTPSProxy (Maybe Text)
+thpName = lens _thpName (\ s a -> s{_thpName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+thpCreationTimestamp :: Lens' TargetHTTPSProxy (Maybe Text)
+thpCreationTimestamp
+  = lens _thpCreationTimestamp
+      (\ s a -> s{_thpCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+thpId :: Lens' TargetHTTPSProxy (Maybe Word64)
+thpId
+  = lens _thpId (\ s a -> s{_thpId = a}) .
+      mapping _Coerce
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+thpDescription :: Lens' TargetHTTPSProxy (Maybe Text)
+thpDescription
+  = lens _thpDescription
+      (\ s a -> s{_thpDescription = a})
+
+instance FromJSON TargetHTTPSProxy where
+        parseJSON
+          = withObject "TargetHTTPSProxy"
+              (\ o ->
+                 TargetHTTPSProxy <$>
+                   (o .:? "urlMap") <*>
+                     (o .:? "sslCertificates" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#targetHttpsProxy")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description"))
+
+instance ToJSON TargetHTTPSProxy where
+        toJSON TargetHTTPSProxy{..}
+          = object
+              (catMaybes
+                 [("urlMap" .=) <$> _thpURLMap,
+                  ("sslCertificates" .=) <$> _thpSSLCertificates,
+                  Just ("kind" .= _thpKind),
+                  ("selfLink" .=) <$> _thpSelfLink,
+                  ("name" .=) <$> _thpName,
+                  ("creationTimestamp" .=) <$> _thpCreationTimestamp,
+                  ("id" .=) <$> _thpId,
+                  ("description" .=) <$> _thpDescription])
+
+--
+-- /See:/ 'targetVPNGatewaysScopedList' smart constructor.
+data TargetVPNGatewaysScopedList = TargetVPNGatewaysScopedList
+    { _tvgslTargetVPNGateways :: !(Maybe [TargetVPNGateway])
+    , _tvgslWarning           :: !(Maybe TargetVPNGatewaysScopedListWarning)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgslTargetVPNGateways'
+--
+-- * 'tvgslWarning'
+targetVPNGatewaysScopedList
+    :: TargetVPNGatewaysScopedList
+targetVPNGatewaysScopedList =
+    TargetVPNGatewaysScopedList
+    { _tvgslTargetVPNGateways = Nothing
+    , _tvgslWarning = Nothing
+    }
+
+-- | [Output Only] List of target vpn gateways contained in this scope.
+tvgslTargetVPNGateways :: Lens' TargetVPNGatewaysScopedList [TargetVPNGateway]
+tvgslTargetVPNGateways
+  = lens _tvgslTargetVPNGateways
+      (\ s a -> s{_tvgslTargetVPNGateways = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Informational warning which replaces the list of addresses
+-- when the list is empty.
+tvgslWarning :: Lens' TargetVPNGatewaysScopedList (Maybe TargetVPNGatewaysScopedListWarning)
+tvgslWarning
+  = lens _tvgslWarning (\ s a -> s{_tvgslWarning = a})
+
+instance FromJSON TargetVPNGatewaysScopedList where
+        parseJSON
+          = withObject "TargetVPNGatewaysScopedList"
+              (\ o ->
+                 TargetVPNGatewaysScopedList <$>
+                   (o .:? "targetVpnGateways" .!= mempty) <*>
+                     (o .:? "warning"))
+
+instance ToJSON TargetVPNGatewaysScopedList where
+        toJSON TargetVPNGatewaysScopedList{..}
+          = object
+              (catMaybes
+                 [("targetVpnGateways" .=) <$>
+                    _tvgslTargetVPNGateways,
+                  ("warning" .=) <$> _tvgslWarning])
+
+-- | An access configuration attached to an instance\'s network interface.
+--
+-- /See:/ 'accessConfig' smart constructor.
+data AccessConfig = AccessConfig
+    { _acKind  :: !Text
+    , _acName  :: !(Maybe Text)
+    , _acNATIP :: !(Maybe Text)
+    , _acType  :: !AccessConfigType
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AccessConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acKind'
+--
+-- * 'acName'
+--
+-- * 'acNATIP'
+--
+-- * 'acType'
+accessConfig
+    :: AccessConfig
+accessConfig =
+    AccessConfig
+    { _acKind = "compute#accessConfig"
+    , _acName = Nothing
+    , _acNATIP = Nothing
+    , _acType = OneToOneNAT
+    }
+
+-- | [Output Only] Type of the resource. Always compute#accessConfig for
+-- access configs.
+acKind :: Lens' AccessConfig Text
+acKind = lens _acKind (\ s a -> s{_acKind = a})
+
+-- | Name of this access configuration.
+acName :: Lens' AccessConfig (Maybe Text)
+acName = lens _acName (\ s a -> s{_acName = a})
+
+-- | An external IP address associated with this instance. Specify an unused
+-- static external IP address available to the project or leave this field
+-- undefined to use an IP from a shared ephemeral IP address pool. If you
+-- specify a static external IP address, it must live in the same region as
+-- the zone of the instance.
+acNATIP :: Lens' AccessConfig (Maybe Text)
+acNATIP = lens _acNATIP (\ s a -> s{_acNATIP = a})
+
+-- | The type of configuration. The default and only option is
+-- ONE_TO_ONE_NAT.
+acType :: Lens' AccessConfig AccessConfigType
+acType = lens _acType (\ s a -> s{_acType = a})
+
+instance FromJSON AccessConfig where
+        parseJSON
+          = withObject "AccessConfig"
+              (\ o ->
+                 AccessConfig <$>
+                   (o .:? "kind" .!= "compute#accessConfig") <*>
+                     (o .:? "name")
+                     <*> (o .:? "natIP")
+                     <*> (o .:? "type" .!= OneToOneNAT))
+
+instance ToJSON AccessConfig where
+        toJSON AccessConfig{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _acKind), ("name" .=) <$> _acName,
+                  ("natIP" .=) <$> _acNATIP, Just ("type" .= _acType)])
+
+--
+-- /See:/ 'managedInstanceLastAttemptErrorsErrorsItem' smart constructor.
+data ManagedInstanceLastAttemptErrorsErrorsItem = ManagedInstanceLastAttemptErrorsErrorsItem
+    { _milaeeiLocation :: !(Maybe Text)
+    , _milaeeiCode     :: !(Maybe Text)
+    , _milaeeiMessage  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ManagedInstanceLastAttemptErrorsErrorsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'milaeeiLocation'
+--
+-- * 'milaeeiCode'
+--
+-- * 'milaeeiMessage'
+managedInstanceLastAttemptErrorsErrorsItem
+    :: ManagedInstanceLastAttemptErrorsErrorsItem
+managedInstanceLastAttemptErrorsErrorsItem =
+    ManagedInstanceLastAttemptErrorsErrorsItem
+    { _milaeeiLocation = Nothing
+    , _milaeeiCode = Nothing
+    , _milaeeiMessage = Nothing
+    }
+
+-- | [Output Only] Indicates the field in the request which caused the error.
+-- This property is optional.
+milaeeiLocation :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
+milaeeiLocation
+  = lens _milaeeiLocation
+      (\ s a -> s{_milaeeiLocation = a})
+
+-- | [Output Only] The error type identifier for this error.
+milaeeiCode :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
+milaeeiCode
+  = lens _milaeeiCode (\ s a -> s{_milaeeiCode = a})
+
+-- | [Output Only] An optional, human-readable error message.
+milaeeiMessage :: Lens' ManagedInstanceLastAttemptErrorsErrorsItem (Maybe Text)
+milaeeiMessage
+  = lens _milaeeiMessage
+      (\ s a -> s{_milaeeiMessage = a})
+
+instance FromJSON
+         ManagedInstanceLastAttemptErrorsErrorsItem where
+        parseJSON
+          = withObject
+              "ManagedInstanceLastAttemptErrorsErrorsItem"
+              (\ o ->
+                 ManagedInstanceLastAttemptErrorsErrorsItem <$>
+                   (o .:? "location") <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON
+         ManagedInstanceLastAttemptErrorsErrorsItem where
+        toJSON ManagedInstanceLastAttemptErrorsErrorsItem{..}
+          = object
+              (catMaybes
+                 [("location" .=) <$> _milaeeiLocation,
+                  ("code" .=) <$> _milaeeiCode,
+                  ("message" .=) <$> _milaeeiMessage])
+
+--
+-- /See:/ 'instancesScopedListWarningDataItem' smart constructor.
+data InstancesScopedListWarningDataItem = InstancesScopedListWarningDataItem
+    { _islwdiValue :: !(Maybe Text)
+    , _islwdiKey   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesScopedListWarningDataItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'islwdiValue'
+--
+-- * 'islwdiKey'
+instancesScopedListWarningDataItem
+    :: InstancesScopedListWarningDataItem
+instancesScopedListWarningDataItem =
+    InstancesScopedListWarningDataItem
+    { _islwdiValue = Nothing
+    , _islwdiKey = Nothing
+    }
+
+-- | [Output Only] A warning data value corresponding to the key.
+islwdiValue :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
+islwdiValue
+  = lens _islwdiValue (\ s a -> s{_islwdiValue = a})
+
+-- | [Output Only] A key for the warning data.
+islwdiKey :: Lens' InstancesScopedListWarningDataItem (Maybe Text)
+islwdiKey
+  = lens _islwdiKey (\ s a -> s{_islwdiKey = a})
+
+instance FromJSON InstancesScopedListWarningDataItem
+         where
+        parseJSON
+          = withObject "InstancesScopedListWarningDataItem"
+              (\ o ->
+                 InstancesScopedListWarningDataItem <$>
+                   (o .:? "value") <*> (o .:? "key"))
+
+instance ToJSON InstancesScopedListWarningDataItem
+         where
+        toJSON InstancesScopedListWarningDataItem{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _islwdiValue,
+                  ("key" .=) <$> _islwdiKey])
+
+-- | A BackendService resource. This resource defines a group of backend
+-- virtual machines together with their serving capacity.
+--
+-- /See:/ 'backendService' smart constructor.
+data BackendService = BackendService
+    { _bsBackends          :: !(Maybe [Backend])
+    , _bsKind              :: !Text
+    , _bsFingerprint       :: !(Maybe (Textual Word8))
+    , _bsProtocol          :: !(Maybe BackendServiceProtocol)
+    , _bsSelfLink          :: !(Maybe Text)
+    , _bsName              :: !(Maybe Text)
+    , _bsCreationTimestamp :: !(Maybe Text)
+    , _bsId                :: !(Maybe (Textual Word64))
+    , _bsTimeoutSec        :: !(Maybe (Textual Int32))
+    , _bsDescription       :: !(Maybe Text)
+    , _bsPortName          :: !(Maybe Text)
+    , _bsHealthChecks      :: !(Maybe [Text])
+    , _bsPort              :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendService' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsBackends'
+--
+-- * 'bsKind'
+--
+-- * 'bsFingerprint'
+--
+-- * 'bsProtocol'
+--
+-- * 'bsSelfLink'
+--
+-- * 'bsName'
+--
+-- * 'bsCreationTimestamp'
+--
+-- * 'bsId'
+--
+-- * 'bsTimeoutSec'
+--
+-- * 'bsDescription'
+--
+-- * 'bsPortName'
+--
+-- * 'bsHealthChecks'
+--
+-- * 'bsPort'
+backendService
+    :: BackendService
+backendService =
+    BackendService
+    { _bsBackends = Nothing
+    , _bsKind = "compute#backendService"
+    , _bsFingerprint = Nothing
+    , _bsProtocol = Nothing
+    , _bsSelfLink = Nothing
+    , _bsName = Nothing
+    , _bsCreationTimestamp = Nothing
+    , _bsId = Nothing
+    , _bsTimeoutSec = Nothing
+    , _bsDescription = Nothing
+    , _bsPortName = Nothing
+    , _bsHealthChecks = Nothing
+    , _bsPort = Nothing
+    }
+
+-- | The list of backends that serve this BackendService.
+bsBackends :: Lens' BackendService [Backend]
+bsBackends
+  = lens _bsBackends (\ s a -> s{_bsBackends = a}) .
+      _Default
+      . _Coerce
+
+-- | [Output Only] Type of resource. Always compute#backendService for
+-- backend services.
+bsKind :: Lens' BackendService Text
+bsKind = lens _bsKind (\ s a -> s{_bsKind = a})
+
+-- | Fingerprint of this resource. A hash of the contents stored in this
+-- object. This field is used in optimistic locking. This field will be
+-- ignored when inserting a BackendService. An up-to-date fingerprint must
+-- be provided in order to update the BackendService.
+bsFingerprint :: Lens' BackendService (Maybe Word8)
+bsFingerprint
+  = lens _bsFingerprint
+      (\ s a -> s{_bsFingerprint = a})
+      . mapping _Coerce
+
+bsProtocol :: Lens' BackendService (Maybe BackendServiceProtocol)
+bsProtocol
+  = lens _bsProtocol (\ s a -> s{_bsProtocol = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+bsSelfLink :: Lens' BackendService (Maybe Text)
+bsSelfLink
+  = lens _bsSelfLink (\ s a -> s{_bsSelfLink = a})
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+bsName :: Lens' BackendService (Maybe Text)
+bsName = lens _bsName (\ s a -> s{_bsName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+bsCreationTimestamp :: Lens' BackendService (Maybe Text)
+bsCreationTimestamp
+  = lens _bsCreationTimestamp
+      (\ s a -> s{_bsCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+bsId :: Lens' BackendService (Maybe Word64)
+bsId
+  = lens _bsId (\ s a -> s{_bsId = a}) .
+      mapping _Coerce
+
+-- | How many seconds to wait for the backend before considering it a failed
+-- request. Default is 30 seconds.
+bsTimeoutSec :: Lens' BackendService (Maybe Int32)
+bsTimeoutSec
+  = lens _bsTimeoutSec (\ s a -> s{_bsTimeoutSec = a})
+      . mapping _Coerce
+
+-- | An optional textual description of the resource. Provided by the client
+-- when the resource is created.
+bsDescription :: Lens' BackendService (Maybe Text)
+bsDescription
+  = lens _bsDescription
+      (\ s a -> s{_bsDescription = a})
+
+-- | Name of backend port. The same name should appear in the resource views
+-- referenced by this service. Required.
+bsPortName :: Lens' BackendService (Maybe Text)
+bsPortName
+  = lens _bsPortName (\ s a -> s{_bsPortName = a})
+
+-- | The list of URLs to the HttpHealthCheck resource for health checking
+-- this BackendService. Currently at most one health check can be
+-- specified, and a health check is required.
+bsHealthChecks :: Lens' BackendService [Text]
+bsHealthChecks
+  = lens _bsHealthChecks
+      (\ s a -> s{_bsHealthChecks = a})
+      . _Default
+      . _Coerce
+
+-- | Deprecated in favor of port name. The TCP port to connect on the
+-- backend. The default value is 80.
+bsPort :: Lens' BackendService (Maybe Int32)
+bsPort
+  = lens _bsPort (\ s a -> s{_bsPort = a}) .
+      mapping _Coerce
+
+instance FromJSON BackendService where
+        parseJSON
+          = withObject "BackendService"
+              (\ o ->
+                 BackendService <$>
+                   (o .:? "backends" .!= mempty) <*>
+                     (o .:? "kind" .!= "compute#backendService")
+                     <*> (o .:? "fingerprint")
+                     <*> (o .:? "protocol")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "timeoutSec")
+                     <*> (o .:? "description")
+                     <*> (o .:? "portName")
+                     <*> (o .:? "healthChecks" .!= mempty)
+                     <*> (o .:? "port"))
+
+instance ToJSON BackendService where
+        toJSON BackendService{..}
+          = object
+              (catMaybes
+                 [("backends" .=) <$> _bsBackends,
+                  Just ("kind" .= _bsKind),
+                  ("fingerprint" .=) <$> _bsFingerprint,
+                  ("protocol" .=) <$> _bsProtocol,
+                  ("selfLink" .=) <$> _bsSelfLink,
+                  ("name" .=) <$> _bsName,
+                  ("creationTimestamp" .=) <$> _bsCreationTimestamp,
+                  ("id" .=) <$> _bsId,
+                  ("timeoutSec" .=) <$> _bsTimeoutSec,
+                  ("description" .=) <$> _bsDescription,
+                  ("portName" .=) <$> _bsPortName,
+                  ("healthChecks" .=) <$> _bsHealthChecks,
+                  ("port" .=) <$> _bsPort])
+
+--
+-- /See:/ 'instanceMoveRequest' smart constructor.
+data InstanceMoveRequest = InstanceMoveRequest
+    { _imrTargetInstance  :: !(Maybe Text)
+    , _imrDestinationZone :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceMoveRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imrTargetInstance'
+--
+-- * 'imrDestinationZone'
+instanceMoveRequest
+    :: InstanceMoveRequest
+instanceMoveRequest =
+    InstanceMoveRequest
+    { _imrTargetInstance = Nothing
+    , _imrDestinationZone = Nothing
+    }
+
+-- | The URL of the target instance to move. This can be a full or partial
+-- URL. For example, the following are all valid URLs to an instance: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone\/instances\/instance
+-- - projects\/project\/zones\/zone\/instances\/instance -
+-- zones\/zone\/instances\/instance
+imrTargetInstance :: Lens' InstanceMoveRequest (Maybe Text)
+imrTargetInstance
+  = lens _imrTargetInstance
+      (\ s a -> s{_imrTargetInstance = a})
+
+-- | The URL of the destination zone to move the instance to. This can be a
+-- full or partial URL. For example, the following are all valid URLs to a
+-- zone: -
+-- https:\/\/www.googleapis.com\/compute\/v1\/projects\/project\/zones\/zone
+-- - projects\/project\/zones\/zone - zones\/zone
+imrDestinationZone :: Lens' InstanceMoveRequest (Maybe Text)
+imrDestinationZone
+  = lens _imrDestinationZone
+      (\ s a -> s{_imrDestinationZone = a})
+
+instance FromJSON InstanceMoveRequest where
+        parseJSON
+          = withObject "InstanceMoveRequest"
+              (\ o ->
+                 InstanceMoveRequest <$>
+                   (o .:? "targetInstance") <*>
+                     (o .:? "destinationZone"))
+
+instance ToJSON InstanceMoveRequest where
+        toJSON InstanceMoveRequest{..}
+          = object
+              (catMaybes
+                 [("targetInstance" .=) <$> _imrTargetInstance,
+                  ("destinationZone" .=) <$> _imrDestinationZone])
+
+--
+-- /See:/ 'instanceGroupsScopedList' smart constructor.
+data InstanceGroupsScopedList = InstanceGroupsScopedList
+    { _igslWarning        :: !(Maybe InstanceGroupsScopedListWarning)
+    , _igslInstanceGroups :: !(Maybe [InstanceGroup])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsScopedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igslWarning'
+--
+-- * 'igslInstanceGroups'
+instanceGroupsScopedList
+    :: InstanceGroupsScopedList
+instanceGroupsScopedList =
+    InstanceGroupsScopedList
+    { _igslWarning = Nothing
+    , _igslInstanceGroups = Nothing
+    }
+
+-- | [Output Only] An informational warning that replaces the list of
+-- instance groups when the list is empty.
+igslWarning :: Lens' InstanceGroupsScopedList (Maybe InstanceGroupsScopedListWarning)
+igslWarning
+  = lens _igslWarning (\ s a -> s{_igslWarning = a})
+
+-- | [Output Only] The list of instance groups that are contained in this
+-- scope.
+igslInstanceGroups :: Lens' InstanceGroupsScopedList [InstanceGroup]
+igslInstanceGroups
+  = lens _igslInstanceGroups
+      (\ s a -> s{_igslInstanceGroups = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON InstanceGroupsScopedList where
+        parseJSON
+          = withObject "InstanceGroupsScopedList"
+              (\ o ->
+                 InstanceGroupsScopedList <$>
+                   (o .:? "warning") <*>
+                     (o .:? "instanceGroups" .!= mempty))
+
+instance ToJSON InstanceGroupsScopedList where
+        toJSON InstanceGroupsScopedList{..}
+          = object
+              (catMaybes
+                 [("warning" .=) <$> _igslWarning,
+                  ("instanceGroups" .=) <$> _igslInstanceGroups])
+
+-- | An HttpsHealthCheck resource. This resource defines a template for how
+-- individual instances should be checked for health, via HTTPS.
+--
+-- /See:/ 'httpsHealthCheck' smart constructor.
+data HTTPSHealthCheck = HTTPSHealthCheck
+    { _hhcHealthyThreshold   :: !(Maybe (Textual Int32))
+    , _hhcKind               :: !Text
+    , _hhcRequestPath        :: !(Maybe Text)
+    , _hhcSelfLink           :: !(Maybe Text)
+    , _hhcCheckIntervalSec   :: !(Maybe (Textual Int32))
+    , _hhcName               :: !(Maybe Text)
+    , _hhcCreationTimestamp  :: !(Maybe Text)
+    , _hhcId                 :: !(Maybe (Textual Word64))
+    , _hhcHost               :: !(Maybe Text)
+    , _hhcTimeoutSec         :: !(Maybe (Textual Int32))
+    , _hhcDescription        :: !(Maybe Text)
+    , _hhcUnhealthyThreshold :: !(Maybe (Textual Int32))
+    , _hhcPort               :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhcHealthyThreshold'
+--
+-- * 'hhcKind'
+--
+-- * 'hhcRequestPath'
+--
+-- * 'hhcSelfLink'
+--
+-- * 'hhcCheckIntervalSec'
+--
+-- * 'hhcName'
+--
+-- * 'hhcCreationTimestamp'
+--
+-- * 'hhcId'
+--
+-- * 'hhcHost'
+--
+-- * 'hhcTimeoutSec'
+--
+-- * 'hhcDescription'
+--
+-- * 'hhcUnhealthyThreshold'
+--
+-- * 'hhcPort'
+httpsHealthCheck
+    :: HTTPSHealthCheck
+httpsHealthCheck =
+    HTTPSHealthCheck
+    { _hhcHealthyThreshold = Nothing
+    , _hhcKind = "compute#httpsHealthCheck"
+    , _hhcRequestPath = Nothing
+    , _hhcSelfLink = Nothing
+    , _hhcCheckIntervalSec = Nothing
+    , _hhcName = Nothing
+    , _hhcCreationTimestamp = Nothing
+    , _hhcId = Nothing
+    , _hhcHost = Nothing
+    , _hhcTimeoutSec = Nothing
+    , _hhcDescription = Nothing
+    , _hhcUnhealthyThreshold = Nothing
+    , _hhcPort = Nothing
+    }
+
+-- | A so-far unhealthy instance will be marked healthy after this many
+-- consecutive successes. The default value is 2.
+hhcHealthyThreshold :: Lens' HTTPSHealthCheck (Maybe Int32)
+hhcHealthyThreshold
+  = lens _hhcHealthyThreshold
+      (\ s a -> s{_hhcHealthyThreshold = a})
+      . mapping _Coerce
+
+-- | Type of the resource.
+hhcKind :: Lens' HTTPSHealthCheck Text
+hhcKind = lens _hhcKind (\ s a -> s{_hhcKind = a})
+
+-- | The request path of the HTTPS health check request. The default value is
+-- \"\/\".
+hhcRequestPath :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcRequestPath
+  = lens _hhcRequestPath
+      (\ s a -> s{_hhcRequestPath = a})
+
+-- | [Output Only] Server-defined URL for the resource.
+hhcSelfLink :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcSelfLink
+  = lens _hhcSelfLink (\ s a -> s{_hhcSelfLink = a})
+
+-- | How often (in seconds) to send a health check. The default value is 5
+-- seconds.
+hhcCheckIntervalSec :: Lens' HTTPSHealthCheck (Maybe Int32)
+hhcCheckIntervalSec
+  = lens _hhcCheckIntervalSec
+      (\ s a -> s{_hhcCheckIntervalSec = a})
+      . mapping _Coerce
+
+-- | Name of the resource. Provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+hhcName :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcName = lens _hhcName (\ s a -> s{_hhcName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+hhcCreationTimestamp :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcCreationTimestamp
+  = lens _hhcCreationTimestamp
+      (\ s a -> s{_hhcCreationTimestamp = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+hhcId :: Lens' HTTPSHealthCheck (Maybe Word64)
+hhcId
+  = lens _hhcId (\ s a -> s{_hhcId = a}) .
+      mapping _Coerce
+
+-- | The value of the host header in the HTTPS health check request. If left
+-- empty (default value), the public IP on behalf of which this health
+-- check is performed will be used.
+hhcHost :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcHost = lens _hhcHost (\ s a -> s{_hhcHost = a})
+
+-- | How long (in seconds) to wait before claiming failure. The default value
+-- is 5 seconds. It is invalid for timeoutSec to have a greater value than
+-- checkIntervalSec.
+hhcTimeoutSec :: Lens' HTTPSHealthCheck (Maybe Int32)
+hhcTimeoutSec
+  = lens _hhcTimeoutSec
+      (\ s a -> s{_hhcTimeoutSec = a})
+      . mapping _Coerce
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+hhcDescription :: Lens' HTTPSHealthCheck (Maybe Text)
+hhcDescription
+  = lens _hhcDescription
+      (\ s a -> s{_hhcDescription = a})
+
+-- | A so-far healthy instance will be marked unhealthy after this many
+-- consecutive failures. The default value is 2.
+hhcUnhealthyThreshold :: Lens' HTTPSHealthCheck (Maybe Int32)
+hhcUnhealthyThreshold
+  = lens _hhcUnhealthyThreshold
+      (\ s a -> s{_hhcUnhealthyThreshold = a})
+      . mapping _Coerce
+
+-- | The TCP port number for the HTTPS health check request. The default
+-- value is 443.
+hhcPort :: Lens' HTTPSHealthCheck (Maybe Int32)
+hhcPort
+  = lens _hhcPort (\ s a -> s{_hhcPort = a}) .
+      mapping _Coerce
+
+instance FromJSON HTTPSHealthCheck where
+        parseJSON
+          = withObject "HTTPSHealthCheck"
+              (\ o ->
+                 HTTPSHealthCheck <$>
+                   (o .:? "healthyThreshold") <*>
+                     (o .:? "kind" .!= "compute#httpsHealthCheck")
+                     <*> (o .:? "requestPath")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "checkIntervalSec")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "id")
+                     <*> (o .:? "host")
+                     <*> (o .:? "timeoutSec")
+                     <*> (o .:? "description")
+                     <*> (o .:? "unhealthyThreshold")
+                     <*> (o .:? "port"))
+
+instance ToJSON HTTPSHealthCheck where
+        toJSON HTTPSHealthCheck{..}
+          = object
+              (catMaybes
+                 [("healthyThreshold" .=) <$> _hhcHealthyThreshold,
+                  Just ("kind" .= _hhcKind),
+                  ("requestPath" .=) <$> _hhcRequestPath,
+                  ("selfLink" .=) <$> _hhcSelfLink,
+                  ("checkIntervalSec" .=) <$> _hhcCheckIntervalSec,
+                  ("name" .=) <$> _hhcName,
+                  ("creationTimestamp" .=) <$> _hhcCreationTimestamp,
+                  ("id" .=) <$> _hhcId, ("host" .=) <$> _hhcHost,
+                  ("timeoutSec" .=) <$> _hhcTimeoutSec,
+                  ("description" .=) <$> _hhcDescription,
+                  ("unhealthyThreshold" .=) <$> _hhcUnhealthyThreshold,
+                  ("port" .=) <$> _hhcPort])
+
+-- | [Output Only] A map of scoped vpn tunnel lists.
+--
+-- /See:/ 'vpnTunnelAggregatedListItems' smart constructor.
+newtype VPNTunnelAggregatedListItems = VPNTunnelAggregatedListItems
+    { _vtaliAddtional :: HashMap Text VPNTunnelsScopedList
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelAggregatedListItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtaliAddtional'
+vpnTunnelAggregatedListItems
+    :: HashMap Text VPNTunnelsScopedList -- ^ 'vtaliAddtional'
+    -> VPNTunnelAggregatedListItems
+vpnTunnelAggregatedListItems pVtaliAddtional_ =
+    VPNTunnelAggregatedListItems
+    { _vtaliAddtional = _Coerce # pVtaliAddtional_
+    }
+
+-- | Name of the scope containing this set of vpn tunnels.
+vtaliAddtional :: Lens' VPNTunnelAggregatedListItems (HashMap Text VPNTunnelsScopedList)
+vtaliAddtional
+  = lens _vtaliAddtional
+      (\ s a -> s{_vtaliAddtional = a})
+      . _Coerce
+
+instance FromJSON VPNTunnelAggregatedListItems where
+        parseJSON
+          = withObject "VPNTunnelAggregatedListItems"
+              (\ o ->
+                 VPNTunnelAggregatedListItems <$> (parseJSONObject o))
+
+instance ToJSON VPNTunnelAggregatedListItems where
+        toJSON = toJSON . _vtaliAddtional
+
+-- | A set of instance tags.
+--
+-- /See:/ 'tags' smart constructor.
+data Tags = Tags
+    { _tFingerprint :: !(Maybe (Textual Word8))
+    , _tItems       :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tFingerprint'
+--
+-- * 'tItems'
+tags
+    :: Tags
+tags =
+    Tags
+    { _tFingerprint = Nothing
+    , _tItems = Nothing
+    }
+
+-- | Specifies a fingerprint for this request, which is essentially a hash of
+-- the metadata\'s contents and used for optimistic locking. The
+-- fingerprint is initially generated by Compute Engine and changes after
+-- every request to modify or update metadata. You must always provide an
+-- up-to-date fingerprint hash in order to update or change metadata. To
+-- see the latest fingerprint, make get() request to the instance.
+tFingerprint :: Lens' Tags (Maybe Word8)
+tFingerprint
+  = lens _tFingerprint (\ s a -> s{_tFingerprint = a})
+      . mapping _Coerce
+
+-- | An array of tags. Each tag must be 1-63 characters long, and comply with
+-- RFC1035.
+tItems :: Lens' Tags [Text]
+tItems
+  = lens _tItems (\ s a -> s{_tItems = a}) . _Default .
+      _Coerce
+
+instance FromJSON Tags where
+        parseJSON
+          = withObject "Tags"
+              (\ o ->
+                 Tags <$>
+                   (o .:? "fingerprint") <*> (o .:? "items" .!= mempty))
+
+instance ToJSON Tags where
+        toJSON Tags{..}
+          = object
+              (catMaybes
+                 [("fingerprint" .=) <$> _tFingerprint,
+                  ("items" .=) <$> _tItems])
+
+--
+-- /See:/ 'addressAggregatedList' smart constructor.
+data AddressAggregatedList = AddressAggregatedList
+    { _addNextPageToken :: !(Maybe Text)
+    , _addKind          :: !Text
+    , _addItems         :: !(Maybe AddressAggregatedListItems)
+    , _addSelfLink      :: !(Maybe Text)
+    , _addId            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addNextPageToken'
+--
+-- * 'addKind'
+--
+-- * 'addItems'
+--
+-- * 'addSelfLink'
+--
+-- * 'addId'
+addressAggregatedList
+    :: AddressAggregatedList
+addressAggregatedList =
+    AddressAggregatedList
+    { _addNextPageToken = Nothing
+    , _addKind = "compute#addressAggregatedList"
+    , _addItems = Nothing
+    , _addSelfLink = Nothing
+    , _addId = Nothing
+    }
+
+-- | [Output Only] A token used to continue a truncated list request.
+addNextPageToken :: Lens' AddressAggregatedList (Maybe Text)
+addNextPageToken
+  = lens _addNextPageToken
+      (\ s a -> s{_addNextPageToken = a})
+
+-- | [Output Only] Type of resource. Always compute#addressAggregatedList for
+-- aggregated lists of addresses.
+addKind :: Lens' AddressAggregatedList Text
+addKind = lens _addKind (\ s a -> s{_addKind = a})
+
+-- | [Output Only] A map of scoped address lists.
+addItems :: Lens' AddressAggregatedList (Maybe AddressAggregatedListItems)
+addItems = lens _addItems (\ s a -> s{_addItems = a})
+
+-- | [Output Only] Server-defined URL for this resource.
+addSelfLink :: Lens' AddressAggregatedList (Maybe Text)
+addSelfLink
+  = lens _addSelfLink (\ s a -> s{_addSelfLink = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+addId :: Lens' AddressAggregatedList (Maybe Text)
+addId = lens _addId (\ s a -> s{_addId = a})
+
+instance FromJSON AddressAggregatedList where
+        parseJSON
+          = withObject "AddressAggregatedList"
+              (\ o ->
+                 AddressAggregatedList <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#addressAggregatedList")
+                     <*> (o .:? "items")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON AddressAggregatedList where
+        toJSON AddressAggregatedList{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _addNextPageToken,
+                  Just ("kind" .= _addKind),
+                  ("items" .=) <$> _addItems,
+                  ("selfLink" .=) <$> _addSelfLink,
+                  ("id" .=) <$> _addId])
+
+--
+-- /See:/ 'operationWarningsItem' smart constructor.
+data OperationWarningsItem = OperationWarningsItem
+    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])
+    , _owiCode    :: !(Maybe OperationWarningsItemCode)
+    , _owiMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'OperationWarningsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'owiData'
+--
+-- * 'owiCode'
+--
+-- * 'owiMessage'
+operationWarningsItem
+    :: OperationWarningsItem
+operationWarningsItem =
+    OperationWarningsItem
+    { _owiData = Nothing
+    , _owiCode = Nothing
+    , _owiMessage = Nothing
+    }
+
+-- | [Output Only] Metadata for this warning in key: value format.
+owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]
+owiData
+  = lens _owiData (\ s a -> s{_owiData = a}) . _Default
+      . _Coerce
+
+-- | [Output Only] The warning type identifier for this warning.
+owiCode :: Lens' OperationWarningsItem (Maybe OperationWarningsItemCode)
+owiCode = lens _owiCode (\ s a -> s{_owiCode = a})
+
+-- | [Output Only] Optional human-readable details for this warning.
+owiMessage :: Lens' OperationWarningsItem (Maybe Text)
+owiMessage
+  = lens _owiMessage (\ s a -> s{_owiMessage = a})
+
+instance FromJSON OperationWarningsItem where
+        parseJSON
+          = withObject "OperationWarningsItem"
+              (\ o ->
+                 OperationWarningsItem <$>
+                   (o .:? "data" .!= mempty) <*> (o .:? "code") <*>
+                     (o .:? "message"))
+
+instance ToJSON OperationWarningsItem where
+        toJSON OperationWarningsItem{..}
+          = object
+              (catMaybes
+                 [("data" .=) <$> _owiData, ("code" .=) <$> _owiCode,
+                  ("message" .=) <$> _owiMessage])
+
+-- | Message for the expected URL mappings.
+--
+-- /See:/ 'urlMapTest' smart constructor.
+data URLMapTest = URLMapTest
+    { _umtPath        :: !(Maybe Text)
+    , _umtService     :: !(Maybe Text)
+    , _umtHost        :: !(Maybe Text)
+    , _umtDescription :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapTest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umtPath'
+--
+-- * 'umtService'
+--
+-- * 'umtHost'
+--
+-- * 'umtDescription'
+urlMapTest
+    :: URLMapTest
+urlMapTest =
+    URLMapTest
+    { _umtPath = Nothing
+    , _umtService = Nothing
+    , _umtHost = Nothing
+    , _umtDescription = Nothing
+    }
+
+-- | Path portion of the URL.
+umtPath :: Lens' URLMapTest (Maybe Text)
+umtPath = lens _umtPath (\ s a -> s{_umtPath = a})
+
+-- | Expected BackendService resource the given URL should be mapped to.
+umtService :: Lens' URLMapTest (Maybe Text)
+umtService
+  = lens _umtService (\ s a -> s{_umtService = a})
+
+-- | Host portion of the URL.
+umtHost :: Lens' URLMapTest (Maybe Text)
+umtHost = lens _umtHost (\ s a -> s{_umtHost = a})
+
+-- | Description of this test case.
+umtDescription :: Lens' URLMapTest (Maybe Text)
+umtDescription
+  = lens _umtDescription
+      (\ s a -> s{_umtDescription = a})
+
+instance FromJSON URLMapTest where
+        parseJSON
+          = withObject "URLMapTest"
+              (\ o ->
+                 URLMapTest <$>
+                   (o .:? "path") <*> (o .:? "service") <*>
+                     (o .:? "host")
+                     <*> (o .:? "description"))
+
+instance ToJSON URLMapTest where
+        toJSON URLMapTest{..}
+          = object
+              (catMaybes
+                 [("path" .=) <$> _umtPath,
+                  ("service" .=) <$> _umtService,
+                  ("host" .=) <$> _umtHost,
+                  ("description" .=) <$> _umtDescription])
+
+-- | An Instance resource.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance
+    { _insnStatus            :: !(Maybe InstanceStatus)
+    , _insnServiceAccounts   :: !(Maybe [ServiceAccount])
+    , _insnNetworkInterfaces :: !(Maybe [NetworkInterface])
+    , _insnKind              :: !Text
+    , _insnZone              :: !(Maybe Text)
+    , _insnCPUPlatform       :: !(Maybe Text)
+    , _insnSelfLink          :: !(Maybe Text)
+    , _insnName              :: !(Maybe Text)
+    , _insnStatusMessage     :: !(Maybe Text)
+    , _insnCreationTimestamp :: !(Maybe Text)
+    , _insnMachineType       :: !(Maybe Text)
+    , _insnMetadata          :: !(Maybe Metadata)
+    , _insnId                :: !(Maybe (Textual Word64))
+    , _insnScheduling        :: !(Maybe Scheduling)
+    , _insnDisks             :: !(Maybe [AttachedDisk])
+    , _insnCanIPForward      :: !(Maybe Bool)
+    , _insnDescription       :: !(Maybe Text)
+    , _insnTags              :: !(Maybe Tags)
+    } 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:
+--
+-- * 'insnStatus'
+--
+-- * 'insnServiceAccounts'
+--
+-- * 'insnNetworkInterfaces'
+--
+-- * 'insnKind'
+--
+-- * 'insnZone'
+--
+-- * 'insnCPUPlatform'
+--
+-- * 'insnSelfLink'
+--
+-- * 'insnName'
+--
+-- * 'insnStatusMessage'
+--
+-- * 'insnCreationTimestamp'
+--
+-- * 'insnMachineType'
+--
+-- * 'insnMetadata'
+--
+-- * 'insnId'
+--
+-- * 'insnScheduling'
+--
+-- * 'insnDisks'
+--
+-- * 'insnCanIPForward'
+--
+-- * 'insnDescription'
+--
+-- * 'insnTags'
+instance'
+    :: Instance
+instance' =
+    Instance
+    { _insnStatus = Nothing
+    , _insnServiceAccounts = Nothing
+    , _insnNetworkInterfaces = Nothing
+    , _insnKind = "compute#instance"
+    , _insnZone = Nothing
+    , _insnCPUPlatform = Nothing
+    , _insnSelfLink = Nothing
+    , _insnName = Nothing
+    , _insnStatusMessage = Nothing
+    , _insnCreationTimestamp = Nothing
+    , _insnMachineType = Nothing
+    , _insnMetadata = Nothing
+    , _insnId = Nothing
+    , _insnScheduling = Nothing
+    , _insnDisks = Nothing
+    , _insnCanIPForward = Nothing
+    , _insnDescription = Nothing
+    , _insnTags = Nothing
+    }
+
+-- | [Output Only] The status of the instance. One of the following values:
+-- PROVISIONING, STAGING, RUNNING, STOPPING, and TERMINATED.
+insnStatus :: Lens' Instance (Maybe InstanceStatus)
+insnStatus
+  = lens _insnStatus (\ s a -> s{_insnStatus = a})
+
+-- | A list of service accounts, with their specified scopes, authorized for
+-- this instance. Service accounts generate access tokens that can be
+-- accessed through the metadata server and used to authenticate
+-- applications on the instance. See Authenticating from Google Compute
+-- Engine for more information.
+insnServiceAccounts :: Lens' Instance [ServiceAccount]
+insnServiceAccounts
+  = lens _insnServiceAccounts
+      (\ s a -> s{_insnServiceAccounts = a})
+      . _Default
+      . _Coerce
+
+-- | An array of configurations for this interface. This specifies how this
+-- interface is configured to interact with other network services, such as
+-- connecting to the internet.
+insnNetworkInterfaces :: Lens' Instance [NetworkInterface]
+insnNetworkInterfaces
+  = lens _insnNetworkInterfaces
+      (\ s a -> s{_insnNetworkInterfaces = a})
+      . _Default
+      . _Coerce
+
+-- | [Output Only] Type of the resource. Always compute#instance for
+-- instances.
+insnKind :: Lens' Instance Text
+insnKind = lens _insnKind (\ s a -> s{_insnKind = a})
+
+-- | [Output Only] URL of the zone where the instance resides.
+insnZone :: Lens' Instance (Maybe Text)
+insnZone = lens _insnZone (\ s a -> s{_insnZone = a})
+
+-- | [Output Only] The CPU platform used by this instance.
+insnCPUPlatform :: Lens' Instance (Maybe Text)
+insnCPUPlatform
+  = lens _insnCPUPlatform
+      (\ s a -> s{_insnCPUPlatform = a})
+
+-- | [Output Only] Server defined URL for this resource.
+insnSelfLink :: Lens' Instance (Maybe Text)
+insnSelfLink
+  = lens _insnSelfLink (\ s a -> s{_insnSelfLink = a})
+
+-- | Name of the resource; provided by the client when the resource is
+-- created. The name must be 1-63 characters long, and comply with RFC1035.
+-- Specifically, the name must be 1-63 characters long and match the
+-- regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+-- character must be a lowercase letter, and all following characters must
+-- be a dash, lowercase letter, or digit, except the last character, which
+-- cannot be a dash.
+insnName :: Lens' Instance (Maybe Text)
+insnName = lens _insnName (\ s a -> s{_insnName = a})
+
+-- | [Output Only] An optional, human-readable explanation of the status.
+insnStatusMessage :: Lens' Instance (Maybe Text)
+insnStatusMessage
+  = lens _insnStatusMessage
+      (\ s a -> s{_insnStatusMessage = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+insnCreationTimestamp :: Lens' Instance (Maybe Text)
+insnCreationTimestamp
+  = lens _insnCreationTimestamp
+      (\ s a -> s{_insnCreationTimestamp = a})
+
+-- | Full or partial URL of the machine type resource to use for this
+-- instance. This is provided by the client when the instance is created.
+-- For example, the following is a valid partial url:
+-- zones\/zone\/machineTypes\/machine-type
+insnMachineType :: Lens' Instance (Maybe Text)
+insnMachineType
+  = lens _insnMachineType
+      (\ s a -> s{_insnMachineType = a})
+
+-- | The metadata key\/value pairs assigned to this instance. This includes
+-- custom metadata and predefined keys.
+insnMetadata :: Lens' Instance (Maybe Metadata)
+insnMetadata
+  = lens _insnMetadata (\ s a -> s{_insnMetadata = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+insnId :: Lens' Instance (Maybe Word64)
+insnId
+  = lens _insnId (\ s a -> s{_insnId = a}) .
+      mapping _Coerce
+
+-- | Scheduling options for this instance.
+insnScheduling :: Lens' Instance (Maybe Scheduling)
+insnScheduling
+  = lens _insnScheduling
+      (\ s a -> s{_insnScheduling = a})
+
+-- | Array of disks associated with this instance. Persistent disks must be
+-- created before you can assign them.
+insnDisks :: Lens' Instance [AttachedDisk]
+insnDisks
+  = lens _insnDisks (\ s a -> s{_insnDisks = a}) .
+      _Default
+      . _Coerce
+
+-- | Allows this instance to send and receive packets with non-matching
+-- destination or source IPs. This is required if you plan to use this
+-- instance to forward routes. For more information, see Enabling IP
+-- Forwarding.
+insnCanIPForward :: Lens' Instance (Maybe Bool)
+insnCanIPForward
+  = lens _insnCanIPForward
+      (\ s a -> s{_insnCanIPForward = a})
+
+-- | An optional textual description of the resource; provided by the client
+-- when the resource is created.
+insnDescription :: Lens' Instance (Maybe Text)
+insnDescription
+  = lens _insnDescription
+      (\ s a -> s{_insnDescription = a})
+
+-- | A list of tags to appy to this instance. Tags are used to identify valid
+-- sources or targets for network firewalls and are specified by the client
+-- during instance creation. The tags can be later modified by the setTags
+-- method. Each tag within the list must comply with RFC1035.
+insnTags :: Lens' Instance (Maybe Tags)
+insnTags = lens _insnTags (\ s a -> s{_insnTags = a})
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ o ->
+                 Instance <$>
+                   (o .:? "status") <*>
+                     (o .:? "serviceAccounts" .!= mempty)
+                     <*> (o .:? "networkInterfaces" .!= mempty)
+                     <*> (o .:? "kind" .!= "compute#instance")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "cpuPlatform")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "id")
+                     <*> (o .:? "scheduling")
+                     <*> (o .:? "disks" .!= mempty)
+                     <*> (o .:? "canIpForward")
+                     <*> (o .:? "description")
+                     <*> (o .:? "tags"))
+
+instance ToJSON Instance where
+        toJSON Instance{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _insnStatus,
+                  ("serviceAccounts" .=) <$> _insnServiceAccounts,
+                  ("networkInterfaces" .=) <$> _insnNetworkInterfaces,
+                  Just ("kind" .= _insnKind),
+                  ("zone" .=) <$> _insnZone,
+                  ("cpuPlatform" .=) <$> _insnCPUPlatform,
+                  ("selfLink" .=) <$> _insnSelfLink,
+                  ("name" .=) <$> _insnName,
+                  ("statusMessage" .=) <$> _insnStatusMessage,
+                  ("creationTimestamp" .=) <$> _insnCreationTimestamp,
+                  ("machineType" .=) <$> _insnMachineType,
+                  ("metadata" .=) <$> _insnMetadata,
+                  ("id" .=) <$> _insnId,
+                  ("scheduling" .=) <$> _insnScheduling,
+                  ("disks" .=) <$> _insnDisks,
+                  ("canIpForward" .=) <$> _insnCanIPForward,
+                  ("description" .=) <$> _insnDescription,
+                  ("tags" .=) <$> _insnTags])
+
+-- | A matcher for the path portion of the URL. The BackendService from the
+-- longest-matched rule will serve the URL. If no rule was matched, the
+-- default service will be used.
+--
+-- /See:/ 'pathMatcher' smart constructor.
+data PathMatcher = PathMatcher
+    { _pmDefaultService :: !(Maybe Text)
+    , _pmName           :: !(Maybe Text)
+    , _pmPathRules      :: !(Maybe [PathRule])
+    , _pmDescription    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PathMatcher' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmDefaultService'
+--
+-- * 'pmName'
+--
+-- * 'pmPathRules'
+--
+-- * 'pmDescription'
+pathMatcher
+    :: PathMatcher
+pathMatcher =
+    PathMatcher
+    { _pmDefaultService = Nothing
+    , _pmName = Nothing
+    , _pmPathRules = Nothing
+    , _pmDescription = Nothing
+    }
+
+-- | The URL to the BackendService resource. This will be used if none of the
+-- \'pathRules\' defined by this PathMatcher is met by the URL\'s path
+-- portion.
+pmDefaultService :: Lens' PathMatcher (Maybe Text)
+pmDefaultService
+  = lens _pmDefaultService
+      (\ s a -> s{_pmDefaultService = a})
+
+-- | The name to which this PathMatcher is referred by the HostRule.
+pmName :: Lens' PathMatcher (Maybe Text)
+pmName = lens _pmName (\ s a -> s{_pmName = a})
+
+-- | The list of path rules.
+pmPathRules :: Lens' PathMatcher [PathRule]
+pmPathRules
+  = lens _pmPathRules (\ s a -> s{_pmPathRules = a}) .
+      _Default
+      . _Coerce
+
+-- | An optional textual description of the resource.
+pmDescription :: Lens' PathMatcher (Maybe Text)
+pmDescription
+  = lens _pmDescription
+      (\ s a -> s{_pmDescription = a})
+
+instance FromJSON PathMatcher where
+        parseJSON
+          = withObject "PathMatcher"
+              (\ o ->
+                 PathMatcher <$>
+                   (o .:? "defaultService") <*> (o .:? "name") <*>
+                     (o .:? "pathRules" .!= mempty)
+                     <*> (o .:? "description"))
+
+instance ToJSON PathMatcher where
+        toJSON PathMatcher{..}
+          = object
+              (catMaybes
+                 [("defaultService" .=) <$> _pmDefaultService,
+                  ("name" .=) <$> _pmName,
+                  ("pathRules" .=) <$> _pmPathRules,
+                  ("description" .=) <$> _pmDescription])
diff --git a/gen/Network/Google/Compute/Types/Sum.hs b/gen/Network/Google/Compute/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Compute/Types/Sum.hs
@@ -0,0 +1,2366 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Compute.Types.Sum
+-- Copyright   : (c) 2015 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.Compute.Types.Sum where
+
+import           Network.Google.Prelude
+
+-- | Defines the maintenance behavior for this instance. For standard
+-- instances, the default behavior is MIGRATE. For preemptible instances,
+-- the default and only possible behavior is TERMINATE. For more
+-- information, see Setting maintenance behavior.
+data SchedulingOnHostMaintenance
+    = Migrate
+      -- ^ @MIGRATE@
+    | Terminate
+      -- ^ @TERMINATE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable SchedulingOnHostMaintenance
+
+instance FromText SchedulingOnHostMaintenance where
+    fromText = \case
+        "MIGRATE" -> Just Migrate
+        "TERMINATE" -> Just Terminate
+        _ -> Nothing
+
+instance ToText SchedulingOnHostMaintenance where
+    toText = \case
+        Migrate -> "MIGRATE"
+        Terminate -> "TERMINATE"
+
+instance FromJSON SchedulingOnHostMaintenance where
+    parseJSON = parseJSONText "SchedulingOnHostMaintenance"
+
+instance ToJSON SchedulingOnHostMaintenance where
+    toJSON = toJSONText
+
+-- | Defines type in which utilization_target is expressed.
+data AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+    = DeltaPerMinute
+      -- ^ @DELTA_PER_MINUTE@
+    | DeltaPerSecond
+      -- ^ @DELTA_PER_SECOND@
+    | Gauge
+      -- ^ @GAUGE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType
+
+instance FromText AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    fromText = \case
+        "DELTA_PER_MINUTE" -> Just DeltaPerMinute
+        "DELTA_PER_SECOND" -> Just DeltaPerSecond
+        "GAUGE" -> Just Gauge
+        _ -> Nothing
+
+instance ToText AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    toText = \case
+        DeltaPerMinute -> "DELTA_PER_MINUTE"
+        DeltaPerSecond -> "DELTA_PER_SECOND"
+        Gauge -> "GAUGE"
+
+instance FromJSON AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    parseJSON = parseJSONText "AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType"
+
+instance ToJSON AutoscalingPolicyCustomMetricUtilizationUtilizationTargetType where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data OperationWarningsItemCode
+    = DeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | InjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | NextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | NextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | NextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | NextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | NextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | NotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | NoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | SingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | Unreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable OperationWarningsItemCode
+
+instance FromText OperationWarningsItemCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just DeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just DiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just InjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just NextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just NextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just NextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just NextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just NextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just NotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just NoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just RequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just ResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just SingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just Unreachable
+        _ -> Nothing
+
+instance ToText OperationWarningsItemCode where
+    toText = \case
+        DeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        InjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        NextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        NextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        NextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        NextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        NextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        NotCriticalError -> "NOT_CRITICAL_ERROR"
+        NoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        SingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        Unreachable -> "UNREACHABLE"
+
+instance FromJSON OperationWarningsItemCode where
+    parseJSON = parseJSONText "OperationWarningsItemCode"
+
+instance ToJSON OperationWarningsItemCode where
+    toJSON = toJSONText
+
+data BackendServiceProtocol
+    = HTTP
+      -- ^ @HTTP@
+    | HTTPS
+      -- ^ @HTTPS@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable BackendServiceProtocol
+
+instance FromText BackendServiceProtocol where
+    fromText = \case
+        "HTTP" -> Just HTTP
+        "HTTPS" -> Just HTTPS
+        _ -> Nothing
+
+instance ToText BackendServiceProtocol where
+    toText = \case
+        HTTP -> "HTTP"
+        HTTPS -> "HTTPS"
+
+instance FromJSON BackendServiceProtocol where
+    parseJSON = parseJSONText "BackendServiceProtocol"
+
+instance ToJSON BackendServiceProtocol where
+    toJSON = toJSONText
+
+-- | Specifies the type of the disk, either SCRATCH or PERSISTENT. If not
+-- specified, the default is PERSISTENT.
+data AttachedDiskType
+    = Persistent
+      -- ^ @PERSISTENT@
+    | Scratch
+      -- ^ @SCRATCH@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AttachedDiskType
+
+instance FromText AttachedDiskType where
+    fromText = \case
+        "PERSISTENT" -> Just Persistent
+        "SCRATCH" -> Just Scratch
+        _ -> Nothing
+
+instance ToText AttachedDiskType where
+    toText = \case
+        Persistent -> "PERSISTENT"
+        Scratch -> "SCRATCH"
+
+instance FromJSON AttachedDiskType where
+    parseJSON = parseJSONText "AttachedDiskType"
+
+instance ToJSON AttachedDiskType where
+    toJSON = toJSONText
+
+-- | The type of the image used to create this disk. The default and only
+-- value is RAW
+data ImageSourceType
+    = Raw
+      -- ^ @RAW@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ImageSourceType
+
+instance FromText ImageSourceType where
+    fromText = \case
+        "RAW" -> Just Raw
+        _ -> Nothing
+
+instance ToText ImageSourceType where
+    toText = \case
+        Raw -> "RAW"
+
+instance FromJSON ImageSourceType where
+    parseJSON = parseJSONText "ImageSourceType"
+
+instance ToJSON ImageSourceType where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data ForwardingRulesScopedListWarningCode
+    = FRSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | FRSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | FRSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | FRSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | FRSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | FRSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | FRSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | FRSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | FRSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | FRSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | FRSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | FRSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | FRSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | FRSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ForwardingRulesScopedListWarningCode
+
+instance FromText ForwardingRulesScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just FRSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just FRSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just FRSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just FRSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just FRSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just FRSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just FRSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just FRSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just FRSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just FRSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just FRSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just FRSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just FRSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just FRSLWCUnreachable
+        _ -> Nothing
+
+instance ToText ForwardingRulesScopedListWarningCode where
+    toText = \case
+        FRSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        FRSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        FRSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        FRSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        FRSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        FRSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        FRSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        FRSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        FRSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        FRSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        FRSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        FRSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        FRSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        FRSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON ForwardingRulesScopedListWarningCode where
+    parseJSON = parseJSONText "ForwardingRulesScopedListWarningCode"
+
+instance ToJSON ForwardingRulesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data OperationsScopedListWarningCode
+    = OSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | OSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | OSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | OSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | OSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | OSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | OSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | OSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | OSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | OSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | OSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | OSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | OSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | OSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable OperationsScopedListWarningCode
+
+instance FromText OperationsScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just OSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just OSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just OSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just OSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just OSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just OSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just OSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just OSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just OSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just OSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just OSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just OSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just OSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just OSLWCUnreachable
+        _ -> Nothing
+
+instance ToText OperationsScopedListWarningCode where
+    toText = \case
+        OSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        OSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        OSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        OSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        OSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        OSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        OSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        OSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        OSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        OSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        OSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        OSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        OSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        OSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON OperationsScopedListWarningCode where
+    parseJSON = parseJSONText "OperationsScopedListWarningCode"
+
+instance ToJSON OperationsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data DisksScopedListWarningCode
+    = DSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DisksScopedListWarningCode
+
+instance FromText DisksScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just DSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just DSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just DSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just DSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just DSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just DSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just DSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just DSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just DSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just DSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just DSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just DSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just DSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just DSLWCUnreachable
+        _ -> Nothing
+
+instance ToText DisksScopedListWarningCode where
+    toText = \case
+        DSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DisksScopedListWarningCode where
+    parseJSON = parseJSONText "DisksScopedListWarningCode"
+
+instance ToJSON DisksScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data InstanceGroupManagersScopedListWarningCode
+    = IGMSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGMSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGMSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGMSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGMSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGMSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGMSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGMSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGMSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGMSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGMSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGMSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGMSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGMSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable InstanceGroupManagersScopedListWarningCode
+
+instance FromText InstanceGroupManagersScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just IGMSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just IGMSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just IGMSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just IGMSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just IGMSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just IGMSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just IGMSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just IGMSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just IGMSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just IGMSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just IGMSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just IGMSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just IGMSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just IGMSLWCUnreachable
+        _ -> Nothing
+
+instance ToText InstanceGroupManagersScopedListWarningCode where
+    toText = \case
+        IGMSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGMSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGMSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGMSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGMSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGMSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGMSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGMSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGMSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGMSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGMSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGMSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGMSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGMSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupManagersScopedListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupManagersScopedListWarningCode"
+
+instance ToJSON InstanceGroupManagersScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data TargetPoolsScopedListWarningCode
+    = TPSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TPSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TPSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TPSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TPSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TPSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TPSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TPSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TPSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TPSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TPSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TPSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TPSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TPSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TargetPoolsScopedListWarningCode
+
+instance FromText TargetPoolsScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just TPSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just TPSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just TPSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just TPSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just TPSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just TPSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just TPSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just TPSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just TPSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just TPSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just TPSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just TPSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just TPSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just TPSLWCUnreachable
+        _ -> Nothing
+
+instance ToText TargetPoolsScopedListWarningCode where
+    toText = \case
+        TPSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TPSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TPSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TPSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TPSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TPSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TPSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TPSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TPSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TPSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TPSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TPSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TPSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TPSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetPoolsScopedListWarningCode where
+    parseJSON = parseJSONText "TargetPoolsScopedListWarningCode"
+
+instance ToJSON TargetPoolsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the VPN gateway.
+data TargetVPNGatewayStatus
+    = Creating
+      -- ^ @CREATING@
+    | Deleting
+      -- ^ @DELETING@
+    | Failed
+      -- ^ @FAILED@
+    | Ready
+      -- ^ @READY@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TargetVPNGatewayStatus
+
+instance FromText TargetVPNGatewayStatus where
+    fromText = \case
+        "CREATING" -> Just Creating
+        "DELETING" -> Just Deleting
+        "FAILED" -> Just Failed
+        "READY" -> Just Ready
+        _ -> Nothing
+
+instance ToText TargetVPNGatewayStatus where
+    toText = \case
+        Creating -> "CREATING"
+        Deleting -> "DELETING"
+        Failed -> "FAILED"
+        Ready -> "READY"
+
+instance FromJSON TargetVPNGatewayStatus where
+    parseJSON = parseJSONText "TargetVPNGatewayStatus"
+
+instance ToJSON TargetVPNGatewayStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the snapshot.
+data SnapshotStatus
+    = SSCreating
+      -- ^ @CREATING@
+    | SSDeleting
+      -- ^ @DELETING@
+    | SSFailed
+      -- ^ @FAILED@
+    | SSReady
+      -- ^ @READY@
+    | SSUploading
+      -- ^ @UPLOADING@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable SnapshotStatus
+
+instance FromText SnapshotStatus where
+    fromText = \case
+        "CREATING" -> Just SSCreating
+        "DELETING" -> Just SSDeleting
+        "FAILED" -> Just SSFailed
+        "READY" -> Just SSReady
+        "UPLOADING" -> Just SSUploading
+        _ -> Nothing
+
+instance ToText SnapshotStatus where
+    toText = \case
+        SSCreating -> "CREATING"
+        SSDeleting -> "DELETING"
+        SSFailed -> "FAILED"
+        SSReady -> "READY"
+        SSUploading -> "UPLOADING"
+
+instance FromJSON SnapshotStatus where
+    parseJSON = parseJSONText "SnapshotStatus"
+
+instance ToJSON SnapshotStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data TargetInstancesScopedListWarningCode
+    = TISLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TISLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TISLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TISLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TISLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TISLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TISLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TISLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TISLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TISLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TISLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TISLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TISLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TISLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TargetInstancesScopedListWarningCode
+
+instance FromText TargetInstancesScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just TISLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just TISLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just TISLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just TISLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just TISLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just TISLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just TISLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just TISLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just TISLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just TISLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just TISLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just TISLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just TISLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just TISLWCUnreachable
+        _ -> Nothing
+
+instance ToText TargetInstancesScopedListWarningCode where
+    toText = \case
+        TISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TISLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TISLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TISLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TISLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TISLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TISLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TISLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TISLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TISLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetInstancesScopedListWarningCode where
+    parseJSON = parseJSONText "TargetInstancesScopedListWarningCode"
+
+instance ToJSON TargetInstancesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data RouteWarningsItemCode
+    = RWICDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | RWICDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | RWICInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | RWICNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | RWICNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | RWICNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | RWICNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | RWICNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | RWICNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | RWICNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | RWICRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | RWICResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | RWICSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | RWICUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RouteWarningsItemCode
+
+instance FromText RouteWarningsItemCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just RWICDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just RWICDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just RWICInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just RWICNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just RWICNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just RWICNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just RWICNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just RWICNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just RWICNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just RWICNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just RWICRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just RWICResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just RWICSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just RWICUnreachable
+        _ -> Nothing
+
+instance ToText RouteWarningsItemCode where
+    toText = \case
+        RWICDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        RWICDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        RWICInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        RWICNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        RWICNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        RWICNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        RWICNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        RWICNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        RWICNotCriticalError -> "NOT_CRITICAL_ERROR"
+        RWICNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        RWICRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        RWICResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        RWICSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        RWICUnreachable -> "UNREACHABLE"
+
+instance FromJSON RouteWarningsItemCode where
+    parseJSON = parseJSONText "RouteWarningsItemCode"
+
+instance ToJSON RouteWarningsItemCode where
+    toJSON = toJSONText
+
+-- | [Output Only] An indicator whether storageBytes is in a stable state or
+-- it is being adjusted as a result of shared storage reallocation.
+data SnapshotStorageBytesStatus
+    = Updating
+      -- ^ @UPDATING@
+    | UpToDate
+      -- ^ @UP_TO_DATE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable SnapshotStorageBytesStatus
+
+instance FromText SnapshotStorageBytesStatus where
+    fromText = \case
+        "UPDATING" -> Just Updating
+        "UP_TO_DATE" -> Just UpToDate
+        _ -> Nothing
+
+instance ToText SnapshotStorageBytesStatus where
+    toText = \case
+        Updating -> "UPDATING"
+        UpToDate -> "UP_TO_DATE"
+
+instance FromJSON SnapshotStorageBytesStatus where
+    parseJSON = parseJSONText "SnapshotStorageBytesStatus"
+
+instance ToJSON SnapshotStorageBytesStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data AddressesScopedListWarningCode
+    = ASLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ASLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ASLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ASLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ASLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ASLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ASLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ASLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ASLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ASLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ASLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ASLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ASLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ASLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AddressesScopedListWarningCode
+
+instance FromText AddressesScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just ASLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just ASLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just ASLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just ASLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just ASLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just ASLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just ASLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just ASLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just ASLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just ASLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just ASLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just ASLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just ASLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just ASLWCUnreachable
+        _ -> Nothing
+
+instance ToText AddressesScopedListWarningCode where
+    toText = \case
+        ASLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ASLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ASLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ASLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ASLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ASLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ASLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ASLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ASLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ASLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ASLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ASLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ASLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ASLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON AddressesScopedListWarningCode where
+    parseJSON = parseJSONText "AddressesScopedListWarningCode"
+
+instance ToJSON AddressesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the image. An image can be used to create
+-- other resources, such as instances, only after the image has been
+-- successfully created and the status is set to READY. Possible values are
+-- FAILED, PENDING, or READY.
+data ImageStatus
+    = ISFailed
+      -- ^ @FAILED@
+    | ISPending
+      -- ^ @PENDING@
+    | ISReady
+      -- ^ @READY@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ImageStatus
+
+instance FromText ImageStatus where
+    fromText = \case
+        "FAILED" -> Just ISFailed
+        "PENDING" -> Just ISPending
+        "READY" -> Just ISReady
+        _ -> Nothing
+
+instance ToText ImageStatus where
+    toText = \case
+        ISFailed -> "FAILED"
+        ISPending -> "PENDING"
+        ISReady -> "READY"
+
+instance FromJSON ImageStatus where
+    parseJSON = parseJSONText "ImageStatus"
+
+instance ToJSON ImageStatus where
+    toJSON = toJSONText
+
+-- | Health state of the instance.
+data HealthStatusHealthState
+    = Healthy
+      -- ^ @HEALTHY@
+    | Unhealthy
+      -- ^ @UNHEALTHY@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable HealthStatusHealthState
+
+instance FromText HealthStatusHealthState where
+    fromText = \case
+        "HEALTHY" -> Just Healthy
+        "UNHEALTHY" -> Just Unhealthy
+        _ -> Nothing
+
+instance ToText HealthStatusHealthState where
+    toText = \case
+        Healthy -> "HEALTHY"
+        Unhealthy -> "UNHEALTHY"
+
+instance FromJSON HealthStatusHealthState where
+    parseJSON = parseJSONText "HealthStatusHealthState"
+
+instance ToJSON HealthStatusHealthState where
+    toJSON = toJSONText
+
+-- | The deprecation state of this resource. This can be DEPRECATED,
+-- OBSOLETE, or DELETED. Operations which create a new resource using a
+-- DEPRECATED resource will return successfully, but with a warning
+-- indicating the deprecated resource and recommending its replacement.
+-- Operations which use OBSOLETE or DELETED resources will be rejected and
+-- result in an error.
+data DeprecationStatusState
+    = Deleted
+      -- ^ @DELETED@
+    | Deprecated
+      -- ^ @DEPRECATED@
+    | Obsolete
+      -- ^ @OBSOLETE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DeprecationStatusState
+
+instance FromText DeprecationStatusState where
+    fromText = \case
+        "DELETED" -> Just Deleted
+        "DEPRECATED" -> Just Deprecated
+        "OBSOLETE" -> Just Obsolete
+        _ -> Nothing
+
+instance ToText DeprecationStatusState where
+    toText = \case
+        Deleted -> "DELETED"
+        Deprecated -> "DEPRECATED"
+        Obsolete -> "OBSOLETE"
+
+instance FromJSON DeprecationStatusState where
+    parseJSON = parseJSONText "DeprecationStatusState"
+
+instance ToJSON DeprecationStatusState where
+    toJSON = toJSONText
+
+-- | [Output Only] The current action that the managed instance group has
+-- scheduled for the instance. Possible values: - NONE The instance is
+-- running, and the managed instance group does not have any scheduled
+-- actions for this instance. - CREATING The managed instance group is
+-- creating this instance. - RECREATING The managed instance group is
+-- recreating this instance. - DELETING The managed instance group is
+-- permanently deleting this instance. - ABANDONING The managed instance
+-- group is abandoning this instance. The instance will be removed from the
+-- instance group and from any target pools that are associated with this
+-- group. - RESTARTING The managed instance group is restarting the
+-- instance. - REFRESHING The managed instance group is applying
+-- configuration changes to the instance without stopping it. For example,
+-- the group can update the target pool list for an instance without
+-- stopping that instance.
+data ManagedInstanceCurrentAction
+    = MICAAbandoning
+      -- ^ @ABANDONING@
+    | MICACreating
+      -- ^ @CREATING@
+    | MICADeleting
+      -- ^ @DELETING@
+    | MICANone
+      -- ^ @NONE@
+    | MICARecreating
+      -- ^ @RECREATING@
+    | MICARefreshing
+      -- ^ @REFRESHING@
+    | MICARestarting
+      -- ^ @RESTARTING@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ManagedInstanceCurrentAction
+
+instance FromText ManagedInstanceCurrentAction where
+    fromText = \case
+        "ABANDONING" -> Just MICAAbandoning
+        "CREATING" -> Just MICACreating
+        "DELETING" -> Just MICADeleting
+        "NONE" -> Just MICANone
+        "RECREATING" -> Just MICARecreating
+        "REFRESHING" -> Just MICARefreshing
+        "RESTARTING" -> Just MICARestarting
+        _ -> Nothing
+
+instance ToText ManagedInstanceCurrentAction where
+    toText = \case
+        MICAAbandoning -> "ABANDONING"
+        MICACreating -> "CREATING"
+        MICADeleting -> "DELETING"
+        MICANone -> "NONE"
+        MICARecreating -> "RECREATING"
+        MICARefreshing -> "REFRESHING"
+        MICARestarting -> "RESTARTING"
+
+instance FromJSON ManagedInstanceCurrentAction where
+    parseJSON = parseJSONText "ManagedInstanceCurrentAction"
+
+instance ToJSON ManagedInstanceCurrentAction where
+    toJSON = toJSONText
+
+-- | NAT option controlling how IPs are NAT\'ed to the instance. Currently
+-- only NO_NAT (default value) is supported.
+data TargetInstanceNATPolicy
+    = NoNAT
+      -- ^ @NO_NAT@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TargetInstanceNATPolicy
+
+instance FromText TargetInstanceNATPolicy where
+    fromText = \case
+        "NO_NAT" -> Just NoNAT
+        _ -> Nothing
+
+instance ToText TargetInstanceNATPolicy where
+    toText = \case
+        NoNAT -> "NO_NAT"
+
+instance FromJSON TargetInstanceNATPolicy where
+    parseJSON = parseJSONText "TargetInstanceNATPolicy"
+
+instance ToJSON TargetInstanceNATPolicy where
+    toJSON = toJSONText
+
+-- | The type of configuration. The default and only option is
+-- ONE_TO_ONE_NAT.
+data AccessConfigType
+    = OneToOneNAT
+      -- ^ @ONE_TO_ONE_NAT@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AccessConfigType
+
+instance FromText AccessConfigType where
+    fromText = \case
+        "ONE_TO_ONE_NAT" -> Just OneToOneNAT
+        _ -> Nothing
+
+instance ToText AccessConfigType where
+    toText = \case
+        OneToOneNAT -> "ONE_TO_ONE_NAT"
+
+instance FromJSON AccessConfigType where
+    parseJSON = parseJSONText "AccessConfigType"
+
+instance ToJSON AccessConfigType where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the operation. Can be one of the following:
+-- PENDING, RUNNING, or DONE.
+data OperationStatus
+    = Done
+      -- ^ @DONE@
+    | Pending
+      -- ^ @PENDING@
+    | Running
+      -- ^ @RUNNING@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable OperationStatus
+
+instance FromText OperationStatus where
+    fromText = \case
+        "DONE" -> Just Done
+        "PENDING" -> Just Pending
+        "RUNNING" -> Just Running
+        _ -> Nothing
+
+instance ToText OperationStatus where
+    toText = \case
+        Done -> "DONE"
+        Pending -> "PENDING"
+        Running -> "RUNNING"
+
+instance FromJSON OperationStatus where
+    parseJSON = parseJSONText "OperationStatus"
+
+instance ToJSON OperationStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data TargetVPNGatewaysScopedListWarningCode
+    = TVGSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | TVGSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | TVGSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | TVGSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | TVGSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | TVGSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | TVGSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | TVGSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | TVGSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | TVGSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | TVGSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | TVGSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | TVGSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | TVGSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TargetVPNGatewaysScopedListWarningCode
+
+instance FromText TargetVPNGatewaysScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just TVGSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just TVGSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just TVGSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just TVGSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just TVGSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just TVGSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just TVGSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just TVGSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just TVGSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just TVGSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just TVGSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just TVGSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just TVGSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just TVGSLWCUnreachable
+        _ -> Nothing
+
+instance ToText TargetVPNGatewaysScopedListWarningCode where
+    toText = \case
+        TVGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        TVGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        TVGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        TVGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        TVGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        TVGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        TVGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        TVGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        TVGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        TVGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        TVGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        TVGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        TVGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        TVGSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON TargetVPNGatewaysScopedListWarningCode where
+    parseJSON = parseJSONText "TargetVPNGatewaysScopedListWarningCode"
+
+instance ToJSON TargetVPNGatewaysScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of disk creation. Applicable statuses includes:
+-- CREATING, FAILED, READY, RESTORING.
+data DiskStatus
+    = DSCreating
+      -- ^ @CREATING@
+    | DSFailed
+      -- ^ @FAILED@
+    | DSReady
+      -- ^ @READY@
+    | DSRestoring
+      -- ^ @RESTORING@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DiskStatus
+
+instance FromText DiskStatus where
+    fromText = \case
+        "CREATING" -> Just DSCreating
+        "FAILED" -> Just DSFailed
+        "READY" -> Just DSReady
+        "RESTORING" -> Just DSRestoring
+        _ -> Nothing
+
+instance ToText DiskStatus where
+    toText = \case
+        DSCreating -> "CREATING"
+        DSFailed -> "FAILED"
+        DSReady -> "READY"
+        DSRestoring -> "RESTORING"
+
+instance FromJSON DiskStatus where
+    parseJSON = parseJSONText "DiskStatus"
+
+instance ToJSON DiskStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the instance. This field is empty when the
+-- instance does not exist.
+data ManagedInstanceInstanceStatus
+    = MIISProvisioning
+      -- ^ @PROVISIONING@
+    | MIISRunning
+      -- ^ @RUNNING@
+    | MIISStaging
+      -- ^ @STAGING@
+    | MIISStopped
+      -- ^ @STOPPED@
+    | MIISStopping
+      -- ^ @STOPPING@
+    | MIISSuspended
+      -- ^ @SUSPENDED@
+    | MIISSuspending
+      -- ^ @SUSPENDING@
+    | MIISTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ManagedInstanceInstanceStatus
+
+instance FromText ManagedInstanceInstanceStatus where
+    fromText = \case
+        "PROVISIONING" -> Just MIISProvisioning
+        "RUNNING" -> Just MIISRunning
+        "STAGING" -> Just MIISStaging
+        "STOPPED" -> Just MIISStopped
+        "STOPPING" -> Just MIISStopping
+        "SUSPENDED" -> Just MIISSuspended
+        "SUSPENDING" -> Just MIISSuspending
+        "TERMINATED" -> Just MIISTerminated
+        _ -> Nothing
+
+instance ToText ManagedInstanceInstanceStatus where
+    toText = \case
+        MIISProvisioning -> "PROVISIONING"
+        MIISRunning -> "RUNNING"
+        MIISStaging -> "STAGING"
+        MIISStopped -> "STOPPED"
+        MIISStopping -> "STOPPING"
+        MIISSuspended -> "SUSPENDED"
+        MIISSuspending -> "SUSPENDING"
+        MIISTerminated -> "TERMINATED"
+
+instance FromJSON ManagedInstanceInstanceStatus where
+    parseJSON = parseJSONText "ManagedInstanceInstanceStatus"
+
+instance ToJSON ManagedInstanceInstanceStatus where
+    toJSON = toJSONText
+
+-- | The mode in which to attach this disk, either READ_WRITE or READ_ONLY.
+-- If not specified, the default is to attach the disk in READ_WRITE mode.
+data AttachedDiskMode
+    = ReadOnly
+      -- ^ @READ_ONLY@
+    | ReadWrite
+      -- ^ @READ_WRITE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AttachedDiskMode
+
+instance FromText AttachedDiskMode where
+    fromText = \case
+        "READ_ONLY" -> Just ReadOnly
+        "READ_WRITE" -> Just ReadWrite
+        _ -> Nothing
+
+instance ToText AttachedDiskMode where
+    toText = \case
+        ReadOnly -> "READ_ONLY"
+        ReadWrite -> "READ_WRITE"
+
+instance FromJSON AttachedDiskMode where
+    parseJSON = parseJSONText "AttachedDiskMode"
+
+instance ToJSON AttachedDiskMode where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the region, either UP or DOWN.
+data RegionStatus
+    = Down
+      -- ^ @DOWN@
+    | UP
+      -- ^ @UP@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable RegionStatus
+
+instance FromText RegionStatus where
+    fromText = \case
+        "DOWN" -> Just Down
+        "UP" -> Just UP
+        _ -> Nothing
+
+instance ToText RegionStatus where
+    toText = \case
+        Down -> "DOWN"
+        UP -> "UP"
+
+instance FromJSON RegionStatus where
+    parseJSON = parseJSONText "RegionStatus"
+
+instance ToJSON RegionStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the VPN tunnel.
+data VPNTunnelStatus
+    = VTSAuthorizationError
+      -- ^ @AUTHORIZATION_ERROR@
+    | VTSDeprovisioning
+      -- ^ @DEPROVISIONING@
+    | VTSEstablished
+      -- ^ @ESTABLISHED@
+    | VTSFailed
+      -- ^ @FAILED@
+    | VTSFirstHandshake
+      -- ^ @FIRST_HANDSHAKE@
+    | VTSNegotiationFailure
+      -- ^ @NEGOTIATION_FAILURE@
+    | VTSNetworkError
+      -- ^ @NETWORK_ERROR@
+    | VTSNoIncomingPackets
+      -- ^ @NO_INCOMING_PACKETS@
+    | VTSProvisioning
+      -- ^ @PROVISIONING@
+    | VTSRejected
+      -- ^ @REJECTED@
+    | VTSWaitingForFullConfig
+      -- ^ @WAITING_FOR_FULL_CONFIG@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable VPNTunnelStatus
+
+instance FromText VPNTunnelStatus where
+    fromText = \case
+        "AUTHORIZATION_ERROR" -> Just VTSAuthorizationError
+        "DEPROVISIONING" -> Just VTSDeprovisioning
+        "ESTABLISHED" -> Just VTSEstablished
+        "FAILED" -> Just VTSFailed
+        "FIRST_HANDSHAKE" -> Just VTSFirstHandshake
+        "NEGOTIATION_FAILURE" -> Just VTSNegotiationFailure
+        "NETWORK_ERROR" -> Just VTSNetworkError
+        "NO_INCOMING_PACKETS" -> Just VTSNoIncomingPackets
+        "PROVISIONING" -> Just VTSProvisioning
+        "REJECTED" -> Just VTSRejected
+        "WAITING_FOR_FULL_CONFIG" -> Just VTSWaitingForFullConfig
+        _ -> Nothing
+
+instance ToText VPNTunnelStatus where
+    toText = \case
+        VTSAuthorizationError -> "AUTHORIZATION_ERROR"
+        VTSDeprovisioning -> "DEPROVISIONING"
+        VTSEstablished -> "ESTABLISHED"
+        VTSFailed -> "FAILED"
+        VTSFirstHandshake -> "FIRST_HANDSHAKE"
+        VTSNegotiationFailure -> "NEGOTIATION_FAILURE"
+        VTSNetworkError -> "NETWORK_ERROR"
+        VTSNoIncomingPackets -> "NO_INCOMING_PACKETS"
+        VTSProvisioning -> "PROVISIONING"
+        VTSRejected -> "REJECTED"
+        VTSWaitingForFullConfig -> "WAITING_FOR_FULL_CONFIG"
+
+instance FromJSON VPNTunnelStatus where
+    parseJSON = parseJSONText "VPNTunnelStatus"
+
+instance ToJSON VPNTunnelStatus where
+    toJSON = toJSONText
+
+-- | Specifies the balancing mode for this backend. The default is
+-- UTILIZATION but available values are UTILIZATION and RATE.
+data BackendBalancingMode
+    = Rate
+      -- ^ @RATE@
+    | Utilization
+      -- ^ @UTILIZATION@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable BackendBalancingMode
+
+instance FromText BackendBalancingMode where
+    fromText = \case
+        "RATE" -> Just Rate
+        "UTILIZATION" -> Just Utilization
+        _ -> Nothing
+
+instance ToText BackendBalancingMode where
+    toText = \case
+        Rate -> "RATE"
+        Utilization -> "UTILIZATION"
+
+instance FromJSON BackendBalancingMode where
+    parseJSON = parseJSONText "BackendBalancingMode"
+
+instance ToJSON BackendBalancingMode where
+    toJSON = toJSONText
+
+-- | The IP protocol to which this rule applies. Valid options are TCP, UDP,
+-- ESP, AH or SCTP.
+data ForwardingRuleIPProtocol
+    = AH
+      -- ^ @AH@
+    | Esp
+      -- ^ @ESP@
+    | Sctp
+      -- ^ @SCTP@
+    | TCP
+      -- ^ @TCP@
+    | Udp
+      -- ^ @UDP@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ForwardingRuleIPProtocol
+
+instance FromText ForwardingRuleIPProtocol where
+    fromText = \case
+        "AH" -> Just AH
+        "ESP" -> Just Esp
+        "SCTP" -> Just Sctp
+        "TCP" -> Just TCP
+        "UDP" -> Just Udp
+        _ -> Nothing
+
+instance ToText ForwardingRuleIPProtocol where
+    toText = \case
+        AH -> "AH"
+        Esp -> "ESP"
+        Sctp -> "SCTP"
+        TCP -> "TCP"
+        Udp -> "UDP"
+
+instance FromJSON ForwardingRuleIPProtocol where
+    parseJSON = parseJSONText "ForwardingRuleIPProtocol"
+
+instance ToJSON ForwardingRuleIPProtocol where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the address, which can be either IN_USE or
+-- RESERVED. An address that is RESERVED is currently reserved and
+-- available to use. An IN_USE address is currently being used by another
+-- resource and is not available.
+data AddressStatus
+    = InUse
+      -- ^ @IN_USE@
+    | Reserved
+      -- ^ @RESERVED@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AddressStatus
+
+instance FromText AddressStatus where
+    fromText = \case
+        "IN_USE" -> Just InUse
+        "RESERVED" -> Just Reserved
+        _ -> Nothing
+
+instance ToText AddressStatus where
+    toText = \case
+        InUse -> "IN_USE"
+        Reserved -> "RESERVED"
+
+instance FromJSON AddressStatus where
+    parseJSON = parseJSONText "AddressStatus"
+
+instance ToJSON AddressStatus where
+    toJSON = toJSONText
+
+-- | A filter for the state of the instances in the instance group. Valid
+-- options are ALL or RUNNING. If you do not specify this parameter the
+-- list includes all instances regardless of their state.
+data InstanceGroupsListInstancesRequestInstanceState
+    = IGLIRISAll
+      -- ^ @ALL@
+    | IGLIRISRunning
+      -- ^ @RUNNING@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable InstanceGroupsListInstancesRequestInstanceState
+
+instance FromText InstanceGroupsListInstancesRequestInstanceState where
+    fromText = \case
+        "ALL" -> Just IGLIRISAll
+        "RUNNING" -> Just IGLIRISRunning
+        _ -> Nothing
+
+instance ToText InstanceGroupsListInstancesRequestInstanceState where
+    toText = \case
+        IGLIRISAll -> "ALL"
+        IGLIRISRunning -> "RUNNING"
+
+instance FromJSON InstanceGroupsListInstancesRequestInstanceState where
+    parseJSON = parseJSONText "InstanceGroupsListInstancesRequestInstanceState"
+
+instance ToJSON InstanceGroupsListInstancesRequestInstanceState where
+    toJSON = toJSONText
+
+-- | Specifies the disk interface to use for attaching this disk, either SCSI
+-- or NVME. The default is SCSI. For performance characteristics of SCSI
+-- over NVMe, see Local SSD performance.
+data AttachedDiskInterface
+    = Nvme
+      -- ^ @NVME@
+    | Scsi
+      -- ^ @SCSI@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AttachedDiskInterface
+
+instance FromText AttachedDiskInterface where
+    fromText = \case
+        "NVME" -> Just Nvme
+        "SCSI" -> Just Scsi
+        _ -> Nothing
+
+instance ToText AttachedDiskInterface where
+    toText = \case
+        Nvme -> "NVME"
+        Scsi -> "SCSI"
+
+instance FromJSON AttachedDiskInterface where
+    parseJSON = parseJSONText "AttachedDiskInterface"
+
+instance ToJSON AttachedDiskInterface where
+    toJSON = toJSONText
+
+-- | [Output Only] Status of the zone, either UP or DOWN.
+data ZoneStatus
+    = ZSDown
+      -- ^ @DOWN@
+    | ZSUP
+      -- ^ @UP@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ZoneStatus
+
+instance FromText ZoneStatus where
+    fromText = \case
+        "DOWN" -> Just ZSDown
+        "UP" -> Just ZSUP
+        _ -> Nothing
+
+instance ToText ZoneStatus where
+    toText = \case
+        ZSDown -> "DOWN"
+        ZSUP -> "UP"
+
+instance FromJSON ZoneStatus where
+    parseJSON = parseJSONText "ZoneStatus"
+
+instance ToJSON ZoneStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] Name of the quota metric.
+data QuotaMetric
+    = BackendServices
+      -- ^ @BACKEND_SERVICES@
+    | CPUs
+      -- ^ @CPUS@
+    | DisksTotalGb
+      -- ^ @DISKS_TOTAL_GB@
+    | Firewalls
+      -- ^ @FIREWALLS@
+    | ForwardingRules
+      -- ^ @FORWARDING_RULES@
+    | HealthChecks
+      -- ^ @HEALTH_CHECKS@
+    | Images
+      -- ^ @IMAGES@
+    | Instances
+      -- ^ @INSTANCES@
+    | InstanceGroups
+      -- ^ @INSTANCE_GROUPS@
+    | InstanceGroupManagers
+      -- ^ @INSTANCE_GROUP_MANAGERS@
+    | InstanceTemplates
+      -- ^ @INSTANCE_TEMPLATES@
+    | InUseAddresses
+      -- ^ @IN_USE_ADDRESSES@
+    | LocalSsdTotalGb
+      -- ^ @LOCAL_SSD_TOTAL_GB@
+    | Networks
+      -- ^ @NETWORKS@
+    | Routes
+      -- ^ @ROUTES@
+    | Snapshots
+      -- ^ @SNAPSHOTS@
+    | SsdTotalGb
+      -- ^ @SSD_TOTAL_GB@
+    | StaticAddresses
+      -- ^ @STATIC_ADDRESSES@
+    | TargetHTTPProxies
+      -- ^ @TARGET_HTTP_PROXIES@
+    | TargetInstances
+      -- ^ @TARGET_INSTANCES@
+    | TargetPools
+      -- ^ @TARGET_POOLS@
+    | TargetVPNGateways
+      -- ^ @TARGET_VPN_GATEWAYS@
+    | URLMaps
+      -- ^ @URL_MAPS@
+    | VPNTunnels
+      -- ^ @VPN_TUNNELS@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable QuotaMetric
+
+instance FromText QuotaMetric where
+    fromText = \case
+        "BACKEND_SERVICES" -> Just BackendServices
+        "CPUS" -> Just CPUs
+        "DISKS_TOTAL_GB" -> Just DisksTotalGb
+        "FIREWALLS" -> Just Firewalls
+        "FORWARDING_RULES" -> Just ForwardingRules
+        "HEALTH_CHECKS" -> Just HealthChecks
+        "IMAGES" -> Just Images
+        "INSTANCES" -> Just Instances
+        "INSTANCE_GROUPS" -> Just InstanceGroups
+        "INSTANCE_GROUP_MANAGERS" -> Just InstanceGroupManagers
+        "INSTANCE_TEMPLATES" -> Just InstanceTemplates
+        "IN_USE_ADDRESSES" -> Just InUseAddresses
+        "LOCAL_SSD_TOTAL_GB" -> Just LocalSsdTotalGb
+        "NETWORKS" -> Just Networks
+        "ROUTES" -> Just Routes
+        "SNAPSHOTS" -> Just Snapshots
+        "SSD_TOTAL_GB" -> Just SsdTotalGb
+        "STATIC_ADDRESSES" -> Just StaticAddresses
+        "TARGET_HTTP_PROXIES" -> Just TargetHTTPProxies
+        "TARGET_INSTANCES" -> Just TargetInstances
+        "TARGET_POOLS" -> Just TargetPools
+        "TARGET_VPN_GATEWAYS" -> Just TargetVPNGateways
+        "URL_MAPS" -> Just URLMaps
+        "VPN_TUNNELS" -> Just VPNTunnels
+        _ -> Nothing
+
+instance ToText QuotaMetric where
+    toText = \case
+        BackendServices -> "BACKEND_SERVICES"
+        CPUs -> "CPUS"
+        DisksTotalGb -> "DISKS_TOTAL_GB"
+        Firewalls -> "FIREWALLS"
+        ForwardingRules -> "FORWARDING_RULES"
+        HealthChecks -> "HEALTH_CHECKS"
+        Images -> "IMAGES"
+        Instances -> "INSTANCES"
+        InstanceGroups -> "INSTANCE_GROUPS"
+        InstanceGroupManagers -> "INSTANCE_GROUP_MANAGERS"
+        InstanceTemplates -> "INSTANCE_TEMPLATES"
+        InUseAddresses -> "IN_USE_ADDRESSES"
+        LocalSsdTotalGb -> "LOCAL_SSD_TOTAL_GB"
+        Networks -> "NETWORKS"
+        Routes -> "ROUTES"
+        Snapshots -> "SNAPSHOTS"
+        SsdTotalGb -> "SSD_TOTAL_GB"
+        StaticAddresses -> "STATIC_ADDRESSES"
+        TargetHTTPProxies -> "TARGET_HTTP_PROXIES"
+        TargetInstances -> "TARGET_INSTANCES"
+        TargetPools -> "TARGET_POOLS"
+        TargetVPNGateways -> "TARGET_VPN_GATEWAYS"
+        URLMaps -> "URL_MAPS"
+        VPNTunnels -> "VPN_TUNNELS"
+
+instance FromJSON QuotaMetric where
+    parseJSON = parseJSONText "QuotaMetric"
+
+instance ToJSON QuotaMetric where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the instance. One of the following values:
+-- PROVISIONING, STAGING, RUNNING, STOPPING, and TERMINATED.
+data InstanceStatus
+    = ISProvisioning
+      -- ^ @PROVISIONING@
+    | ISRunning
+      -- ^ @RUNNING@
+    | ISStaging
+      -- ^ @STAGING@
+    | ISStopped
+      -- ^ @STOPPED@
+    | ISStopping
+      -- ^ @STOPPING@
+    | ISSuspended
+      -- ^ @SUSPENDED@
+    | ISSuspending
+      -- ^ @SUSPENDING@
+    | ISTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable InstanceStatus
+
+instance FromText InstanceStatus where
+    fromText = \case
+        "PROVISIONING" -> Just ISProvisioning
+        "RUNNING" -> Just ISRunning
+        "STAGING" -> Just ISStaging
+        "STOPPED" -> Just ISStopped
+        "STOPPING" -> Just ISStopping
+        "SUSPENDED" -> Just ISSuspended
+        "SUSPENDING" -> Just ISSuspending
+        "TERMINATED" -> Just ISTerminated
+        _ -> Nothing
+
+instance ToText InstanceStatus where
+    toText = \case
+        ISProvisioning -> "PROVISIONING"
+        ISRunning -> "RUNNING"
+        ISStaging -> "STAGING"
+        ISStopped -> "STOPPED"
+        ISStopping -> "STOPPING"
+        ISSuspended -> "SUSPENDED"
+        ISSuspending -> "SUSPENDING"
+        ISTerminated -> "TERMINATED"
+
+instance FromJSON InstanceStatus where
+    parseJSON = parseJSONText "InstanceStatus"
+
+instance ToJSON InstanceStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data MachineTypesScopedListWarningCode
+    = MTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | MTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | MTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | MTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | MTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | MTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | MTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | MTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | MTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | MTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | MTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | MTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | MTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | MTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable MachineTypesScopedListWarningCode
+
+instance FromText MachineTypesScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just MTSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just MTSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just MTSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just MTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just MTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just MTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just MTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just MTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just MTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just MTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just MTSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just MTSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just MTSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just MTSLWCUnreachable
+        _ -> Nothing
+
+instance ToText MachineTypesScopedListWarningCode where
+    toText = \case
+        MTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        MTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        MTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        MTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        MTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        MTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        MTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        MTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        MTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        MTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        MTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        MTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        MTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        MTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON MachineTypesScopedListWarningCode where
+    parseJSON = parseJSONText "MachineTypesScopedListWarningCode"
+
+instance ToJSON MachineTypesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data DiskTypesScopedListWarningCode
+    = DTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | DTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | DTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | DTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | DTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | DTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | DTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | DTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | DTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | DTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | DTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | DTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | DTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | DTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable DiskTypesScopedListWarningCode
+
+instance FromText DiskTypesScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just DTSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just DTSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just DTSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just DTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just DTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just DTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just DTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just DTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just DTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just DTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just DTSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just DTSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just DTSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just DTSLWCUnreachable
+        _ -> Nothing
+
+instance ToText DiskTypesScopedListWarningCode where
+    toText = \case
+        DTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        DTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        DTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        DTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        DTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        DTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        DTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        DTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        DTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        DTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        DTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        DTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        DTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        DTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON DiskTypesScopedListWarningCode where
+    parseJSON = parseJSONText "DiskTypesScopedListWarningCode"
+
+instance ToJSON DiskTypesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data AutoscalersScopedListWarningCode
+    = ADeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ADiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | AInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ANextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ANextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ANextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ANextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ANextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ANotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ANoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ARequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | AResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ASingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | AUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable AutoscalersScopedListWarningCode
+
+instance FromText AutoscalersScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just ADeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just ADiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just AInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just ANextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just ANextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just ANextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just ANextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just ANextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just ANotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just ANoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just ARequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just AResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just ASingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just AUnreachable
+        _ -> Nothing
+
+instance ToText AutoscalersScopedListWarningCode where
+    toText = \case
+        ADeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ADiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        AInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ANextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ANextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ANextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ANextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ANextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ANotCriticalError -> "NOT_CRITICAL_ERROR"
+        ANoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ARequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        AResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ASingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        AUnreachable -> "UNREACHABLE"
+
+instance FromJSON AutoscalersScopedListWarningCode where
+    parseJSON = parseJSONText "AutoscalersScopedListWarningCode"
+
+instance ToJSON AutoscalersScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data VPNTunnelsScopedListWarningCode
+    = VTSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | VTSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | VTSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | VTSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | VTSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | VTSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | VTSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | VTSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | VTSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | VTSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | VTSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | VTSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | VTSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | VTSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable VPNTunnelsScopedListWarningCode
+
+instance FromText VPNTunnelsScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just VTSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just VTSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just VTSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just VTSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just VTSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just VTSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just VTSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just VTSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just VTSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just VTSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just VTSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just VTSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just VTSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just VTSLWCUnreachable
+        _ -> Nothing
+
+instance ToText VPNTunnelsScopedListWarningCode where
+    toText = \case
+        VTSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        VTSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        VTSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        VTSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        VTSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        VTSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        VTSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        VTSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        VTSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        VTSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        VTSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        VTSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        VTSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        VTSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON VPNTunnelsScopedListWarningCode where
+    parseJSON = parseJSONText "VPNTunnelsScopedListWarningCode"
+
+instance ToJSON VPNTunnelsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data InstanceGroupsScopedListWarningCode
+    = IGSLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | IGSLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | IGSLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | IGSLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | IGSLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | IGSLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | IGSLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | IGSLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | IGSLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | IGSLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | IGSLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | IGSLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | IGSLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | IGSLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable InstanceGroupsScopedListWarningCode
+
+instance FromText InstanceGroupsScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just IGSLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just IGSLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just IGSLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just IGSLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just IGSLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just IGSLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just IGSLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just IGSLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just IGSLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just IGSLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just IGSLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just IGSLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just IGSLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just IGSLWCUnreachable
+        _ -> Nothing
+
+instance ToText InstanceGroupsScopedListWarningCode where
+    toText = \case
+        IGSLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        IGSLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        IGSLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        IGSLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        IGSLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        IGSLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        IGSLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        IGSLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        IGSLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        IGSLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        IGSLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        IGSLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        IGSLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        IGSLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstanceGroupsScopedListWarningCode where
+    parseJSON = parseJSONText "InstanceGroupsScopedListWarningCode"
+
+instance ToJSON InstanceGroupsScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | [Output Only] The status of the instance.
+data InstanceWithNamedPortsStatus
+    = IWNPSProvisioning
+      -- ^ @PROVISIONING@
+    | IWNPSRunning
+      -- ^ @RUNNING@
+    | IWNPSStaging
+      -- ^ @STAGING@
+    | IWNPSStopped
+      -- ^ @STOPPED@
+    | IWNPSStopping
+      -- ^ @STOPPING@
+    | IWNPSSuspended
+      -- ^ @SUSPENDED@
+    | IWNPSSuspending
+      -- ^ @SUSPENDING@
+    | IWNPSTerminated
+      -- ^ @TERMINATED@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable InstanceWithNamedPortsStatus
+
+instance FromText InstanceWithNamedPortsStatus where
+    fromText = \case
+        "PROVISIONING" -> Just IWNPSProvisioning
+        "RUNNING" -> Just IWNPSRunning
+        "STAGING" -> Just IWNPSStaging
+        "STOPPED" -> Just IWNPSStopped
+        "STOPPING" -> Just IWNPSStopping
+        "SUSPENDED" -> Just IWNPSSuspended
+        "SUSPENDING" -> Just IWNPSSuspending
+        "TERMINATED" -> Just IWNPSTerminated
+        _ -> Nothing
+
+instance ToText InstanceWithNamedPortsStatus where
+    toText = \case
+        IWNPSProvisioning -> "PROVISIONING"
+        IWNPSRunning -> "RUNNING"
+        IWNPSStaging -> "STAGING"
+        IWNPSStopped -> "STOPPED"
+        IWNPSStopping -> "STOPPING"
+        IWNPSSuspended -> "SUSPENDED"
+        IWNPSSuspending -> "SUSPENDING"
+        IWNPSTerminated -> "TERMINATED"
+
+instance FromJSON InstanceWithNamedPortsStatus where
+    parseJSON = parseJSONText "InstanceWithNamedPortsStatus"
+
+instance ToJSON InstanceWithNamedPortsStatus where
+    toJSON = toJSONText
+
+-- | [Output Only] The warning type identifier for this warning.
+data InstancesScopedListWarningCode
+    = ISLWCDeprecatedResourceUsed
+      -- ^ @DEPRECATED_RESOURCE_USED@
+    | ISLWCDiskSizeLargerThanImageSize
+      -- ^ @DISK_SIZE_LARGER_THAN_IMAGE_SIZE@
+    | ISLWCInjectedKernelsDeprecated
+      -- ^ @INJECTED_KERNELS_DEPRECATED@
+    | ISLWCNextHopAddressNotAssigned
+      -- ^ @NEXT_HOP_ADDRESS_NOT_ASSIGNED@
+    | ISLWCNextHopCannotIPForward
+      -- ^ @NEXT_HOP_CANNOT_IP_FORWARD@
+    | ISLWCNextHopInstanceNotFound
+      -- ^ @NEXT_HOP_INSTANCE_NOT_FOUND@
+    | ISLWCNextHopInstanceNotOnNetwork
+      -- ^ @NEXT_HOP_INSTANCE_NOT_ON_NETWORK@
+    | ISLWCNextHopNotRunning
+      -- ^ @NEXT_HOP_NOT_RUNNING@
+    | ISLWCNotCriticalError
+      -- ^ @NOT_CRITICAL_ERROR@
+    | ISLWCNoResultsOnPage
+      -- ^ @NO_RESULTS_ON_PAGE@
+    | ISLWCRequiredTosAgreement
+      -- ^ @REQUIRED_TOS_AGREEMENT@
+    | ISLWCResourceNotDeleted
+      -- ^ @RESOURCE_NOT_DELETED@
+    | ISLWCSingleInstancePropertyTemplate
+      -- ^ @SINGLE_INSTANCE_PROPERTY_TEMPLATE@
+    | ISLWCUnreachable
+      -- ^ @UNREACHABLE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable InstancesScopedListWarningCode
+
+instance FromText InstancesScopedListWarningCode where
+    fromText = \case
+        "DEPRECATED_RESOURCE_USED" -> Just ISLWCDeprecatedResourceUsed
+        "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" -> Just ISLWCDiskSizeLargerThanImageSize
+        "INJECTED_KERNELS_DEPRECATED" -> Just ISLWCInjectedKernelsDeprecated
+        "NEXT_HOP_ADDRESS_NOT_ASSIGNED" -> Just ISLWCNextHopAddressNotAssigned
+        "NEXT_HOP_CANNOT_IP_FORWARD" -> Just ISLWCNextHopCannotIPForward
+        "NEXT_HOP_INSTANCE_NOT_FOUND" -> Just ISLWCNextHopInstanceNotFound
+        "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" -> Just ISLWCNextHopInstanceNotOnNetwork
+        "NEXT_HOP_NOT_RUNNING" -> Just ISLWCNextHopNotRunning
+        "NOT_CRITICAL_ERROR" -> Just ISLWCNotCriticalError
+        "NO_RESULTS_ON_PAGE" -> Just ISLWCNoResultsOnPage
+        "REQUIRED_TOS_AGREEMENT" -> Just ISLWCRequiredTosAgreement
+        "RESOURCE_NOT_DELETED" -> Just ISLWCResourceNotDeleted
+        "SINGLE_INSTANCE_PROPERTY_TEMPLATE" -> Just ISLWCSingleInstancePropertyTemplate
+        "UNREACHABLE" -> Just ISLWCUnreachable
+        _ -> Nothing
+
+instance ToText InstancesScopedListWarningCode where
+    toText = \case
+        ISLWCDeprecatedResourceUsed -> "DEPRECATED_RESOURCE_USED"
+        ISLWCDiskSizeLargerThanImageSize -> "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+        ISLWCInjectedKernelsDeprecated -> "INJECTED_KERNELS_DEPRECATED"
+        ISLWCNextHopAddressNotAssigned -> "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+        ISLWCNextHopCannotIPForward -> "NEXT_HOP_CANNOT_IP_FORWARD"
+        ISLWCNextHopInstanceNotFound -> "NEXT_HOP_INSTANCE_NOT_FOUND"
+        ISLWCNextHopInstanceNotOnNetwork -> "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+        ISLWCNextHopNotRunning -> "NEXT_HOP_NOT_RUNNING"
+        ISLWCNotCriticalError -> "NOT_CRITICAL_ERROR"
+        ISLWCNoResultsOnPage -> "NO_RESULTS_ON_PAGE"
+        ISLWCRequiredTosAgreement -> "REQUIRED_TOS_AGREEMENT"
+        ISLWCResourceNotDeleted -> "RESOURCE_NOT_DELETED"
+        ISLWCSingleInstancePropertyTemplate -> "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+        ISLWCUnreachable -> "UNREACHABLE"
+
+instance FromJSON InstancesScopedListWarningCode where
+    parseJSON = parseJSONText "InstancesScopedListWarningCode"
+
+instance ToJSON InstancesScopedListWarningCode where
+    toJSON = toJSONText
+
+-- | Sesssion affinity option, must be one of the following values: NONE:
+-- Connections from the same client IP may go to any instance in the pool.
+-- CLIENT_IP: Connections from the same client IP will go to the same
+-- instance in the pool while that instance remains healthy.
+-- CLIENT_IP_PROTO: Connections from the same client IP with the same IP
+-- protocol will go to the same instance in the pool while that instance
+-- remains healthy.
+data TargetPoolSessionAffinity
+    = ClientIP
+      -- ^ @CLIENT_IP@
+    | ClientIPProto
+      -- ^ @CLIENT_IP_PROTO@
+    | None
+      -- ^ @NONE@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable TargetPoolSessionAffinity
+
+instance FromText TargetPoolSessionAffinity where
+    fromText = \case
+        "CLIENT_IP" -> Just ClientIP
+        "CLIENT_IP_PROTO" -> Just ClientIPProto
+        "NONE" -> Just None
+        _ -> Nothing
+
+instance ToText TargetPoolSessionAffinity where
+    toText = \case
+        ClientIP -> "CLIENT_IP"
+        ClientIPProto -> "CLIENT_IP_PROTO"
+        None -> "NONE"
+
+instance FromJSON TargetPoolSessionAffinity where
+    parseJSON = parseJSONText "TargetPoolSessionAffinity"
+
+instance ToJSON TargetPoolSessionAffinity where
+    toJSON = toJSONText
+
+-- | The format used to encode and transmit the block device, which should be
+-- TAR. This is just a container and transmission format and not a runtime
+-- format. Provided by the client when the disk image is created.
+data ImageRawDiskContainerType
+    = TAR
+      -- ^ @TAR@
+      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+
+instance Hashable ImageRawDiskContainerType
+
+instance FromText ImageRawDiskContainerType where
+    fromText = \case
+        "TAR" -> Just TAR
+        _ -> Nothing
+
+instance ToText ImageRawDiskContainerType where
+    toText = \case
+        TAR -> "TAR"
+
+instance FromJSON ImageRawDiskContainerType where
+    parseJSON = parseJSONText "ImageRawDiskContainerType"
+
+instance ToJSON ImageRawDiskContainerType where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Addresses/AggregatedList.hs
@@ -0,0 +1,137 @@
+{-# 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.Compute.Addresses.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of addresses grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.addresses.aggregatedList@.
+module Network.Google.Resource.Compute.Addresses.AggregatedList
+    (
+    -- * REST Resource
+      AddressesAggregatedListResource
+
+    -- * Creating a Request
+    , addressesAggregatedList
+    , AddressesAggregatedList
+
+    -- * Request Lenses
+    , aalProject
+    , aalFilter
+    , aalPageToken
+    , aalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.addresses.aggregatedList@ method which the
+-- 'AddressesAggregatedList' request conforms to.
+type AddressesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "addresses" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] AddressAggregatedList
+
+-- | Retrieves the list of addresses grouped by scope.
+--
+-- /See:/ 'addressesAggregatedList' smart constructor.
+data AddressesAggregatedList = AddressesAggregatedList
+    { _aalProject    :: !Text
+    , _aalFilter     :: !(Maybe Text)
+    , _aalPageToken  :: !(Maybe Text)
+    , _aalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aalProject'
+--
+-- * 'aalFilter'
+--
+-- * 'aalPageToken'
+--
+-- * 'aalMaxResults'
+addressesAggregatedList
+    :: Text -- ^ 'aalProject'
+    -> AddressesAggregatedList
+addressesAggregatedList pAalProject_ =
+    AddressesAggregatedList
+    { _aalProject = pAalProject_
+    , _aalFilter = Nothing
+    , _aalPageToken = Nothing
+    , _aalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+aalProject :: Lens' AddressesAggregatedList Text
+aalProject
+  = lens _aalProject (\ s a -> s{_aalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+aalFilter :: Lens' AddressesAggregatedList (Maybe Text)
+aalFilter
+  = lens _aalFilter (\ s a -> s{_aalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+aalPageToken :: Lens' AddressesAggregatedList (Maybe Text)
+aalPageToken
+  = lens _aalPageToken (\ s a -> s{_aalPageToken = a})
+
+-- | Maximum count of results to be returned.
+aalMaxResults :: Lens' AddressesAggregatedList Word32
+aalMaxResults
+  = lens _aalMaxResults
+      (\ s a -> s{_aalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest AddressesAggregatedList where
+        type Rs AddressesAggregatedList =
+             AddressAggregatedList
+        requestClient AddressesAggregatedList{..}
+          = go _aalProject _aalFilter _aalPageToken
+              (Just _aalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AddressesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Addresses/Delete.hs b/gen/Network/Google/Resource/Compute/Addresses/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Addresses/Delete.hs
@@ -0,0 +1,109 @@
+{-# 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.Compute.Addresses.Delete
+-- Copyright   : (c) 2015 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 the specified address resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.addresses.delete@.
+module Network.Google.Resource.Compute.Addresses.Delete
+    (
+    -- * REST Resource
+      AddressesDeleteResource
+
+    -- * Creating a Request
+    , addressesDelete
+    , AddressesDelete
+
+    -- * Request Lenses
+    , aaProject
+    , aaAddress
+    , aaRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.addresses.delete@ method which the
+-- 'AddressesDelete' request conforms to.
+type AddressesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "addresses" :>
+                   Capture "address" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified address resource.
+--
+-- /See:/ 'addressesDelete' smart constructor.
+data AddressesDelete = AddressesDelete
+    { _aaProject :: !Text
+    , _aaAddress :: !Text
+    , _aaRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aaProject'
+--
+-- * 'aaAddress'
+--
+-- * 'aaRegion'
+addressesDelete
+    :: Text -- ^ 'aaProject'
+    -> Text -- ^ 'aaAddress'
+    -> Text -- ^ 'aaRegion'
+    -> AddressesDelete
+addressesDelete pAaProject_ pAaAddress_ pAaRegion_ =
+    AddressesDelete
+    { _aaProject = pAaProject_
+    , _aaAddress = pAaAddress_
+    , _aaRegion = pAaRegion_
+    }
+
+-- | Project ID for this request.
+aaProject :: Lens' AddressesDelete Text
+aaProject
+  = lens _aaProject (\ s a -> s{_aaProject = a})
+
+-- | Name of the address resource to delete.
+aaAddress :: Lens' AddressesDelete Text
+aaAddress
+  = lens _aaAddress (\ s a -> s{_aaAddress = a})
+
+-- | The name of the region for this request.
+aaRegion :: Lens' AddressesDelete Text
+aaRegion = lens _aaRegion (\ s a -> s{_aaRegion = a})
+
+instance GoogleRequest AddressesDelete where
+        type Rs AddressesDelete = Operation
+        requestClient AddressesDelete{..}
+          = go _aaProject _aaRegion _aaAddress (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AddressesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Addresses/Get.hs b/gen/Network/Google/Resource/Compute/Addresses/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Addresses/Get.hs
@@ -0,0 +1,110 @@
+{-# 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.Compute.Addresses.Get
+-- Copyright   : (c) 2015 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 the specified address resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.addresses.get@.
+module Network.Google.Resource.Compute.Addresses.Get
+    (
+    -- * REST Resource
+      AddressesGetResource
+
+    -- * Creating a Request
+    , addressesGet
+    , AddressesGet
+
+    -- * Request Lenses
+    , addProject
+    , addAddress
+    , addRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.addresses.get@ method which the
+-- 'AddressesGet' request conforms to.
+type AddressesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "addresses" :>
+                   Capture "address" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Address
+
+-- | Returns the specified address resource.
+--
+-- /See:/ 'addressesGet' smart constructor.
+data AddressesGet = AddressesGet
+    { _addProject :: !Text
+    , _addAddress :: !Text
+    , _addRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'addProject'
+--
+-- * 'addAddress'
+--
+-- * 'addRegion'
+addressesGet
+    :: Text -- ^ 'addProject'
+    -> Text -- ^ 'addAddress'
+    -> Text -- ^ 'addRegion'
+    -> AddressesGet
+addressesGet pAddProject_ pAddAddress_ pAddRegion_ =
+    AddressesGet
+    { _addProject = pAddProject_
+    , _addAddress = pAddAddress_
+    , _addRegion = pAddRegion_
+    }
+
+-- | Project ID for this request.
+addProject :: Lens' AddressesGet Text
+addProject
+  = lens _addProject (\ s a -> s{_addProject = a})
+
+-- | Name of the address resource to return.
+addAddress :: Lens' AddressesGet Text
+addAddress
+  = lens _addAddress (\ s a -> s{_addAddress = a})
+
+-- | The name of the region for this request.
+addRegion :: Lens' AddressesGet Text
+addRegion
+  = lens _addRegion (\ s a -> s{_addRegion = a})
+
+instance GoogleRequest AddressesGet where
+        type Rs AddressesGet = Address
+        requestClient AddressesGet{..}
+          = go _addProject _addRegion _addAddress
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy AddressesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Addresses/Insert.hs b/gen/Network/Google/Resource/Compute/Addresses/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Addresses/Insert.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.Addresses.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an address resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.addresses.insert@.
+module Network.Google.Resource.Compute.Addresses.Insert
+    (
+    -- * REST Resource
+      AddressesInsertResource
+
+    -- * Creating a Request
+    , addressesInsert
+    , AddressesInsert
+
+    -- * Request Lenses
+    , aiProject
+    , aiPayload
+    , aiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.addresses.insert@ method which the
+-- 'AddressesInsert' request conforms to.
+type AddressesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "addresses" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Address :> Post '[JSON] Operation
+
+-- | Creates an address resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'addressesInsert' smart constructor.
+data AddressesInsert = AddressesInsert
+    { _aiProject :: !Text
+    , _aiPayload :: !Address
+    , _aiRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aiProject'
+--
+-- * 'aiPayload'
+--
+-- * 'aiRegion'
+addressesInsert
+    :: Text -- ^ 'aiProject'
+    -> Address -- ^ 'aiPayload'
+    -> Text -- ^ 'aiRegion'
+    -> AddressesInsert
+addressesInsert pAiProject_ pAiPayload_ pAiRegion_ =
+    AddressesInsert
+    { _aiProject = pAiProject_
+    , _aiPayload = pAiPayload_
+    , _aiRegion = pAiRegion_
+    }
+
+-- | Project ID for this request.
+aiProject :: Lens' AddressesInsert Text
+aiProject
+  = lens _aiProject (\ s a -> s{_aiProject = a})
+
+-- | Multipart request metadata.
+aiPayload :: Lens' AddressesInsert Address
+aiPayload
+  = lens _aiPayload (\ s a -> s{_aiPayload = a})
+
+-- | The name of the region for this request.
+aiRegion :: Lens' AddressesInsert Text
+aiRegion = lens _aiRegion (\ s a -> s{_aiRegion = a})
+
+instance GoogleRequest AddressesInsert where
+        type Rs AddressesInsert = Operation
+        requestClient AddressesInsert{..}
+          = go _aiProject _aiRegion (Just AltJSON) _aiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AddressesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Addresses/List.hs b/gen/Network/Google/Resource/Compute/Addresses/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Addresses/List.hs
@@ -0,0 +1,145 @@
+{-# 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.Compute.Addresses.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of address resources contained within the specified
+-- region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.addresses.list@.
+module Network.Google.Resource.Compute.Addresses.List
+    (
+    -- * REST Resource
+      AddressesListResource
+
+    -- * Creating a Request
+    , addressesList
+    , AddressesList
+
+    -- * Request Lenses
+    , alProject
+    , alFilter
+    , alRegion
+    , alPageToken
+    , alMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.addresses.list@ method which the
+-- 'AddressesList' request conforms to.
+type AddressesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "addresses" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] AddressList
+
+-- | Retrieves the list of address resources contained within the specified
+-- region.
+--
+-- /See:/ 'addressesList' smart constructor.
+data AddressesList = AddressesList
+    { _alProject    :: !Text
+    , _alFilter     :: !(Maybe Text)
+    , _alRegion     :: !Text
+    , _alPageToken  :: !(Maybe Text)
+    , _alMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddressesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alProject'
+--
+-- * 'alFilter'
+--
+-- * 'alRegion'
+--
+-- * 'alPageToken'
+--
+-- * 'alMaxResults'
+addressesList
+    :: Text -- ^ 'alProject'
+    -> Text -- ^ 'alRegion'
+    -> AddressesList
+addressesList pAlProject_ pAlRegion_ =
+    AddressesList
+    { _alProject = pAlProject_
+    , _alFilter = Nothing
+    , _alRegion = pAlRegion_
+    , _alPageToken = Nothing
+    , _alMaxResults = 500
+    }
+
+-- | Project ID for this request.
+alProject :: Lens' AddressesList Text
+alProject
+  = lens _alProject (\ s a -> s{_alProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+alFilter :: Lens' AddressesList (Maybe Text)
+alFilter = lens _alFilter (\ s a -> s{_alFilter = a})
+
+-- | The name of the region for this request.
+alRegion :: Lens' AddressesList Text
+alRegion = lens _alRegion (\ s a -> s{_alRegion = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+alPageToken :: Lens' AddressesList (Maybe Text)
+alPageToken
+  = lens _alPageToken (\ s a -> s{_alPageToken = a})
+
+-- | Maximum count of results to be returned.
+alMaxResults :: Lens' AddressesList Word32
+alMaxResults
+  = lens _alMaxResults (\ s a -> s{_alMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest AddressesList where
+        type Rs AddressesList = AddressList
+        requestClient AddressesList{..}
+          = go _alProject _alRegion _alFilter _alPageToken
+              (Just _alMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy AddressesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/AggregatedList.hs
@@ -0,0 +1,138 @@
+{-# 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.Compute.Autoscalers.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of autoscalers grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.aggregatedList@.
+module Network.Google.Resource.Compute.Autoscalers.AggregatedList
+    (
+    -- * REST Resource
+      AutoscalersAggregatedListResource
+
+    -- * Creating a Request
+    , autoscalersAggregatedList
+    , AutoscalersAggregatedList
+
+    -- * Request Lenses
+    , autProject
+    , autFilter
+    , autPageToken
+    , autMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.aggregatedList@ method which the
+-- 'AutoscalersAggregatedList' request conforms to.
+type AutoscalersAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "autoscalers" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] AutoscalerAggregatedList
+
+-- | Retrieves the list of autoscalers grouped by scope.
+--
+-- /See:/ 'autoscalersAggregatedList' smart constructor.
+data AutoscalersAggregatedList = AutoscalersAggregatedList
+    { _autProject    :: !Text
+    , _autFilter     :: !(Maybe Text)
+    , _autPageToken  :: !(Maybe Text)
+    , _autMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'autProject'
+--
+-- * 'autFilter'
+--
+-- * 'autPageToken'
+--
+-- * 'autMaxResults'
+autoscalersAggregatedList
+    :: Text -- ^ 'autProject'
+    -> AutoscalersAggregatedList
+autoscalersAggregatedList pAutProject_ =
+    AutoscalersAggregatedList
+    { _autProject = pAutProject_
+    , _autFilter = Nothing
+    , _autPageToken = Nothing
+    , _autMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+autProject :: Lens' AutoscalersAggregatedList Text
+autProject
+  = lens _autProject (\ s a -> s{_autProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+autFilter :: Lens' AutoscalersAggregatedList (Maybe Text)
+autFilter
+  = lens _autFilter (\ s a -> s{_autFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+autPageToken :: Lens' AutoscalersAggregatedList (Maybe Text)
+autPageToken
+  = lens _autPageToken (\ s a -> s{_autPageToken = a})
+
+-- | Maximum count of results to be returned.
+autMaxResults :: Lens' AutoscalersAggregatedList Word32
+autMaxResults
+  = lens _autMaxResults
+      (\ s a -> s{_autMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest AutoscalersAggregatedList
+         where
+        type Rs AutoscalersAggregatedList =
+             AutoscalerAggregatedList
+        requestClient AutoscalersAggregatedList{..}
+          = go _autProject _autFilter _autPageToken
+              (Just _autMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Delete.hs
@@ -0,0 +1,109 @@
+{-# 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.Compute.Autoscalers.Delete
+-- Copyright   : (c) 2015 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 the specified autoscaler resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.delete@.
+module Network.Google.Resource.Compute.Autoscalers.Delete
+    (
+    -- * REST Resource
+      AutoscalersDeleteResource
+
+    -- * Creating a Request
+    , autoscalersDelete
+    , AutoscalersDelete
+
+    -- * Request Lenses
+    , adProject
+    , adZone
+    , adAutoscaler
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.delete@ method which the
+-- 'AutoscalersDelete' request conforms to.
+type AutoscalersDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   Capture "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified autoscaler resource.
+--
+-- /See:/ 'autoscalersDelete' smart constructor.
+data AutoscalersDelete = AutoscalersDelete
+    { _adProject    :: !Text
+    , _adZone       :: !Text
+    , _adAutoscaler :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adProject'
+--
+-- * 'adZone'
+--
+-- * 'adAutoscaler'
+autoscalersDelete
+    :: Text -- ^ 'adProject'
+    -> Text -- ^ 'adZone'
+    -> Text -- ^ 'adAutoscaler'
+    -> AutoscalersDelete
+autoscalersDelete pAdProject_ pAdZone_ pAdAutoscaler_ =
+    AutoscalersDelete
+    { _adProject = pAdProject_
+    , _adZone = pAdZone_
+    , _adAutoscaler = pAdAutoscaler_
+    }
+
+-- | Name of the project scoping this request.
+adProject :: Lens' AutoscalersDelete Text
+adProject
+  = lens _adProject (\ s a -> s{_adProject = a})
+
+-- | Name of the zone scoping this request.
+adZone :: Lens' AutoscalersDelete Text
+adZone = lens _adZone (\ s a -> s{_adZone = a})
+
+-- | Name of the persistent autoscaler resource to delete.
+adAutoscaler :: Lens' AutoscalersDelete Text
+adAutoscaler
+  = lens _adAutoscaler (\ s a -> s{_adAutoscaler = a})
+
+instance GoogleRequest AutoscalersDelete where
+        type Rs AutoscalersDelete = Operation
+        requestClient AutoscalersDelete{..}
+          = go _adProject _adZone _adAutoscaler (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Get.hs
@@ -0,0 +1,108 @@
+{-# 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.Compute.Autoscalers.Get
+-- Copyright   : (c) 2015 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 the specified autoscaler resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.get@.
+module Network.Google.Resource.Compute.Autoscalers.Get
+    (
+    -- * REST Resource
+      AutoscalersGetResource
+
+    -- * Creating a Request
+    , autoscalersGet
+    , AutoscalersGet
+
+    -- * Request Lenses
+    , agProject
+    , agZone
+    , agAutoscaler
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.get@ method which the
+-- 'AutoscalersGet' request conforms to.
+type AutoscalersGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   Capture "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Autoscaler
+
+-- | Returns the specified autoscaler resource.
+--
+-- /See:/ 'autoscalersGet' smart constructor.
+data AutoscalersGet = AutoscalersGet
+    { _agProject    :: !Text
+    , _agZone       :: !Text
+    , _agAutoscaler :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'agProject'
+--
+-- * 'agZone'
+--
+-- * 'agAutoscaler'
+autoscalersGet
+    :: Text -- ^ 'agProject'
+    -> Text -- ^ 'agZone'
+    -> Text -- ^ 'agAutoscaler'
+    -> AutoscalersGet
+autoscalersGet pAgProject_ pAgZone_ pAgAutoscaler_ =
+    AutoscalersGet
+    { _agProject = pAgProject_
+    , _agZone = pAgZone_
+    , _agAutoscaler = pAgAutoscaler_
+    }
+
+-- | Name of the project scoping this request.
+agProject :: Lens' AutoscalersGet Text
+agProject
+  = lens _agProject (\ s a -> s{_agProject = a})
+
+-- | Name of the zone scoping this request.
+agZone :: Lens' AutoscalersGet Text
+agZone = lens _agZone (\ s a -> s{_agZone = a})
+
+-- | Name of the persistent autoscaler resource to return.
+agAutoscaler :: Lens' AutoscalersGet Text
+agAutoscaler
+  = lens _agAutoscaler (\ s a -> s{_agAutoscaler = a})
+
+instance GoogleRequest AutoscalersGet where
+        type Rs AutoscalersGet = Autoscaler
+        requestClient AutoscalersGet{..}
+          = go _agProject _agZone _agAutoscaler (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy AutoscalersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Insert.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.Autoscalers.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an autoscaler resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.insert@.
+module Network.Google.Resource.Compute.Autoscalers.Insert
+    (
+    -- * REST Resource
+      AutoscalersInsertResource
+
+    -- * Creating a Request
+    , autoscalersInsert
+    , AutoscalersInsert
+
+    -- * Request Lenses
+    , aiiProject
+    , aiiZone
+    , aiiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.insert@ method which the
+-- 'AutoscalersInsert' request conforms to.
+type AutoscalersInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation
+
+-- | Creates an autoscaler resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'autoscalersInsert' smart constructor.
+data AutoscalersInsert = AutoscalersInsert
+    { _aiiProject :: !Text
+    , _aiiZone    :: !Text
+    , _aiiPayload :: !Autoscaler
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aiiProject'
+--
+-- * 'aiiZone'
+--
+-- * 'aiiPayload'
+autoscalersInsert
+    :: Text -- ^ 'aiiProject'
+    -> Text -- ^ 'aiiZone'
+    -> Autoscaler -- ^ 'aiiPayload'
+    -> AutoscalersInsert
+autoscalersInsert pAiiProject_ pAiiZone_ pAiiPayload_ =
+    AutoscalersInsert
+    { _aiiProject = pAiiProject_
+    , _aiiZone = pAiiZone_
+    , _aiiPayload = pAiiPayload_
+    }
+
+-- | Name of the project scoping this request.
+aiiProject :: Lens' AutoscalersInsert Text
+aiiProject
+  = lens _aiiProject (\ s a -> s{_aiiProject = a})
+
+-- | Name of the zone scoping this request.
+aiiZone :: Lens' AutoscalersInsert Text
+aiiZone = lens _aiiZone (\ s a -> s{_aiiZone = a})
+
+-- | Multipart request metadata.
+aiiPayload :: Lens' AutoscalersInsert Autoscaler
+aiiPayload
+  = lens _aiiPayload (\ s a -> s{_aiiPayload = a})
+
+instance GoogleRequest AutoscalersInsert where
+        type Rs AutoscalersInsert = Operation
+        requestClient AutoscalersInsert{..}
+          = go _aiiProject _aiiZone (Just AltJSON) _aiiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/List.hs b/gen/Network/Google/Resource/Compute/Autoscalers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/List.hs
@@ -0,0 +1,146 @@
+{-# 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.Compute.Autoscalers.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of autoscaler resources contained within the
+-- specified zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.list@.
+module Network.Google.Resource.Compute.Autoscalers.List
+    (
+    -- * REST Resource
+      AutoscalersListResource
+
+    -- * Creating a Request
+    , autoscalersList
+    , AutoscalersList
+
+    -- * Request Lenses
+    , aProject
+    , aZone
+    , aFilter
+    , aPageToken
+    , aMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.list@ method which the
+-- 'AutoscalersList' request conforms to.
+type AutoscalersListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] AutoscalerList
+
+-- | Retrieves the list of autoscaler resources contained within the
+-- specified zone.
+--
+-- /See:/ 'autoscalersList' smart constructor.
+data AutoscalersList = AutoscalersList
+    { _aProject    :: !Text
+    , _aZone       :: !Text
+    , _aFilter     :: !(Maybe Text)
+    , _aPageToken  :: !(Maybe Text)
+    , _aMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aProject'
+--
+-- * 'aZone'
+--
+-- * 'aFilter'
+--
+-- * 'aPageToken'
+--
+-- * 'aMaxResults'
+autoscalersList
+    :: Text -- ^ 'aProject'
+    -> Text -- ^ 'aZone'
+    -> AutoscalersList
+autoscalersList pAProject_ pAZone_ =
+    AutoscalersList
+    { _aProject = pAProject_
+    , _aZone = pAZone_
+    , _aFilter = Nothing
+    , _aPageToken = Nothing
+    , _aMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+aProject :: Lens' AutoscalersList Text
+aProject = lens _aProject (\ s a -> s{_aProject = a})
+
+-- | Name of the zone scoping this request.
+aZone :: Lens' AutoscalersList Text
+aZone = lens _aZone (\ s a -> s{_aZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+aFilter :: Lens' AutoscalersList (Maybe Text)
+aFilter = lens _aFilter (\ s a -> s{_aFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+aPageToken :: Lens' AutoscalersList (Maybe Text)
+aPageToken
+  = lens _aPageToken (\ s a -> s{_aPageToken = a})
+
+-- | Maximum count of results to be returned.
+aMaxResults :: Lens' AutoscalersList Word32
+aMaxResults
+  = lens _aMaxResults (\ s a -> s{_aMaxResults = a}) .
+      _Coerce
+
+instance GoogleRequest AutoscalersList where
+        type Rs AutoscalersList = AutoscalerList
+        requestClient AutoscalersList{..}
+          = go _aProject _aZone _aFilter _aPageToken
+              (Just _aMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Patch.hs
@@ -0,0 +1,125 @@
+{-# 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.Compute.Autoscalers.Patch
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an autoscaler resource in the specified project using the data
+-- included in the request. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.patch@.
+module Network.Google.Resource.Compute.Autoscalers.Patch
+    (
+    -- * REST Resource
+      AutoscalersPatchResource
+
+    -- * Creating a Request
+    , autoscalersPatch
+    , AutoscalersPatch
+
+    -- * Request Lenses
+    , apProject
+    , apZone
+    , apPayload
+    , apAutoscaler
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.patch@ method which the
+-- 'AutoscalersPatch' request conforms to.
+type AutoscalersPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   QueryParam "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation
+
+-- | Updates an autoscaler resource in the specified project using the data
+-- included in the request. This method supports patch semantics.
+--
+-- /See:/ 'autoscalersPatch' smart constructor.
+data AutoscalersPatch = AutoscalersPatch
+    { _apProject    :: !Text
+    , _apZone       :: !Text
+    , _apPayload    :: !Autoscaler
+    , _apAutoscaler :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'apProject'
+--
+-- * 'apZone'
+--
+-- * 'apPayload'
+--
+-- * 'apAutoscaler'
+autoscalersPatch
+    :: Text -- ^ 'apProject'
+    -> Text -- ^ 'apZone'
+    -> Autoscaler -- ^ 'apPayload'
+    -> Text -- ^ 'apAutoscaler'
+    -> AutoscalersPatch
+autoscalersPatch pApProject_ pApZone_ pApPayload_ pApAutoscaler_ =
+    AutoscalersPatch
+    { _apProject = pApProject_
+    , _apZone = pApZone_
+    , _apPayload = pApPayload_
+    , _apAutoscaler = pApAutoscaler_
+    }
+
+-- | Name of the project scoping this request.
+apProject :: Lens' AutoscalersPatch Text
+apProject
+  = lens _apProject (\ s a -> s{_apProject = a})
+
+-- | Name of the zone scoping this request.
+apZone :: Lens' AutoscalersPatch Text
+apZone = lens _apZone (\ s a -> s{_apZone = a})
+
+-- | Multipart request metadata.
+apPayload :: Lens' AutoscalersPatch Autoscaler
+apPayload
+  = lens _apPayload (\ s a -> s{_apPayload = a})
+
+-- | Name of the autoscaler resource to update.
+apAutoscaler :: Lens' AutoscalersPatch Text
+apAutoscaler
+  = lens _apAutoscaler (\ s a -> s{_apAutoscaler = a})
+
+instance GoogleRequest AutoscalersPatch where
+        type Rs AutoscalersPatch = Operation
+        requestClient AutoscalersPatch{..}
+          = go _apProject _apZone (Just _apAutoscaler)
+              (Just AltJSON)
+              _apPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs b/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Autoscalers/Update.hs
@@ -0,0 +1,123 @@
+{-# 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.Compute.Autoscalers.Update
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an autoscaler resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.autoscalers.update@.
+module Network.Google.Resource.Compute.Autoscalers.Update
+    (
+    -- * REST Resource
+      AutoscalersUpdateResource
+
+    -- * Creating a Request
+    , autoscalersUpdate
+    , AutoscalersUpdate
+
+    -- * Request Lenses
+    , auProject
+    , auZone
+    , auPayload
+    , auAutoscaler
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.autoscalers.update@ method which the
+-- 'AutoscalersUpdate' request conforms to.
+type AutoscalersUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   QueryParam "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation
+
+-- | Updates an autoscaler resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'autoscalersUpdate' smart constructor.
+data AutoscalersUpdate = AutoscalersUpdate
+    { _auProject    :: !Text
+    , _auZone       :: !Text
+    , _auPayload    :: !Autoscaler
+    , _auAutoscaler :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalersUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auProject'
+--
+-- * 'auZone'
+--
+-- * 'auPayload'
+--
+-- * 'auAutoscaler'
+autoscalersUpdate
+    :: Text -- ^ 'auProject'
+    -> Text -- ^ 'auZone'
+    -> Autoscaler -- ^ 'auPayload'
+    -> AutoscalersUpdate
+autoscalersUpdate pAuProject_ pAuZone_ pAuPayload_ =
+    AutoscalersUpdate
+    { _auProject = pAuProject_
+    , _auZone = pAuZone_
+    , _auPayload = pAuPayload_
+    , _auAutoscaler = Nothing
+    }
+
+-- | Name of the project scoping this request.
+auProject :: Lens' AutoscalersUpdate Text
+auProject
+  = lens _auProject (\ s a -> s{_auProject = a})
+
+-- | Name of the zone scoping this request.
+auZone :: Lens' AutoscalersUpdate Text
+auZone = lens _auZone (\ s a -> s{_auZone = a})
+
+-- | Multipart request metadata.
+auPayload :: Lens' AutoscalersUpdate Autoscaler
+auPayload
+  = lens _auPayload (\ s a -> s{_auPayload = a})
+
+-- | Name of the autoscaler resource to update.
+auAutoscaler :: Lens' AutoscalersUpdate (Maybe Text)
+auAutoscaler
+  = lens _auAutoscaler (\ s a -> s{_auAutoscaler = a})
+
+instance GoogleRequest AutoscalersUpdate where
+        type Rs AutoscalersUpdate = Operation
+        requestClient AutoscalersUpdate{..}
+          = go _auProject _auZone _auAutoscaler (Just AltJSON)
+              _auPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs b/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Delete.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.BackendServices.Delete
+-- Copyright   : (c) 2015 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 the specified BackendService resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.delete@.
+module Network.Google.Resource.Compute.BackendServices.Delete
+    (
+    -- * REST Resource
+      BackendServicesDeleteResource
+
+    -- * Creating a Request
+    , backendServicesDelete
+    , BackendServicesDelete
+
+    -- * Request Lenses
+    , bsdProject
+    , bsdBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.delete@ method which the
+-- 'BackendServicesDelete' request conforms to.
+type BackendServicesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified BackendService resource.
+--
+-- /See:/ 'backendServicesDelete' smart constructor.
+data BackendServicesDelete = BackendServicesDelete
+    { _bsdProject        :: !Text
+    , _bsdBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsdProject'
+--
+-- * 'bsdBackendService'
+backendServicesDelete
+    :: Text -- ^ 'bsdProject'
+    -> Text -- ^ 'bsdBackendService'
+    -> BackendServicesDelete
+backendServicesDelete pBsdProject_ pBsdBackendService_ =
+    BackendServicesDelete
+    { _bsdProject = pBsdProject_
+    , _bsdBackendService = pBsdBackendService_
+    }
+
+-- | Name of the project scoping this request.
+bsdProject :: Lens' BackendServicesDelete Text
+bsdProject
+  = lens _bsdProject (\ s a -> s{_bsdProject = a})
+
+-- | Name of the BackendService resource to delete.
+bsdBackendService :: Lens' BackendServicesDelete Text
+bsdBackendService
+  = lens _bsdBackendService
+      (\ s a -> s{_bsdBackendService = a})
+
+instance GoogleRequest BackendServicesDelete where
+        type Rs BackendServicesDelete = Operation
+        requestClient BackendServicesDelete{..}
+          = go _bsdProject _bsdBackendService (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Get.hs b/gen/Network/Google/Resource/Compute/BackendServices/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Get.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.BackendServices.Get
+-- Copyright   : (c) 2015 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 the specified BackendService resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.get@.
+module Network.Google.Resource.Compute.BackendServices.Get
+    (
+    -- * REST Resource
+      BackendServicesGetResource
+
+    -- * Creating a Request
+    , backendServicesGet
+    , BackendServicesGet
+
+    -- * Request Lenses
+    , bsgProject
+    , bsgBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.get@ method which the
+-- 'BackendServicesGet' request conforms to.
+type BackendServicesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] BackendService
+
+-- | Returns the specified BackendService resource.
+--
+-- /See:/ 'backendServicesGet' smart constructor.
+data BackendServicesGet = BackendServicesGet
+    { _bsgProject        :: !Text
+    , _bsgBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsgProject'
+--
+-- * 'bsgBackendService'
+backendServicesGet
+    :: Text -- ^ 'bsgProject'
+    -> Text -- ^ 'bsgBackendService'
+    -> BackendServicesGet
+backendServicesGet pBsgProject_ pBsgBackendService_ =
+    BackendServicesGet
+    { _bsgProject = pBsgProject_
+    , _bsgBackendService = pBsgBackendService_
+    }
+
+-- | Name of the project scoping this request.
+bsgProject :: Lens' BackendServicesGet Text
+bsgProject
+  = lens _bsgProject (\ s a -> s{_bsgProject = a})
+
+-- | Name of the BackendService resource to return.
+bsgBackendService :: Lens' BackendServicesGet Text
+bsgBackendService
+  = lens _bsgBackendService
+      (\ s a -> s{_bsgBackendService = a})
+
+instance GoogleRequest BackendServicesGet where
+        type Rs BackendServicesGet = BackendService
+        requestClient BackendServicesGet{..}
+          = go _bsgProject _bsgBackendService (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs b/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/GetHealth.hs
@@ -0,0 +1,115 @@
+{-# 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.Compute.BackendServices.GetHealth
+-- Copyright   : (c) 2015 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 most recent health check results for this BackendService.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.getHealth@.
+module Network.Google.Resource.Compute.BackendServices.GetHealth
+    (
+    -- * REST Resource
+      BackendServicesGetHealthResource
+
+    -- * Creating a Request
+    , backendServicesGetHealth
+    , BackendServicesGetHealth
+
+    -- * Request Lenses
+    , bsghProject
+    , bsghPayload
+    , bsghBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.getHealth@ method which the
+-- 'BackendServicesGetHealth' request conforms to.
+type BackendServicesGetHealthResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   "getHealth" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] ResourceGroupReference :>
+                         Post '[JSON] BackendServiceGroupHealth
+
+-- | Gets the most recent health check results for this BackendService.
+--
+-- /See:/ 'backendServicesGetHealth' smart constructor.
+data BackendServicesGetHealth = BackendServicesGetHealth
+    { _bsghProject        :: !Text
+    , _bsghPayload        :: !ResourceGroupReference
+    , _bsghBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesGetHealth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsghProject'
+--
+-- * 'bsghPayload'
+--
+-- * 'bsghBackendService'
+backendServicesGetHealth
+    :: Text -- ^ 'bsghProject'
+    -> ResourceGroupReference -- ^ 'bsghPayload'
+    -> Text -- ^ 'bsghBackendService'
+    -> BackendServicesGetHealth
+backendServicesGetHealth pBsghProject_ pBsghPayload_ pBsghBackendService_ =
+    BackendServicesGetHealth
+    { _bsghProject = pBsghProject_
+    , _bsghPayload = pBsghPayload_
+    , _bsghBackendService = pBsghBackendService_
+    }
+
+bsghProject :: Lens' BackendServicesGetHealth Text
+bsghProject
+  = lens _bsghProject (\ s a -> s{_bsghProject = a})
+
+-- | Multipart request metadata.
+bsghPayload :: Lens' BackendServicesGetHealth ResourceGroupReference
+bsghPayload
+  = lens _bsghPayload (\ s a -> s{_bsghPayload = a})
+
+-- | Name of the BackendService resource to which the queried instance
+-- belongs.
+bsghBackendService :: Lens' BackendServicesGetHealth Text
+bsghBackendService
+  = lens _bsghBackendService
+      (\ s a -> s{_bsghBackendService = a})
+
+instance GoogleRequest BackendServicesGetHealth where
+        type Rs BackendServicesGetHealth =
+             BackendServiceGroupHealth
+        requestClient BackendServicesGetHealth{..}
+          = go _bsghProject _bsghBackendService (Just AltJSON)
+              _bsghPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesGetHealthResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs b/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Insert.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.BackendServices.Insert
+-- Copyright   : (c) 2015 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 BackendService resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.insert@.
+module Network.Google.Resource.Compute.BackendServices.Insert
+    (
+    -- * REST Resource
+      BackendServicesInsertResource
+
+    -- * Creating a Request
+    , backendServicesInsert
+    , BackendServicesInsert
+
+    -- * Request Lenses
+    , bsiProject
+    , bsiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.insert@ method which the
+-- 'BackendServicesInsert' request conforms to.
+type BackendServicesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] BackendService :>
+                     Post '[JSON] Operation
+
+-- | Creates a BackendService resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'backendServicesInsert' smart constructor.
+data BackendServicesInsert = BackendServicesInsert
+    { _bsiProject :: !Text
+    , _bsiPayload :: !BackendService
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsiProject'
+--
+-- * 'bsiPayload'
+backendServicesInsert
+    :: Text -- ^ 'bsiProject'
+    -> BackendService -- ^ 'bsiPayload'
+    -> BackendServicesInsert
+backendServicesInsert pBsiProject_ pBsiPayload_ =
+    BackendServicesInsert
+    { _bsiProject = pBsiProject_
+    , _bsiPayload = pBsiPayload_
+    }
+
+-- | Name of the project scoping this request.
+bsiProject :: Lens' BackendServicesInsert Text
+bsiProject
+  = lens _bsiProject (\ s a -> s{_bsiProject = a})
+
+-- | Multipart request metadata.
+bsiPayload :: Lens' BackendServicesInsert BackendService
+bsiPayload
+  = lens _bsiPayload (\ s a -> s{_bsiPayload = a})
+
+instance GoogleRequest BackendServicesInsert where
+        type Rs BackendServicesInsert = Operation
+        requestClient BackendServicesInsert{..}
+          = go _bsiProject (Just AltJSON) _bsiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/List.hs b/gen/Network/Google/Resource/Compute/BackendServices/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/List.hs
@@ -0,0 +1,138 @@
+{-# 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.Compute.BackendServices.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of BackendService resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.list@.
+module Network.Google.Resource.Compute.BackendServices.List
+    (
+    -- * REST Resource
+      BackendServicesListResource
+
+    -- * Creating a Request
+    , backendServicesList
+    , BackendServicesList
+
+    -- * Request Lenses
+    , bslProject
+    , bslFilter
+    , bslPageToken
+    , bslMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.list@ method which the
+-- 'BackendServicesList' request conforms to.
+type BackendServicesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] BackendServiceList
+
+-- | Retrieves the list of BackendService resources available to the
+-- specified project.
+--
+-- /See:/ 'backendServicesList' smart constructor.
+data BackendServicesList = BackendServicesList
+    { _bslProject    :: !Text
+    , _bslFilter     :: !(Maybe Text)
+    , _bslPageToken  :: !(Maybe Text)
+    , _bslMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bslProject'
+--
+-- * 'bslFilter'
+--
+-- * 'bslPageToken'
+--
+-- * 'bslMaxResults'
+backendServicesList
+    :: Text -- ^ 'bslProject'
+    -> BackendServicesList
+backendServicesList pBslProject_ =
+    BackendServicesList
+    { _bslProject = pBslProject_
+    , _bslFilter = Nothing
+    , _bslPageToken = Nothing
+    , _bslMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+bslProject :: Lens' BackendServicesList Text
+bslProject
+  = lens _bslProject (\ s a -> s{_bslProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+bslFilter :: Lens' BackendServicesList (Maybe Text)
+bslFilter
+  = lens _bslFilter (\ s a -> s{_bslFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+bslPageToken :: Lens' BackendServicesList (Maybe Text)
+bslPageToken
+  = lens _bslPageToken (\ s a -> s{_bslPageToken = a})
+
+-- | Maximum count of results to be returned.
+bslMaxResults :: Lens' BackendServicesList Word32
+bslMaxResults
+  = lens _bslMaxResults
+      (\ s a -> s{_bslMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest BackendServicesList where
+        type Rs BackendServicesList = BackendServiceList
+        requestClient BackendServicesList{..}
+          = go _bslProject _bslFilter _bslPageToken
+              (Just _bslMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs b/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Patch.hs
@@ -0,0 +1,115 @@
+{-# 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.Compute.BackendServices.Patch
+-- Copyright   : (c) 2015 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)
+--
+-- Update the entire content of the BackendService resource. This method
+-- supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.patch@.
+module Network.Google.Resource.Compute.BackendServices.Patch
+    (
+    -- * REST Resource
+      BackendServicesPatchResource
+
+    -- * Creating a Request
+    , backendServicesPatch
+    , BackendServicesPatch
+
+    -- * Request Lenses
+    , bspProject
+    , bspPayload
+    , bspBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.patch@ method which the
+-- 'BackendServicesPatch' request conforms to.
+type BackendServicesPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] BackendService :>
+                       Patch '[JSON] Operation
+
+-- | Update the entire content of the BackendService resource. This method
+-- supports patch semantics.
+--
+-- /See:/ 'backendServicesPatch' smart constructor.
+data BackendServicesPatch = BackendServicesPatch
+    { _bspProject        :: !Text
+    , _bspPayload        :: !BackendService
+    , _bspBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bspProject'
+--
+-- * 'bspPayload'
+--
+-- * 'bspBackendService'
+backendServicesPatch
+    :: Text -- ^ 'bspProject'
+    -> BackendService -- ^ 'bspPayload'
+    -> Text -- ^ 'bspBackendService'
+    -> BackendServicesPatch
+backendServicesPatch pBspProject_ pBspPayload_ pBspBackendService_ =
+    BackendServicesPatch
+    { _bspProject = pBspProject_
+    , _bspPayload = pBspPayload_
+    , _bspBackendService = pBspBackendService_
+    }
+
+-- | Name of the project scoping this request.
+bspProject :: Lens' BackendServicesPatch Text
+bspProject
+  = lens _bspProject (\ s a -> s{_bspProject = a})
+
+-- | Multipart request metadata.
+bspPayload :: Lens' BackendServicesPatch BackendService
+bspPayload
+  = lens _bspPayload (\ s a -> s{_bspPayload = a})
+
+-- | Name of the BackendService resource to update.
+bspBackendService :: Lens' BackendServicesPatch Text
+bspBackendService
+  = lens _bspBackendService
+      (\ s a -> s{_bspBackendService = a})
+
+instance GoogleRequest BackendServicesPatch where
+        type Rs BackendServicesPatch = Operation
+        requestClient BackendServicesPatch{..}
+          = go _bspProject _bspBackendService (Just AltJSON)
+              _bspPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/BackendServices/Update.hs b/gen/Network/Google/Resource/Compute/BackendServices/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/BackendServices/Update.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.BackendServices.Update
+-- Copyright   : (c) 2015 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)
+--
+-- Update the entire content of the BackendService resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.backendServices.update@.
+module Network.Google.Resource.Compute.BackendServices.Update
+    (
+    -- * REST Resource
+      BackendServicesUpdateResource
+
+    -- * Creating a Request
+    , backendServicesUpdate
+    , BackendServicesUpdate
+
+    -- * Request Lenses
+    , bsuProject
+    , bsuPayload
+    , bsuBackendService
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.backendServices.update@ method which the
+-- 'BackendServicesUpdate' request conforms to.
+type BackendServicesUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "backendServices" :>
+                 Capture "backendService" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] BackendService :>
+                       Put '[JSON] Operation
+
+-- | Update the entire content of the BackendService resource.
+--
+-- /See:/ 'backendServicesUpdate' smart constructor.
+data BackendServicesUpdate = BackendServicesUpdate
+    { _bsuProject        :: !Text
+    , _bsuPayload        :: !BackendService
+    , _bsuBackendService :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BackendServicesUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bsuProject'
+--
+-- * 'bsuPayload'
+--
+-- * 'bsuBackendService'
+backendServicesUpdate
+    :: Text -- ^ 'bsuProject'
+    -> BackendService -- ^ 'bsuPayload'
+    -> Text -- ^ 'bsuBackendService'
+    -> BackendServicesUpdate
+backendServicesUpdate pBsuProject_ pBsuPayload_ pBsuBackendService_ =
+    BackendServicesUpdate
+    { _bsuProject = pBsuProject_
+    , _bsuPayload = pBsuPayload_
+    , _bsuBackendService = pBsuBackendService_
+    }
+
+-- | Name of the project scoping this request.
+bsuProject :: Lens' BackendServicesUpdate Text
+bsuProject
+  = lens _bsuProject (\ s a -> s{_bsuProject = a})
+
+-- | Multipart request metadata.
+bsuPayload :: Lens' BackendServicesUpdate BackendService
+bsuPayload
+  = lens _bsuPayload (\ s a -> s{_bsuPayload = a})
+
+-- | Name of the BackendService resource to update.
+bsuBackendService :: Lens' BackendServicesUpdate Text
+bsuBackendService
+  = lens _bsuBackendService
+      (\ s a -> s{_bsuBackendService = a})
+
+instance GoogleRequest BackendServicesUpdate where
+        type Rs BackendServicesUpdate = Operation
+        requestClient BackendServicesUpdate{..}
+          = go _bsuProject _bsuBackendService (Just AltJSON)
+              _bsuPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy BackendServicesUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/DiskTypes/AggregatedList.hs
@@ -0,0 +1,138 @@
+{-# 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.Compute.DiskTypes.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of disk type resources grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.diskTypes.aggregatedList@.
+module Network.Google.Resource.Compute.DiskTypes.AggregatedList
+    (
+    -- * REST Resource
+      DiskTypesAggregatedListResource
+
+    -- * Creating a Request
+    , diskTypesAggregatedList
+    , DiskTypesAggregatedList
+
+    -- * Request Lenses
+    , dtalProject
+    , dtalFilter
+    , dtalPageToken
+    , dtalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.diskTypes.aggregatedList@ method which the
+-- 'DiskTypesAggregatedList' request conforms to.
+type DiskTypesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "diskTypes" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] DiskTypeAggregatedList
+
+-- | Retrieves the list of disk type resources grouped by scope.
+--
+-- /See:/ 'diskTypesAggregatedList' smart constructor.
+data DiskTypesAggregatedList = DiskTypesAggregatedList
+    { _dtalProject    :: !Text
+    , _dtalFilter     :: !(Maybe Text)
+    , _dtalPageToken  :: !(Maybe Text)
+    , _dtalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtalProject'
+--
+-- * 'dtalFilter'
+--
+-- * 'dtalPageToken'
+--
+-- * 'dtalMaxResults'
+diskTypesAggregatedList
+    :: Text -- ^ 'dtalProject'
+    -> DiskTypesAggregatedList
+diskTypesAggregatedList pDtalProject_ =
+    DiskTypesAggregatedList
+    { _dtalProject = pDtalProject_
+    , _dtalFilter = Nothing
+    , _dtalPageToken = Nothing
+    , _dtalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+dtalProject :: Lens' DiskTypesAggregatedList Text
+dtalProject
+  = lens _dtalProject (\ s a -> s{_dtalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+dtalFilter :: Lens' DiskTypesAggregatedList (Maybe Text)
+dtalFilter
+  = lens _dtalFilter (\ s a -> s{_dtalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+dtalPageToken :: Lens' DiskTypesAggregatedList (Maybe Text)
+dtalPageToken
+  = lens _dtalPageToken
+      (\ s a -> s{_dtalPageToken = a})
+
+-- | Maximum count of results to be returned.
+dtalMaxResults :: Lens' DiskTypesAggregatedList Word32
+dtalMaxResults
+  = lens _dtalMaxResults
+      (\ s a -> s{_dtalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest DiskTypesAggregatedList where
+        type Rs DiskTypesAggregatedList =
+             DiskTypeAggregatedList
+        requestClient DiskTypesAggregatedList{..}
+          = go _dtalProject _dtalFilter _dtalPageToken
+              (Just _dtalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DiskTypesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs b/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/DiskTypes/Get.hs
@@ -0,0 +1,108 @@
+{-# 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.Compute.DiskTypes.Get
+-- Copyright   : (c) 2015 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 the specified disk type resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.diskTypes.get@.
+module Network.Google.Resource.Compute.DiskTypes.Get
+    (
+    -- * REST Resource
+      DiskTypesGetResource
+
+    -- * Creating a Request
+    , diskTypesGet
+    , DiskTypesGet
+
+    -- * Request Lenses
+    , dtgProject
+    , dtgZone
+    , dtgDiskType
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.diskTypes.get@ method which the
+-- 'DiskTypesGet' request conforms to.
+type DiskTypesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "diskTypes" :>
+                   Capture "diskType" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] DiskType
+
+-- | Returns the specified disk type resource.
+--
+-- /See:/ 'diskTypesGet' smart constructor.
+data DiskTypesGet = DiskTypesGet
+    { _dtgProject  :: !Text
+    , _dtgZone     :: !Text
+    , _dtgDiskType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtgProject'
+--
+-- * 'dtgZone'
+--
+-- * 'dtgDiskType'
+diskTypesGet
+    :: Text -- ^ 'dtgProject'
+    -> Text -- ^ 'dtgZone'
+    -> Text -- ^ 'dtgDiskType'
+    -> DiskTypesGet
+diskTypesGet pDtgProject_ pDtgZone_ pDtgDiskType_ =
+    DiskTypesGet
+    { _dtgProject = pDtgProject_
+    , _dtgZone = pDtgZone_
+    , _dtgDiskType = pDtgDiskType_
+    }
+
+-- | Project ID for this request.
+dtgProject :: Lens' DiskTypesGet Text
+dtgProject
+  = lens _dtgProject (\ s a -> s{_dtgProject = a})
+
+-- | The name of the zone for this request.
+dtgZone :: Lens' DiskTypesGet Text
+dtgZone = lens _dtgZone (\ s a -> s{_dtgZone = a})
+
+-- | Name of the disk type resource to return.
+dtgDiskType :: Lens' DiskTypesGet Text
+dtgDiskType
+  = lens _dtgDiskType (\ s a -> s{_dtgDiskType = a})
+
+instance GoogleRequest DiskTypesGet where
+        type Rs DiskTypesGet = DiskType
+        requestClient DiskTypesGet{..}
+          = go _dtgProject _dtgZone _dtgDiskType (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DiskTypesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/DiskTypes/List.hs b/gen/Network/Google/Resource/Compute/DiskTypes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/DiskTypes/List.hs
@@ -0,0 +1,147 @@
+{-# 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.Compute.DiskTypes.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of disk type resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.diskTypes.list@.
+module Network.Google.Resource.Compute.DiskTypes.List
+    (
+    -- * REST Resource
+      DiskTypesListResource
+
+    -- * Creating a Request
+    , diskTypesList
+    , DiskTypesList
+
+    -- * Request Lenses
+    , dtlProject
+    , dtlZone
+    , dtlFilter
+    , dtlPageToken
+    , dtlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.diskTypes.list@ method which the
+-- 'DiskTypesList' request conforms to.
+type DiskTypesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "diskTypes" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] DiskTypeList
+
+-- | Retrieves the list of disk type resources available to the specified
+-- project.
+--
+-- /See:/ 'diskTypesList' smart constructor.
+data DiskTypesList = DiskTypesList
+    { _dtlProject    :: !Text
+    , _dtlZone       :: !Text
+    , _dtlFilter     :: !(Maybe Text)
+    , _dtlPageToken  :: !(Maybe Text)
+    , _dtlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DiskTypesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtlProject'
+--
+-- * 'dtlZone'
+--
+-- * 'dtlFilter'
+--
+-- * 'dtlPageToken'
+--
+-- * 'dtlMaxResults'
+diskTypesList
+    :: Text -- ^ 'dtlProject'
+    -> Text -- ^ 'dtlZone'
+    -> DiskTypesList
+diskTypesList pDtlProject_ pDtlZone_ =
+    DiskTypesList
+    { _dtlProject = pDtlProject_
+    , _dtlZone = pDtlZone_
+    , _dtlFilter = Nothing
+    , _dtlPageToken = Nothing
+    , _dtlMaxResults = 500
+    }
+
+-- | Project ID for this request.
+dtlProject :: Lens' DiskTypesList Text
+dtlProject
+  = lens _dtlProject (\ s a -> s{_dtlProject = a})
+
+-- | The name of the zone for this request.
+dtlZone :: Lens' DiskTypesList Text
+dtlZone = lens _dtlZone (\ s a -> s{_dtlZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+dtlFilter :: Lens' DiskTypesList (Maybe Text)
+dtlFilter
+  = lens _dtlFilter (\ s a -> s{_dtlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+dtlPageToken :: Lens' DiskTypesList (Maybe Text)
+dtlPageToken
+  = lens _dtlPageToken (\ s a -> s{_dtlPageToken = a})
+
+-- | Maximum count of results to be returned.
+dtlMaxResults :: Lens' DiskTypesList Word32
+dtlMaxResults
+  = lens _dtlMaxResults
+      (\ s a -> s{_dtlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest DiskTypesList where
+        type Rs DiskTypesList = DiskTypeList
+        requestClient DiskTypesList{..}
+          = go _dtlProject _dtlZone _dtlFilter _dtlPageToken
+              (Just _dtlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DiskTypesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/AggregatedList.hs
@@ -0,0 +1,136 @@
+{-# 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.Compute.Disks.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of disks grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.aggregatedList@.
+module Network.Google.Resource.Compute.Disks.AggregatedList
+    (
+    -- * REST Resource
+      DisksAggregatedListResource
+
+    -- * Creating a Request
+    , disksAggregatedList
+    , DisksAggregatedList
+
+    -- * Request Lenses
+    , dalProject
+    , dalFilter
+    , dalPageToken
+    , dalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.aggregatedList@ method which the
+-- 'DisksAggregatedList' request conforms to.
+type DisksAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "disks" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] DiskAggregatedList
+
+-- | Retrieves the list of disks grouped by scope.
+--
+-- /See:/ 'disksAggregatedList' smart constructor.
+data DisksAggregatedList = DisksAggregatedList
+    { _dalProject    :: !Text
+    , _dalFilter     :: !(Maybe Text)
+    , _dalPageToken  :: !(Maybe Text)
+    , _dalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dalProject'
+--
+-- * 'dalFilter'
+--
+-- * 'dalPageToken'
+--
+-- * 'dalMaxResults'
+disksAggregatedList
+    :: Text -- ^ 'dalProject'
+    -> DisksAggregatedList
+disksAggregatedList pDalProject_ =
+    DisksAggregatedList
+    { _dalProject = pDalProject_
+    , _dalFilter = Nothing
+    , _dalPageToken = Nothing
+    , _dalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+dalProject :: Lens' DisksAggregatedList Text
+dalProject
+  = lens _dalProject (\ s a -> s{_dalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+dalFilter :: Lens' DisksAggregatedList (Maybe Text)
+dalFilter
+  = lens _dalFilter (\ s a -> s{_dalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+dalPageToken :: Lens' DisksAggregatedList (Maybe Text)
+dalPageToken
+  = lens _dalPageToken (\ s a -> s{_dalPageToken = a})
+
+-- | Maximum count of results to be returned.
+dalMaxResults :: Lens' DisksAggregatedList Word32
+dalMaxResults
+  = lens _dalMaxResults
+      (\ s a -> s{_dalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest DisksAggregatedList where
+        type Rs DisksAggregatedList = DiskAggregatedList
+        requestClient DisksAggregatedList{..}
+          = go _dalProject _dalFilter _dalPageToken
+              (Just _dalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DisksAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs b/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/CreateSnapshot.hs
@@ -0,0 +1,122 @@
+{-# 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.Compute.Disks.CreateSnapshot
+-- Copyright   : (c) 2015 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 snapshot of this disk.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.createSnapshot@.
+module Network.Google.Resource.Compute.Disks.CreateSnapshot
+    (
+    -- * REST Resource
+      DisksCreateSnapshotResource
+
+    -- * Creating a Request
+    , disksCreateSnapshot
+    , DisksCreateSnapshot
+
+    -- * Request Lenses
+    , dcsProject
+    , dcsDisk
+    , dcsZone
+    , dcsPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.createSnapshot@ method which the
+-- 'DisksCreateSnapshot' request conforms to.
+type DisksCreateSnapshotResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     "createSnapshot" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Snapshot :> Post '[JSON] Operation
+
+-- | Creates a snapshot of this disk.
+--
+-- /See:/ 'disksCreateSnapshot' smart constructor.
+data DisksCreateSnapshot = DisksCreateSnapshot
+    { _dcsProject :: !Text
+    , _dcsDisk    :: !Text
+    , _dcsZone    :: !Text
+    , _dcsPayload :: !Snapshot
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksCreateSnapshot' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcsProject'
+--
+-- * 'dcsDisk'
+--
+-- * 'dcsZone'
+--
+-- * 'dcsPayload'
+disksCreateSnapshot
+    :: Text -- ^ 'dcsProject'
+    -> Text -- ^ 'dcsDisk'
+    -> Text -- ^ 'dcsZone'
+    -> Snapshot -- ^ 'dcsPayload'
+    -> DisksCreateSnapshot
+disksCreateSnapshot pDcsProject_ pDcsDisk_ pDcsZone_ pDcsPayload_ =
+    DisksCreateSnapshot
+    { _dcsProject = pDcsProject_
+    , _dcsDisk = pDcsDisk_
+    , _dcsZone = pDcsZone_
+    , _dcsPayload = pDcsPayload_
+    }
+
+-- | Project ID for this request.
+dcsProject :: Lens' DisksCreateSnapshot Text
+dcsProject
+  = lens _dcsProject (\ s a -> s{_dcsProject = a})
+
+-- | Name of the persistent disk to snapshot.
+dcsDisk :: Lens' DisksCreateSnapshot Text
+dcsDisk = lens _dcsDisk (\ s a -> s{_dcsDisk = a})
+
+-- | The name of the zone for this request.
+dcsZone :: Lens' DisksCreateSnapshot Text
+dcsZone = lens _dcsZone (\ s a -> s{_dcsZone = a})
+
+-- | Multipart request metadata.
+dcsPayload :: Lens' DisksCreateSnapshot Snapshot
+dcsPayload
+  = lens _dcsPayload (\ s a -> s{_dcsPayload = a})
+
+instance GoogleRequest DisksCreateSnapshot where
+        type Rs DisksCreateSnapshot = Operation
+        requestClient DisksCreateSnapshot{..}
+          = go _dcsProject _dcsZone _dcsDisk (Just AltJSON)
+              _dcsPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy DisksCreateSnapshotResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/Delete.hs b/gen/Network/Google/Resource/Compute/Disks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/Delete.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.Disks.Delete
+-- Copyright   : (c) 2015 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 the specified persistent disk. Deleting a disk removes its data
+-- permanently and is irreversible. However, deleting a disk does not
+-- delete any snapshots previously made from the disk. You must separately
+-- delete snapshots.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.delete@.
+module Network.Google.Resource.Compute.Disks.Delete
+    (
+    -- * REST Resource
+      DisksDeleteResource
+
+    -- * Creating a Request
+    , disksDelete
+    , DisksDelete
+
+    -- * Request Lenses
+    , ddProject
+    , ddDisk
+    , ddZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.delete@ method which the
+-- 'DisksDelete' request conforms to.
+type DisksDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified persistent disk. Deleting a disk removes its data
+-- permanently and is irreversible. However, deleting a disk does not
+-- delete any snapshots previously made from the disk. You must separately
+-- delete snapshots.
+--
+-- /See:/ 'disksDelete' smart constructor.
+data DisksDelete = DisksDelete
+    { _ddProject :: !Text
+    , _ddDisk    :: !Text
+    , _ddZone    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddProject'
+--
+-- * 'ddDisk'
+--
+-- * 'ddZone'
+disksDelete
+    :: Text -- ^ 'ddProject'
+    -> Text -- ^ 'ddDisk'
+    -> Text -- ^ 'ddZone'
+    -> DisksDelete
+disksDelete pDdProject_ pDdDisk_ pDdZone_ =
+    DisksDelete
+    { _ddProject = pDdProject_
+    , _ddDisk = pDdDisk_
+    , _ddZone = pDdZone_
+    }
+
+-- | Project ID for this request.
+ddProject :: Lens' DisksDelete Text
+ddProject
+  = lens _ddProject (\ s a -> s{_ddProject = a})
+
+-- | Name of the persistent disk to delete.
+ddDisk :: Lens' DisksDelete Text
+ddDisk = lens _ddDisk (\ s a -> s{_ddDisk = a})
+
+-- | The name of the zone for this request.
+ddZone :: Lens' DisksDelete Text
+ddZone = lens _ddZone (\ s a -> s{_ddZone = a})
+
+instance GoogleRequest DisksDelete where
+        type Rs DisksDelete = Operation
+        requestClient DisksDelete{..}
+          = go _ddProject _ddZone _ddDisk (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DisksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/Get.hs b/gen/Network/Google/Resource/Compute/Disks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/Get.hs
@@ -0,0 +1,107 @@
+{-# 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.Compute.Disks.Get
+-- Copyright   : (c) 2015 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 a specified persistent disk.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.get@.
+module Network.Google.Resource.Compute.Disks.Get
+    (
+    -- * REST Resource
+      DisksGetResource
+
+    -- * Creating a Request
+    , disksGet
+    , DisksGet
+
+    -- * Request Lenses
+    , dgProject
+    , dgDisk
+    , dgZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.get@ method which the
+-- 'DisksGet' request conforms to.
+type DisksGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   Capture "disk" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Disk
+
+-- | Returns a specified persistent disk.
+--
+-- /See:/ 'disksGet' smart constructor.
+data DisksGet = DisksGet
+    { _dgProject :: !Text
+    , _dgDisk    :: !Text
+    , _dgZone    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dgProject'
+--
+-- * 'dgDisk'
+--
+-- * 'dgZone'
+disksGet
+    :: Text -- ^ 'dgProject'
+    -> Text -- ^ 'dgDisk'
+    -> Text -- ^ 'dgZone'
+    -> DisksGet
+disksGet pDgProject_ pDgDisk_ pDgZone_ =
+    DisksGet
+    { _dgProject = pDgProject_
+    , _dgDisk = pDgDisk_
+    , _dgZone = pDgZone_
+    }
+
+-- | Project ID for this request.
+dgProject :: Lens' DisksGet Text
+dgProject
+  = lens _dgProject (\ s a -> s{_dgProject = a})
+
+-- | Name of the persistent disk to return.
+dgDisk :: Lens' DisksGet Text
+dgDisk = lens _dgDisk (\ s a -> s{_dgDisk = a})
+
+-- | The name of the zone for this request.
+dgZone :: Lens' DisksGet Text
+dgZone = lens _dgZone (\ s a -> s{_dgZone = a})
+
+instance GoogleRequest DisksGet where
+        type Rs DisksGet = Disk
+        requestClient DisksGet{..}
+          = go _dgProject _dgZone _dgDisk (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DisksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/Insert.hs b/gen/Network/Google/Resource/Compute/Disks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/Insert.hs
@@ -0,0 +1,123 @@
+{-# 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.Compute.Disks.Insert
+-- Copyright   : (c) 2015 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 persistent disk in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.insert@.
+module Network.Google.Resource.Compute.Disks.Insert
+    (
+    -- * REST Resource
+      DisksInsertResource
+
+    -- * Creating a Request
+    , disksInsert
+    , DisksInsert
+
+    -- * Request Lenses
+    , diSourceImage
+    , diProject
+    , diZone
+    , diPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.insert@ method which the
+-- 'DisksInsert' request conforms to.
+type DisksInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   QueryParam "sourceImage" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Disk :> Post '[JSON] Operation
+
+-- | Creates a persistent disk in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'disksInsert' smart constructor.
+data DisksInsert = DisksInsert
+    { _diSourceImage :: !(Maybe Text)
+    , _diProject     :: !Text
+    , _diZone        :: !Text
+    , _diPayload     :: !Disk
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diSourceImage'
+--
+-- * 'diProject'
+--
+-- * 'diZone'
+--
+-- * 'diPayload'
+disksInsert
+    :: Text -- ^ 'diProject'
+    -> Text -- ^ 'diZone'
+    -> Disk -- ^ 'diPayload'
+    -> DisksInsert
+disksInsert pDiProject_ pDiZone_ pDiPayload_ =
+    DisksInsert
+    { _diSourceImage = Nothing
+    , _diProject = pDiProject_
+    , _diZone = pDiZone_
+    , _diPayload = pDiPayload_
+    }
+
+-- | Optional. Source image to restore onto a disk.
+diSourceImage :: Lens' DisksInsert (Maybe Text)
+diSourceImage
+  = lens _diSourceImage
+      (\ s a -> s{_diSourceImage = a})
+
+-- | Project ID for this request.
+diProject :: Lens' DisksInsert Text
+diProject
+  = lens _diProject (\ s a -> s{_diProject = a})
+
+-- | The name of the zone for this request.
+diZone :: Lens' DisksInsert Text
+diZone = lens _diZone (\ s a -> s{_diZone = a})
+
+-- | Multipart request metadata.
+diPayload :: Lens' DisksInsert Disk
+diPayload
+  = lens _diPayload (\ s a -> s{_diPayload = a})
+
+instance GoogleRequest DisksInsert where
+        type Rs DisksInsert = Operation
+        requestClient DisksInsert{..}
+          = go _diProject _diZone _diSourceImage (Just AltJSON)
+              _diPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DisksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Disks/List.hs b/gen/Network/Google/Resource/Compute/Disks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Disks/List.hs
@@ -0,0 +1,145 @@
+{-# 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.Compute.Disks.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of persistent disks contained within the specified
+-- zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.disks.list@.
+module Network.Google.Resource.Compute.Disks.List
+    (
+    -- * REST Resource
+      DisksListResource
+
+    -- * Creating a Request
+    , disksList
+    , DisksList
+
+    -- * Request Lenses
+    , dlProject
+    , dlZone
+    , dlFilter
+    , dlPageToken
+    , dlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.disks.list@ method which the
+-- 'DisksList' request conforms to.
+type DisksListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "disks" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] DiskList
+
+-- | Retrieves the list of persistent disks contained within the specified
+-- zone.
+--
+-- /See:/ 'disksList' smart constructor.
+data DisksList = DisksList
+    { _dlProject    :: !Text
+    , _dlZone       :: !Text
+    , _dlFilter     :: !(Maybe Text)
+    , _dlPageToken  :: !(Maybe Text)
+    , _dlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlProject'
+--
+-- * 'dlZone'
+--
+-- * 'dlFilter'
+--
+-- * 'dlPageToken'
+--
+-- * 'dlMaxResults'
+disksList
+    :: Text -- ^ 'dlProject'
+    -> Text -- ^ 'dlZone'
+    -> DisksList
+disksList pDlProject_ pDlZone_ =
+    DisksList
+    { _dlProject = pDlProject_
+    , _dlZone = pDlZone_
+    , _dlFilter = Nothing
+    , _dlPageToken = Nothing
+    , _dlMaxResults = 500
+    }
+
+-- | Project ID for this request.
+dlProject :: Lens' DisksList Text
+dlProject
+  = lens _dlProject (\ s a -> s{_dlProject = a})
+
+-- | The name of the zone for this request.
+dlZone :: Lens' DisksList Text
+dlZone = lens _dlZone (\ s a -> s{_dlZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+dlFilter :: Lens' DisksList (Maybe Text)
+dlFilter = lens _dlFilter (\ s a -> s{_dlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+dlPageToken :: Lens' DisksList (Maybe Text)
+dlPageToken
+  = lens _dlPageToken (\ s a -> s{_dlPageToken = a})
+
+-- | Maximum count of results to be returned.
+dlMaxResults :: Lens' DisksList Word32
+dlMaxResults
+  = lens _dlMaxResults (\ s a -> s{_dlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest DisksList where
+        type Rs DisksList = DiskList
+        requestClient DisksList{..}
+          = go _dlProject _dlZone _dlFilter _dlPageToken
+              (Just _dlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy DisksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs b/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Delete.hs
@@ -0,0 +1,98 @@
+{-# 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.Compute.Firewalls.Delete
+-- Copyright   : (c) 2015 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 the specified firewall resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.delete@.
+module Network.Google.Resource.Compute.Firewalls.Delete
+    (
+    -- * REST Resource
+      FirewallsDeleteResource
+
+    -- * Creating a Request
+    , firewallsDelete
+    , FirewallsDelete
+
+    -- * Request Lenses
+    , fdProject
+    , fdFirewall
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.firewalls.delete@ method which the
+-- 'FirewallsDelete' request conforms to.
+type FirewallsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "firewalls" :>
+                 Capture "firewall" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified firewall resource.
+--
+-- /See:/ 'firewallsDelete' smart constructor.
+data FirewallsDelete = FirewallsDelete
+    { _fdProject  :: !Text
+    , _fdFirewall :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fdProject'
+--
+-- * 'fdFirewall'
+firewallsDelete
+    :: Text -- ^ 'fdProject'
+    -> Text -- ^ 'fdFirewall'
+    -> FirewallsDelete
+firewallsDelete pFdProject_ pFdFirewall_ =
+    FirewallsDelete
+    { _fdProject = pFdProject_
+    , _fdFirewall = pFdFirewall_
+    }
+
+-- | Project ID for this request.
+fdProject :: Lens' FirewallsDelete Text
+fdProject
+  = lens _fdProject (\ s a -> s{_fdProject = a})
+
+-- | Name of the firewall resource to delete.
+fdFirewall :: Lens' FirewallsDelete Text
+fdFirewall
+  = lens _fdFirewall (\ s a -> s{_fdFirewall = a})
+
+instance GoogleRequest FirewallsDelete where
+        type Rs FirewallsDelete = Operation
+        requestClient FirewallsDelete{..}
+          = go _fdProject _fdFirewall (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FirewallsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Get.hs b/gen/Network/Google/Resource/Compute/Firewalls/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Get.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.Firewalls.Get
+-- Copyright   : (c) 2015 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 the specified firewall resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.get@.
+module Network.Google.Resource.Compute.Firewalls.Get
+    (
+    -- * REST Resource
+      FirewallsGetResource
+
+    -- * Creating a Request
+    , firewallsGet
+    , FirewallsGet
+
+    -- * Request Lenses
+    , fgProject
+    , fgFirewall
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.firewalls.get@ method which the
+-- 'FirewallsGet' request conforms to.
+type FirewallsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "firewalls" :>
+                 Capture "firewall" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Firewall
+
+-- | Returns the specified firewall resource.
+--
+-- /See:/ 'firewallsGet' smart constructor.
+data FirewallsGet = FirewallsGet
+    { _fgProject  :: !Text
+    , _fgFirewall :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fgProject'
+--
+-- * 'fgFirewall'
+firewallsGet
+    :: Text -- ^ 'fgProject'
+    -> Text -- ^ 'fgFirewall'
+    -> FirewallsGet
+firewallsGet pFgProject_ pFgFirewall_ =
+    FirewallsGet
+    { _fgProject = pFgProject_
+    , _fgFirewall = pFgFirewall_
+    }
+
+-- | Project ID for this request.
+fgProject :: Lens' FirewallsGet Text
+fgProject
+  = lens _fgProject (\ s a -> s{_fgProject = a})
+
+-- | Name of the firewall resource to return.
+fgFirewall :: Lens' FirewallsGet Text
+fgFirewall
+  = lens _fgFirewall (\ s a -> s{_fgFirewall = a})
+
+instance GoogleRequest FirewallsGet where
+        type Rs FirewallsGet = Firewall
+        requestClient FirewallsGet{..}
+          = go _fgProject _fgFirewall (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy FirewallsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs b/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Insert.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.Firewalls.Insert
+-- Copyright   : (c) 2015 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 firewall resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.insert@.
+module Network.Google.Resource.Compute.Firewalls.Insert
+    (
+    -- * REST Resource
+      FirewallsInsertResource
+
+    -- * Creating a Request
+    , firewallsInsert
+    , FirewallsInsert
+
+    -- * Request Lenses
+    , fiProject
+    , fiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.firewalls.insert@ method which the
+-- 'FirewallsInsert' request conforms to.
+type FirewallsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "firewalls" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Firewall :> Post '[JSON] Operation
+
+-- | Creates a firewall resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'firewallsInsert' smart constructor.
+data FirewallsInsert = FirewallsInsert
+    { _fiProject :: !Text
+    , _fiPayload :: !Firewall
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fiProject'
+--
+-- * 'fiPayload'
+firewallsInsert
+    :: Text -- ^ 'fiProject'
+    -> Firewall -- ^ 'fiPayload'
+    -> FirewallsInsert
+firewallsInsert pFiProject_ pFiPayload_ =
+    FirewallsInsert
+    { _fiProject = pFiProject_
+    , _fiPayload = pFiPayload_
+    }
+
+-- | Project ID for this request.
+fiProject :: Lens' FirewallsInsert Text
+fiProject
+  = lens _fiProject (\ s a -> s{_fiProject = a})
+
+-- | Multipart request metadata.
+fiPayload :: Lens' FirewallsInsert Firewall
+fiPayload
+  = lens _fiPayload (\ s a -> s{_fiPayload = a})
+
+instance GoogleRequest FirewallsInsert where
+        type Rs FirewallsInsert = Operation
+        requestClient FirewallsInsert{..}
+          = go _fiProject (Just AltJSON) _fiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FirewallsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/List.hs b/gen/Network/Google/Resource/Compute/Firewalls/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Firewalls/List.hs
@@ -0,0 +1,134 @@
+{-# 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.Compute.Firewalls.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of firewall resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.list@.
+module Network.Google.Resource.Compute.Firewalls.List
+    (
+    -- * REST Resource
+      FirewallsListResource
+
+    -- * Creating a Request
+    , firewallsList
+    , FirewallsList
+
+    -- * Request Lenses
+    , flProject
+    , flFilter
+    , flPageToken
+    , flMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.firewalls.list@ method which the
+-- 'FirewallsList' request conforms to.
+type FirewallsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "firewalls" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] FirewallList
+
+-- | Retrieves the list of firewall resources available to the specified
+-- project.
+--
+-- /See:/ 'firewallsList' smart constructor.
+data FirewallsList = FirewallsList
+    { _flProject    :: !Text
+    , _flFilter     :: !(Maybe Text)
+    , _flPageToken  :: !(Maybe Text)
+    , _flMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flProject'
+--
+-- * 'flFilter'
+--
+-- * 'flPageToken'
+--
+-- * 'flMaxResults'
+firewallsList
+    :: Text -- ^ 'flProject'
+    -> FirewallsList
+firewallsList pFlProject_ =
+    FirewallsList
+    { _flProject = pFlProject_
+    , _flFilter = Nothing
+    , _flPageToken = Nothing
+    , _flMaxResults = 500
+    }
+
+-- | Project ID for this request.
+flProject :: Lens' FirewallsList Text
+flProject
+  = lens _flProject (\ s a -> s{_flProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+flFilter :: Lens' FirewallsList (Maybe Text)
+flFilter = lens _flFilter (\ s a -> s{_flFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+flPageToken :: Lens' FirewallsList (Maybe Text)
+flPageToken
+  = lens _flPageToken (\ s a -> s{_flPageToken = a})
+
+-- | Maximum count of results to be returned.
+flMaxResults :: Lens' FirewallsList Word32
+flMaxResults
+  = lens _flMaxResults (\ s a -> s{_flMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest FirewallsList where
+        type Rs FirewallsList = FirewallList
+        requestClient FirewallsList{..}
+          = go _flProject _flFilter _flPageToken
+              (Just _flMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy FirewallsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs b/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Patch.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.Firewalls.Patch
+-- Copyright   : (c) 2015 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 the specified firewall resource with the data included in the
+-- request. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.patch@.
+module Network.Google.Resource.Compute.Firewalls.Patch
+    (
+    -- * REST Resource
+      FirewallsPatchResource
+
+    -- * Creating a Request
+    , firewallsPatch
+    , FirewallsPatch
+
+    -- * Request Lenses
+    , fpProject
+    , fpPayload
+    , fpFirewall
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.firewalls.patch@ method which the
+-- 'FirewallsPatch' request conforms to.
+type FirewallsPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "firewalls" :>
+                 Capture "firewall" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Firewall :> Patch '[JSON] Operation
+
+-- | Updates the specified firewall resource with the data included in the
+-- request. This method supports patch semantics.
+--
+-- /See:/ 'firewallsPatch' smart constructor.
+data FirewallsPatch = FirewallsPatch
+    { _fpProject  :: !Text
+    , _fpPayload  :: !Firewall
+    , _fpFirewall :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fpProject'
+--
+-- * 'fpPayload'
+--
+-- * 'fpFirewall'
+firewallsPatch
+    :: Text -- ^ 'fpProject'
+    -> Firewall -- ^ 'fpPayload'
+    -> Text -- ^ 'fpFirewall'
+    -> FirewallsPatch
+firewallsPatch pFpProject_ pFpPayload_ pFpFirewall_ =
+    FirewallsPatch
+    { _fpProject = pFpProject_
+    , _fpPayload = pFpPayload_
+    , _fpFirewall = pFpFirewall_
+    }
+
+-- | Project ID for this request.
+fpProject :: Lens' FirewallsPatch Text
+fpProject
+  = lens _fpProject (\ s a -> s{_fpProject = a})
+
+-- | Multipart request metadata.
+fpPayload :: Lens' FirewallsPatch Firewall
+fpPayload
+  = lens _fpPayload (\ s a -> s{_fpPayload = a})
+
+-- | Name of the firewall resource to update.
+fpFirewall :: Lens' FirewallsPatch Text
+fpFirewall
+  = lens _fpFirewall (\ s a -> s{_fpFirewall = a})
+
+instance GoogleRequest FirewallsPatch where
+        type Rs FirewallsPatch = Operation
+        requestClient FirewallsPatch{..}
+          = go _fpProject _fpFirewall (Just AltJSON) _fpPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy FirewallsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Firewalls/Update.hs b/gen/Network/Google/Resource/Compute/Firewalls/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Firewalls/Update.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.Firewalls.Update
+-- Copyright   : (c) 2015 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 the specified firewall resource with the data included in the
+-- request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.firewalls.update@.
+module Network.Google.Resource.Compute.Firewalls.Update
+    (
+    -- * REST Resource
+      FirewallsUpdateResource
+
+    -- * Creating a Request
+    , firewallsUpdate
+    , FirewallsUpdate
+
+    -- * Request Lenses
+    , fuProject
+    , fuPayload
+    , fuFirewall
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.firewalls.update@ method which the
+-- 'FirewallsUpdate' request conforms to.
+type FirewallsUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "firewalls" :>
+                 Capture "firewall" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Firewall :> Put '[JSON] Operation
+
+-- | Updates the specified firewall resource with the data included in the
+-- request.
+--
+-- /See:/ 'firewallsUpdate' smart constructor.
+data FirewallsUpdate = FirewallsUpdate
+    { _fuProject  :: !Text
+    , _fuPayload  :: !Firewall
+    , _fuFirewall :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'FirewallsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fuProject'
+--
+-- * 'fuPayload'
+--
+-- * 'fuFirewall'
+firewallsUpdate
+    :: Text -- ^ 'fuProject'
+    -> Firewall -- ^ 'fuPayload'
+    -> Text -- ^ 'fuFirewall'
+    -> FirewallsUpdate
+firewallsUpdate pFuProject_ pFuPayload_ pFuFirewall_ =
+    FirewallsUpdate
+    { _fuProject = pFuProject_
+    , _fuPayload = pFuPayload_
+    , _fuFirewall = pFuFirewall_
+    }
+
+-- | Project ID for this request.
+fuProject :: Lens' FirewallsUpdate Text
+fuProject
+  = lens _fuProject (\ s a -> s{_fuProject = a})
+
+-- | Multipart request metadata.
+fuPayload :: Lens' FirewallsUpdate Firewall
+fuPayload
+  = lens _fuPayload (\ s a -> s{_fuPayload = a})
+
+-- | Name of the firewall resource to update.
+fuFirewall :: Lens' FirewallsUpdate Text
+fuFirewall
+  = lens _fuFirewall (\ s a -> s{_fuFirewall = a})
+
+instance GoogleRequest FirewallsUpdate where
+        type Rs FirewallsUpdate = Operation
+        requestClient FirewallsUpdate{..}
+          = go _fuProject _fuFirewall (Just AltJSON) _fuPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy FirewallsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/AggregatedList.hs
@@ -0,0 +1,140 @@
+{-# 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.Compute.ForwardingRules.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of forwarding rules grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.forwardingRules.aggregatedList@.
+module Network.Google.Resource.Compute.ForwardingRules.AggregatedList
+    (
+    -- * REST Resource
+      ForwardingRulesAggregatedListResource
+
+    -- * Creating a Request
+    , forwardingRulesAggregatedList
+    , ForwardingRulesAggregatedList
+
+    -- * Request Lenses
+    , fralProject
+    , fralFilter
+    , fralPageToken
+    , fralMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.forwardingRules.aggregatedList@ method which the
+-- 'ForwardingRulesAggregatedList' request conforms to.
+type ForwardingRulesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "forwardingRules" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ForwardingRuleAggregatedList
+
+-- | Retrieves the list of forwarding rules grouped by scope.
+--
+-- /See:/ 'forwardingRulesAggregatedList' smart constructor.
+data ForwardingRulesAggregatedList = ForwardingRulesAggregatedList
+    { _fralProject    :: !Text
+    , _fralFilter     :: !(Maybe Text)
+    , _fralPageToken  :: !(Maybe Text)
+    , _fralMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fralProject'
+--
+-- * 'fralFilter'
+--
+-- * 'fralPageToken'
+--
+-- * 'fralMaxResults'
+forwardingRulesAggregatedList
+    :: Text -- ^ 'fralProject'
+    -> ForwardingRulesAggregatedList
+forwardingRulesAggregatedList pFralProject_ =
+    ForwardingRulesAggregatedList
+    { _fralProject = pFralProject_
+    , _fralFilter = Nothing
+    , _fralPageToken = Nothing
+    , _fralMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+fralProject :: Lens' ForwardingRulesAggregatedList Text
+fralProject
+  = lens _fralProject (\ s a -> s{_fralProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+fralFilter :: Lens' ForwardingRulesAggregatedList (Maybe Text)
+fralFilter
+  = lens _fralFilter (\ s a -> s{_fralFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+fralPageToken :: Lens' ForwardingRulesAggregatedList (Maybe Text)
+fralPageToken
+  = lens _fralPageToken
+      (\ s a -> s{_fralPageToken = a})
+
+-- | Maximum count of results to be returned.
+fralMaxResults :: Lens' ForwardingRulesAggregatedList Word32
+fralMaxResults
+  = lens _fralMaxResults
+      (\ s a -> s{_fralMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ForwardingRulesAggregatedList
+         where
+        type Rs ForwardingRulesAggregatedList =
+             ForwardingRuleAggregatedList
+        requestClient ForwardingRulesAggregatedList{..}
+          = go _fralProject _fralFilter _fralPageToken
+              (Just _fralMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ForwardingRulesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/Delete.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.ForwardingRules.Delete
+-- Copyright   : (c) 2015 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 the specified ForwardingRule resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.forwardingRules.delete@.
+module Network.Google.Resource.Compute.ForwardingRules.Delete
+    (
+    -- * REST Resource
+      ForwardingRulesDeleteResource
+
+    -- * Creating a Request
+    , forwardingRulesDelete
+    , ForwardingRulesDelete
+
+    -- * Request Lenses
+    , frdProject
+    , frdForwardingRule
+    , frdRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.forwardingRules.delete@ method which the
+-- 'ForwardingRulesDelete' request conforms to.
+type ForwardingRulesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "forwardingRules" :>
+                   Capture "forwardingRule" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified ForwardingRule resource.
+--
+-- /See:/ 'forwardingRulesDelete' smart constructor.
+data ForwardingRulesDelete = ForwardingRulesDelete
+    { _frdProject        :: !Text
+    , _frdForwardingRule :: !Text
+    , _frdRegion         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frdProject'
+--
+-- * 'frdForwardingRule'
+--
+-- * 'frdRegion'
+forwardingRulesDelete
+    :: Text -- ^ 'frdProject'
+    -> Text -- ^ 'frdForwardingRule'
+    -> Text -- ^ 'frdRegion'
+    -> ForwardingRulesDelete
+forwardingRulesDelete pFrdProject_ pFrdForwardingRule_ pFrdRegion_ =
+    ForwardingRulesDelete
+    { _frdProject = pFrdProject_
+    , _frdForwardingRule = pFrdForwardingRule_
+    , _frdRegion = pFrdRegion_
+    }
+
+-- | Name of the project scoping this request.
+frdProject :: Lens' ForwardingRulesDelete Text
+frdProject
+  = lens _frdProject (\ s a -> s{_frdProject = a})
+
+-- | Name of the ForwardingRule resource to delete.
+frdForwardingRule :: Lens' ForwardingRulesDelete Text
+frdForwardingRule
+  = lens _frdForwardingRule
+      (\ s a -> s{_frdForwardingRule = a})
+
+-- | Name of the region scoping this request.
+frdRegion :: Lens' ForwardingRulesDelete Text
+frdRegion
+  = lens _frdRegion (\ s a -> s{_frdRegion = a})
+
+instance GoogleRequest ForwardingRulesDelete where
+        type Rs ForwardingRulesDelete = Operation
+        requestClient ForwardingRulesDelete{..}
+          = go _frdProject _frdRegion _frdForwardingRule
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ForwardingRulesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/Get.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.ForwardingRules.Get
+-- Copyright   : (c) 2015 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 the specified ForwardingRule resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.forwardingRules.get@.
+module Network.Google.Resource.Compute.ForwardingRules.Get
+    (
+    -- * REST Resource
+      ForwardingRulesGetResource
+
+    -- * Creating a Request
+    , forwardingRulesGet
+    , ForwardingRulesGet
+
+    -- * Request Lenses
+    , frgProject
+    , frgForwardingRule
+    , frgRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.forwardingRules.get@ method which the
+-- 'ForwardingRulesGet' request conforms to.
+type ForwardingRulesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "forwardingRules" :>
+                   Capture "forwardingRule" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] ForwardingRule
+
+-- | Returns the specified ForwardingRule resource.
+--
+-- /See:/ 'forwardingRulesGet' smart constructor.
+data ForwardingRulesGet = ForwardingRulesGet
+    { _frgProject        :: !Text
+    , _frgForwardingRule :: !Text
+    , _frgRegion         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frgProject'
+--
+-- * 'frgForwardingRule'
+--
+-- * 'frgRegion'
+forwardingRulesGet
+    :: Text -- ^ 'frgProject'
+    -> Text -- ^ 'frgForwardingRule'
+    -> Text -- ^ 'frgRegion'
+    -> ForwardingRulesGet
+forwardingRulesGet pFrgProject_ pFrgForwardingRule_ pFrgRegion_ =
+    ForwardingRulesGet
+    { _frgProject = pFrgProject_
+    , _frgForwardingRule = pFrgForwardingRule_
+    , _frgRegion = pFrgRegion_
+    }
+
+-- | Name of the project scoping this request.
+frgProject :: Lens' ForwardingRulesGet Text
+frgProject
+  = lens _frgProject (\ s a -> s{_frgProject = a})
+
+-- | Name of the ForwardingRule resource to return.
+frgForwardingRule :: Lens' ForwardingRulesGet Text
+frgForwardingRule
+  = lens _frgForwardingRule
+      (\ s a -> s{_frgForwardingRule = a})
+
+-- | Name of the region scoping this request.
+frgRegion :: Lens' ForwardingRulesGet Text
+frgRegion
+  = lens _frgRegion (\ s a -> s{_frgRegion = a})
+
+instance GoogleRequest ForwardingRulesGet where
+        type Rs ForwardingRulesGet = ForwardingRule
+        requestClient ForwardingRulesGet{..}
+          = go _frgProject _frgRegion _frgForwardingRule
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ForwardingRulesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/Insert.hs
@@ -0,0 +1,114 @@
+{-# 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.Compute.ForwardingRules.Insert
+-- Copyright   : (c) 2015 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 ForwardingRule resource in the specified project and region
+-- using the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.forwardingRules.insert@.
+module Network.Google.Resource.Compute.ForwardingRules.Insert
+    (
+    -- * REST Resource
+      ForwardingRulesInsertResource
+
+    -- * Creating a Request
+    , forwardingRulesInsert
+    , ForwardingRulesInsert
+
+    -- * Request Lenses
+    , friProject
+    , friPayload
+    , friRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.forwardingRules.insert@ method which the
+-- 'ForwardingRulesInsert' request conforms to.
+type ForwardingRulesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "forwardingRules" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] ForwardingRule :>
+                       Post '[JSON] Operation
+
+-- | Creates a ForwardingRule resource in the specified project and region
+-- using the data included in the request.
+--
+-- /See:/ 'forwardingRulesInsert' smart constructor.
+data ForwardingRulesInsert = ForwardingRulesInsert
+    { _friProject :: !Text
+    , _friPayload :: !ForwardingRule
+    , _friRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'friProject'
+--
+-- * 'friPayload'
+--
+-- * 'friRegion'
+forwardingRulesInsert
+    :: Text -- ^ 'friProject'
+    -> ForwardingRule -- ^ 'friPayload'
+    -> Text -- ^ 'friRegion'
+    -> ForwardingRulesInsert
+forwardingRulesInsert pFriProject_ pFriPayload_ pFriRegion_ =
+    ForwardingRulesInsert
+    { _friProject = pFriProject_
+    , _friPayload = pFriPayload_
+    , _friRegion = pFriRegion_
+    }
+
+-- | Name of the project scoping this request.
+friProject :: Lens' ForwardingRulesInsert Text
+friProject
+  = lens _friProject (\ s a -> s{_friProject = a})
+
+-- | Multipart request metadata.
+friPayload :: Lens' ForwardingRulesInsert ForwardingRule
+friPayload
+  = lens _friPayload (\ s a -> s{_friPayload = a})
+
+-- | Name of the region scoping this request.
+friRegion :: Lens' ForwardingRulesInsert Text
+friRegion
+  = lens _friRegion (\ s a -> s{_friRegion = a})
+
+instance GoogleRequest ForwardingRulesInsert where
+        type Rs ForwardingRulesInsert = Operation
+        requestClient ForwardingRulesInsert{..}
+          = go _friProject _friRegion (Just AltJSON)
+              _friPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ForwardingRulesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/List.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.ForwardingRules.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of ForwardingRule resources available to the
+-- specified project and region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.forwardingRules.list@.
+module Network.Google.Resource.Compute.ForwardingRules.List
+    (
+    -- * REST Resource
+      ForwardingRulesListResource
+
+    -- * Creating a Request
+    , forwardingRulesList
+    , ForwardingRulesList
+
+    -- * Request Lenses
+    , frlProject
+    , frlFilter
+    , frlRegion
+    , frlPageToken
+    , frlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.forwardingRules.list@ method which the
+-- 'ForwardingRulesList' request conforms to.
+type ForwardingRulesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "forwardingRules" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ForwardingRuleList
+
+-- | Retrieves the list of ForwardingRule resources available to the
+-- specified project and region.
+--
+-- /See:/ 'forwardingRulesList' smart constructor.
+data ForwardingRulesList = ForwardingRulesList
+    { _frlProject    :: !Text
+    , _frlFilter     :: !(Maybe Text)
+    , _frlRegion     :: !Text
+    , _frlPageToken  :: !(Maybe Text)
+    , _frlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frlProject'
+--
+-- * 'frlFilter'
+--
+-- * 'frlRegion'
+--
+-- * 'frlPageToken'
+--
+-- * 'frlMaxResults'
+forwardingRulesList
+    :: Text -- ^ 'frlProject'
+    -> Text -- ^ 'frlRegion'
+    -> ForwardingRulesList
+forwardingRulesList pFrlProject_ pFrlRegion_ =
+    ForwardingRulesList
+    { _frlProject = pFrlProject_
+    , _frlFilter = Nothing
+    , _frlRegion = pFrlRegion_
+    , _frlPageToken = Nothing
+    , _frlMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+frlProject :: Lens' ForwardingRulesList Text
+frlProject
+  = lens _frlProject (\ s a -> s{_frlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+frlFilter :: Lens' ForwardingRulesList (Maybe Text)
+frlFilter
+  = lens _frlFilter (\ s a -> s{_frlFilter = a})
+
+-- | Name of the region scoping this request.
+frlRegion :: Lens' ForwardingRulesList Text
+frlRegion
+  = lens _frlRegion (\ s a -> s{_frlRegion = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+frlPageToken :: Lens' ForwardingRulesList (Maybe Text)
+frlPageToken
+  = lens _frlPageToken (\ s a -> s{_frlPageToken = a})
+
+-- | Maximum count of results to be returned.
+frlMaxResults :: Lens' ForwardingRulesList Word32
+frlMaxResults
+  = lens _frlMaxResults
+      (\ s a -> s{_frlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ForwardingRulesList where
+        type Rs ForwardingRulesList = ForwardingRuleList
+        requestClient ForwardingRulesList{..}
+          = go _frlProject _frlRegion _frlFilter _frlPageToken
+              (Just _frlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ForwardingRulesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs b/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ForwardingRules/SetTarget.hs
@@ -0,0 +1,127 @@
+{-# 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.Compute.ForwardingRules.SetTarget
+-- Copyright   : (c) 2015 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)
+--
+-- Changes target url for forwarding rule.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.forwardingRules.setTarget@.
+module Network.Google.Resource.Compute.ForwardingRules.SetTarget
+    (
+    -- * REST Resource
+      ForwardingRulesSetTargetResource
+
+    -- * Creating a Request
+    , forwardingRulesSetTarget
+    , ForwardingRulesSetTarget
+
+    -- * Request Lenses
+    , frstProject
+    , frstForwardingRule
+    , frstPayload
+    , frstRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.forwardingRules.setTarget@ method which the
+-- 'ForwardingRulesSetTarget' request conforms to.
+type ForwardingRulesSetTargetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "forwardingRules" :>
+                   Capture "forwardingRule" Text :>
+                     "setTarget" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetReference :>
+                           Post '[JSON] Operation
+
+-- | Changes target url for forwarding rule.
+--
+-- /See:/ 'forwardingRulesSetTarget' smart constructor.
+data ForwardingRulesSetTarget = ForwardingRulesSetTarget
+    { _frstProject        :: !Text
+    , _frstForwardingRule :: !Text
+    , _frstPayload        :: !TargetReference
+    , _frstRegion         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ForwardingRulesSetTarget' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'frstProject'
+--
+-- * 'frstForwardingRule'
+--
+-- * 'frstPayload'
+--
+-- * 'frstRegion'
+forwardingRulesSetTarget
+    :: Text -- ^ 'frstProject'
+    -> Text -- ^ 'frstForwardingRule'
+    -> TargetReference -- ^ 'frstPayload'
+    -> Text -- ^ 'frstRegion'
+    -> ForwardingRulesSetTarget
+forwardingRulesSetTarget pFrstProject_ pFrstForwardingRule_ pFrstPayload_ pFrstRegion_ =
+    ForwardingRulesSetTarget
+    { _frstProject = pFrstProject_
+    , _frstForwardingRule = pFrstForwardingRule_
+    , _frstPayload = pFrstPayload_
+    , _frstRegion = pFrstRegion_
+    }
+
+-- | Name of the project scoping this request.
+frstProject :: Lens' ForwardingRulesSetTarget Text
+frstProject
+  = lens _frstProject (\ s a -> s{_frstProject = a})
+
+-- | Name of the ForwardingRule resource in which target is to be set.
+frstForwardingRule :: Lens' ForwardingRulesSetTarget Text
+frstForwardingRule
+  = lens _frstForwardingRule
+      (\ s a -> s{_frstForwardingRule = a})
+
+-- | Multipart request metadata.
+frstPayload :: Lens' ForwardingRulesSetTarget TargetReference
+frstPayload
+  = lens _frstPayload (\ s a -> s{_frstPayload = a})
+
+-- | Name of the region scoping this request.
+frstRegion :: Lens' ForwardingRulesSetTarget Text
+frstRegion
+  = lens _frstRegion (\ s a -> s{_frstRegion = a})
+
+instance GoogleRequest ForwardingRulesSetTarget where
+        type Rs ForwardingRulesSetTarget = Operation
+        requestClient ForwardingRulesSetTarget{..}
+          = go _frstProject _frstRegion _frstForwardingRule
+              (Just AltJSON)
+              _frstPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ForwardingRulesSetTargetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/Delete.hs
@@ -0,0 +1,98 @@
+{-# 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.Compute.GlobalAddresses.Delete
+-- Copyright   : (c) 2015 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 the specified address resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalAddresses.delete@.
+module Network.Google.Resource.Compute.GlobalAddresses.Delete
+    (
+    -- * REST Resource
+      GlobalAddressesDeleteResource
+
+    -- * Creating a Request
+    , globalAddressesDelete
+    , GlobalAddressesDelete
+
+    -- * Request Lenses
+    , gadProject
+    , gadAddress
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalAddresses.delete@ method which the
+-- 'GlobalAddressesDelete' request conforms to.
+type GlobalAddressesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "addresses" :>
+                 Capture "address" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified address resource.
+--
+-- /See:/ 'globalAddressesDelete' smart constructor.
+data GlobalAddressesDelete = GlobalAddressesDelete
+    { _gadProject :: !Text
+    , _gadAddress :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAddressesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gadProject'
+--
+-- * 'gadAddress'
+globalAddressesDelete
+    :: Text -- ^ 'gadProject'
+    -> Text -- ^ 'gadAddress'
+    -> GlobalAddressesDelete
+globalAddressesDelete pGadProject_ pGadAddress_ =
+    GlobalAddressesDelete
+    { _gadProject = pGadProject_
+    , _gadAddress = pGadAddress_
+    }
+
+-- | Project ID for this request.
+gadProject :: Lens' GlobalAddressesDelete Text
+gadProject
+  = lens _gadProject (\ s a -> s{_gadProject = a})
+
+-- | Name of the address resource to delete.
+gadAddress :: Lens' GlobalAddressesDelete Text
+gadAddress
+  = lens _gadAddress (\ s a -> s{_gadAddress = a})
+
+instance GoogleRequest GlobalAddressesDelete where
+        type Rs GlobalAddressesDelete = Operation
+        requestClient GlobalAddressesDelete{..}
+          = go _gadProject _gadAddress (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalAddressesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/Get.hs
@@ -0,0 +1,98 @@
+{-# 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.Compute.GlobalAddresses.Get
+-- Copyright   : (c) 2015 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 the specified address resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalAddresses.get@.
+module Network.Google.Resource.Compute.GlobalAddresses.Get
+    (
+    -- * REST Resource
+      GlobalAddressesGetResource
+
+    -- * Creating a Request
+    , globalAddressesGet
+    , GlobalAddressesGet
+
+    -- * Request Lenses
+    , gagProject
+    , gagAddress
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalAddresses.get@ method which the
+-- 'GlobalAddressesGet' request conforms to.
+type GlobalAddressesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "addresses" :>
+                 Capture "address" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Address
+
+-- | Returns the specified address resource.
+--
+-- /See:/ 'globalAddressesGet' smart constructor.
+data GlobalAddressesGet = GlobalAddressesGet
+    { _gagProject :: !Text
+    , _gagAddress :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAddressesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gagProject'
+--
+-- * 'gagAddress'
+globalAddressesGet
+    :: Text -- ^ 'gagProject'
+    -> Text -- ^ 'gagAddress'
+    -> GlobalAddressesGet
+globalAddressesGet pGagProject_ pGagAddress_ =
+    GlobalAddressesGet
+    { _gagProject = pGagProject_
+    , _gagAddress = pGagAddress_
+    }
+
+-- | Project ID for this request.
+gagProject :: Lens' GlobalAddressesGet Text
+gagProject
+  = lens _gagProject (\ s a -> s{_gagProject = a})
+
+-- | Name of the address resource to return.
+gagAddress :: Lens' GlobalAddressesGet Text
+gagAddress
+  = lens _gagAddress (\ s a -> s{_gagAddress = a})
+
+instance GoogleRequest GlobalAddressesGet where
+        type Rs GlobalAddressesGet = Address
+        requestClient GlobalAddressesGet{..}
+          = go _gagProject _gagAddress (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalAddressesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/Insert.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.GlobalAddresses.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an address resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalAddresses.insert@.
+module Network.Google.Resource.Compute.GlobalAddresses.Insert
+    (
+    -- * REST Resource
+      GlobalAddressesInsertResource
+
+    -- * Creating a Request
+    , globalAddressesInsert
+    , GlobalAddressesInsert
+
+    -- * Request Lenses
+    , gaiProject
+    , gaiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalAddresses.insert@ method which the
+-- 'GlobalAddressesInsert' request conforms to.
+type GlobalAddressesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "addresses" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Address :> Post '[JSON] Operation
+
+-- | Creates an address resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'globalAddressesInsert' smart constructor.
+data GlobalAddressesInsert = GlobalAddressesInsert
+    { _gaiProject :: !Text
+    , _gaiPayload :: !Address
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAddressesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gaiProject'
+--
+-- * 'gaiPayload'
+globalAddressesInsert
+    :: Text -- ^ 'gaiProject'
+    -> Address -- ^ 'gaiPayload'
+    -> GlobalAddressesInsert
+globalAddressesInsert pGaiProject_ pGaiPayload_ =
+    GlobalAddressesInsert
+    { _gaiProject = pGaiProject_
+    , _gaiPayload = pGaiPayload_
+    }
+
+-- | Project ID for this request.
+gaiProject :: Lens' GlobalAddressesInsert Text
+gaiProject
+  = lens _gaiProject (\ s a -> s{_gaiProject = a})
+
+-- | Multipart request metadata.
+gaiPayload :: Lens' GlobalAddressesInsert Address
+gaiPayload
+  = lens _gaiPayload (\ s a -> s{_gaiPayload = a})
+
+instance GoogleRequest GlobalAddressesInsert where
+        type Rs GlobalAddressesInsert = Operation
+        requestClient GlobalAddressesInsert{..}
+          = go _gaiProject (Just AltJSON) _gaiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalAddressesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs b/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalAddresses/List.hs
@@ -0,0 +1,135 @@
+{-# 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.Compute.GlobalAddresses.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of global address resources.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalAddresses.list@.
+module Network.Google.Resource.Compute.GlobalAddresses.List
+    (
+    -- * REST Resource
+      GlobalAddressesListResource
+
+    -- * Creating a Request
+    , globalAddressesList
+    , GlobalAddressesList
+
+    -- * Request Lenses
+    , galProject
+    , galFilter
+    , galPageToken
+    , galMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalAddresses.list@ method which the
+-- 'GlobalAddressesList' request conforms to.
+type GlobalAddressesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "addresses" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] AddressList
+
+-- | Retrieves the list of global address resources.
+--
+-- /See:/ 'globalAddressesList' smart constructor.
+data GlobalAddressesList = GlobalAddressesList
+    { _galProject    :: !Text
+    , _galFilter     :: !(Maybe Text)
+    , _galPageToken  :: !(Maybe Text)
+    , _galMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalAddressesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'galProject'
+--
+-- * 'galFilter'
+--
+-- * 'galPageToken'
+--
+-- * 'galMaxResults'
+globalAddressesList
+    :: Text -- ^ 'galProject'
+    -> GlobalAddressesList
+globalAddressesList pGalProject_ =
+    GlobalAddressesList
+    { _galProject = pGalProject_
+    , _galFilter = Nothing
+    , _galPageToken = Nothing
+    , _galMaxResults = 500
+    }
+
+-- | Project ID for this request.
+galProject :: Lens' GlobalAddressesList Text
+galProject
+  = lens _galProject (\ s a -> s{_galProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+galFilter :: Lens' GlobalAddressesList (Maybe Text)
+galFilter
+  = lens _galFilter (\ s a -> s{_galFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+galPageToken :: Lens' GlobalAddressesList (Maybe Text)
+galPageToken
+  = lens _galPageToken (\ s a -> s{_galPageToken = a})
+
+-- | Maximum count of results to be returned.
+galMaxResults :: Lens' GlobalAddressesList Word32
+galMaxResults
+  = lens _galMaxResults
+      (\ s a -> s{_galMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest GlobalAddressesList where
+        type Rs GlobalAddressesList = AddressList
+        requestClient GlobalAddressesList{..}
+          = go _galProject _galFilter _galPageToken
+              (Just _galMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalAddressesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Delete.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.GlobalForwardingRules.Delete
+-- Copyright   : (c) 2015 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 the specified ForwardingRule resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.delete@.
+module Network.Google.Resource.Compute.GlobalForwardingRules.Delete
+    (
+    -- * REST Resource
+      GlobalForwardingRulesDeleteResource
+
+    -- * Creating a Request
+    , globalForwardingRulesDelete
+    , GlobalForwardingRulesDelete
+
+    -- * Request Lenses
+    , gfrdProject
+    , gfrdForwardingRule
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalForwardingRules.delete@ method which the
+-- 'GlobalForwardingRulesDelete' request conforms to.
+type GlobalForwardingRulesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "forwardingRules" :>
+                 Capture "forwardingRule" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified ForwardingRule resource.
+--
+-- /See:/ 'globalForwardingRulesDelete' smart constructor.
+data GlobalForwardingRulesDelete = GlobalForwardingRulesDelete
+    { _gfrdProject        :: !Text
+    , _gfrdForwardingRule :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalForwardingRulesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfrdProject'
+--
+-- * 'gfrdForwardingRule'
+globalForwardingRulesDelete
+    :: Text -- ^ 'gfrdProject'
+    -> Text -- ^ 'gfrdForwardingRule'
+    -> GlobalForwardingRulesDelete
+globalForwardingRulesDelete pGfrdProject_ pGfrdForwardingRule_ =
+    GlobalForwardingRulesDelete
+    { _gfrdProject = pGfrdProject_
+    , _gfrdForwardingRule = pGfrdForwardingRule_
+    }
+
+-- | Name of the project scoping this request.
+gfrdProject :: Lens' GlobalForwardingRulesDelete Text
+gfrdProject
+  = lens _gfrdProject (\ s a -> s{_gfrdProject = a})
+
+-- | Name of the ForwardingRule resource to delete.
+gfrdForwardingRule :: Lens' GlobalForwardingRulesDelete Text
+gfrdForwardingRule
+  = lens _gfrdForwardingRule
+      (\ s a -> s{_gfrdForwardingRule = a})
+
+instance GoogleRequest GlobalForwardingRulesDelete
+         where
+        type Rs GlobalForwardingRulesDelete = Operation
+        requestClient GlobalForwardingRulesDelete{..}
+          = go _gfrdProject _gfrdForwardingRule (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalForwardingRulesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Get.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.GlobalForwardingRules.Get
+-- Copyright   : (c) 2015 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 the specified ForwardingRule resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.get@.
+module Network.Google.Resource.Compute.GlobalForwardingRules.Get
+    (
+    -- * REST Resource
+      GlobalForwardingRulesGetResource
+
+    -- * Creating a Request
+    , globalForwardingRulesGet
+    , GlobalForwardingRulesGet
+
+    -- * Request Lenses
+    , gfrgProject
+    , gfrgForwardingRule
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalForwardingRules.get@ method which the
+-- 'GlobalForwardingRulesGet' request conforms to.
+type GlobalForwardingRulesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "forwardingRules" :>
+                 Capture "forwardingRule" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] ForwardingRule
+
+-- | Returns the specified ForwardingRule resource.
+--
+-- /See:/ 'globalForwardingRulesGet' smart constructor.
+data GlobalForwardingRulesGet = GlobalForwardingRulesGet
+    { _gfrgProject        :: !Text
+    , _gfrgForwardingRule :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalForwardingRulesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfrgProject'
+--
+-- * 'gfrgForwardingRule'
+globalForwardingRulesGet
+    :: Text -- ^ 'gfrgProject'
+    -> Text -- ^ 'gfrgForwardingRule'
+    -> GlobalForwardingRulesGet
+globalForwardingRulesGet pGfrgProject_ pGfrgForwardingRule_ =
+    GlobalForwardingRulesGet
+    { _gfrgProject = pGfrgProject_
+    , _gfrgForwardingRule = pGfrgForwardingRule_
+    }
+
+-- | Name of the project scoping this request.
+gfrgProject :: Lens' GlobalForwardingRulesGet Text
+gfrgProject
+  = lens _gfrgProject (\ s a -> s{_gfrgProject = a})
+
+-- | Name of the ForwardingRule resource to return.
+gfrgForwardingRule :: Lens' GlobalForwardingRulesGet Text
+gfrgForwardingRule
+  = lens _gfrgForwardingRule
+      (\ s a -> s{_gfrgForwardingRule = a})
+
+instance GoogleRequest GlobalForwardingRulesGet where
+        type Rs GlobalForwardingRulesGet = ForwardingRule
+        requestClient GlobalForwardingRulesGet{..}
+          = go _gfrgProject _gfrgForwardingRule (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalForwardingRulesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/Insert.hs
@@ -0,0 +1,102 @@
+{-# 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.Compute.GlobalForwardingRules.Insert
+-- Copyright   : (c) 2015 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 ForwardingRule resource in the specified project and region
+-- using the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.insert@.
+module Network.Google.Resource.Compute.GlobalForwardingRules.Insert
+    (
+    -- * REST Resource
+      GlobalForwardingRulesInsertResource
+
+    -- * Creating a Request
+    , globalForwardingRulesInsert
+    , GlobalForwardingRulesInsert
+
+    -- * Request Lenses
+    , gfriProject
+    , gfriPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalForwardingRules.insert@ method which the
+-- 'GlobalForwardingRulesInsert' request conforms to.
+type GlobalForwardingRulesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "forwardingRules" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] ForwardingRule :>
+                     Post '[JSON] Operation
+
+-- | Creates a ForwardingRule resource in the specified project and region
+-- using the data included in the request.
+--
+-- /See:/ 'globalForwardingRulesInsert' smart constructor.
+data GlobalForwardingRulesInsert = GlobalForwardingRulesInsert
+    { _gfriProject :: !Text
+    , _gfriPayload :: !ForwardingRule
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalForwardingRulesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfriProject'
+--
+-- * 'gfriPayload'
+globalForwardingRulesInsert
+    :: Text -- ^ 'gfriProject'
+    -> ForwardingRule -- ^ 'gfriPayload'
+    -> GlobalForwardingRulesInsert
+globalForwardingRulesInsert pGfriProject_ pGfriPayload_ =
+    GlobalForwardingRulesInsert
+    { _gfriProject = pGfriProject_
+    , _gfriPayload = pGfriPayload_
+    }
+
+-- | Name of the project scoping this request.
+gfriProject :: Lens' GlobalForwardingRulesInsert Text
+gfriProject
+  = lens _gfriProject (\ s a -> s{_gfriProject = a})
+
+-- | Multipart request metadata.
+gfriPayload :: Lens' GlobalForwardingRulesInsert ForwardingRule
+gfriPayload
+  = lens _gfriPayload (\ s a -> s{_gfriPayload = a})
+
+instance GoogleRequest GlobalForwardingRulesInsert
+         where
+        type Rs GlobalForwardingRulesInsert = Operation
+        requestClient GlobalForwardingRulesInsert{..}
+          = go _gfriProject (Just AltJSON) _gfriPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalForwardingRulesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/List.hs
@@ -0,0 +1,141 @@
+{-# 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.Compute.GlobalForwardingRules.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of ForwardingRule resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.list@.
+module Network.Google.Resource.Compute.GlobalForwardingRules.List
+    (
+    -- * REST Resource
+      GlobalForwardingRulesListResource
+
+    -- * Creating a Request
+    , globalForwardingRulesList
+    , GlobalForwardingRulesList
+
+    -- * Request Lenses
+    , gfrlProject
+    , gfrlFilter
+    , gfrlPageToken
+    , gfrlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalForwardingRules.list@ method which the
+-- 'GlobalForwardingRulesList' request conforms to.
+type GlobalForwardingRulesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "forwardingRules" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] ForwardingRuleList
+
+-- | Retrieves the list of ForwardingRule resources available to the
+-- specified project.
+--
+-- /See:/ 'globalForwardingRulesList' smart constructor.
+data GlobalForwardingRulesList = GlobalForwardingRulesList
+    { _gfrlProject    :: !Text
+    , _gfrlFilter     :: !(Maybe Text)
+    , _gfrlPageToken  :: !(Maybe Text)
+    , _gfrlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalForwardingRulesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfrlProject'
+--
+-- * 'gfrlFilter'
+--
+-- * 'gfrlPageToken'
+--
+-- * 'gfrlMaxResults'
+globalForwardingRulesList
+    :: Text -- ^ 'gfrlProject'
+    -> GlobalForwardingRulesList
+globalForwardingRulesList pGfrlProject_ =
+    GlobalForwardingRulesList
+    { _gfrlProject = pGfrlProject_
+    , _gfrlFilter = Nothing
+    , _gfrlPageToken = Nothing
+    , _gfrlMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+gfrlProject :: Lens' GlobalForwardingRulesList Text
+gfrlProject
+  = lens _gfrlProject (\ s a -> s{_gfrlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+gfrlFilter :: Lens' GlobalForwardingRulesList (Maybe Text)
+gfrlFilter
+  = lens _gfrlFilter (\ s a -> s{_gfrlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+gfrlPageToken :: Lens' GlobalForwardingRulesList (Maybe Text)
+gfrlPageToken
+  = lens _gfrlPageToken
+      (\ s a -> s{_gfrlPageToken = a})
+
+-- | Maximum count of results to be returned.
+gfrlMaxResults :: Lens' GlobalForwardingRulesList Word32
+gfrlMaxResults
+  = lens _gfrlMaxResults
+      (\ s a -> s{_gfrlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest GlobalForwardingRulesList
+         where
+        type Rs GlobalForwardingRulesList =
+             ForwardingRuleList
+        requestClient GlobalForwardingRulesList{..}
+          = go _gfrlProject _gfrlFilter _gfrlPageToken
+              (Just _gfrlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalForwardingRulesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalForwardingRules/SetTarget.hs
@@ -0,0 +1,117 @@
+{-# 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.Compute.GlobalForwardingRules.SetTarget
+-- Copyright   : (c) 2015 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)
+--
+-- Changes target url for forwarding rule.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalForwardingRules.setTarget@.
+module Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
+    (
+    -- * REST Resource
+      GlobalForwardingRulesSetTargetResource
+
+    -- * Creating a Request
+    , globalForwardingRulesSetTarget
+    , GlobalForwardingRulesSetTarget
+
+    -- * Request Lenses
+    , gfrstProject
+    , gfrstForwardingRule
+    , gfrstPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalForwardingRules.setTarget@ method which the
+-- 'GlobalForwardingRulesSetTarget' request conforms to.
+type GlobalForwardingRulesSetTargetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "forwardingRules" :>
+                 Capture "forwardingRule" Text :>
+                   "setTarget" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] TargetReference :>
+                         Post '[JSON] Operation
+
+-- | Changes target url for forwarding rule.
+--
+-- /See:/ 'globalForwardingRulesSetTarget' smart constructor.
+data GlobalForwardingRulesSetTarget = GlobalForwardingRulesSetTarget
+    { _gfrstProject        :: !Text
+    , _gfrstForwardingRule :: !Text
+    , _gfrstPayload        :: !TargetReference
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalForwardingRulesSetTarget' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gfrstProject'
+--
+-- * 'gfrstForwardingRule'
+--
+-- * 'gfrstPayload'
+globalForwardingRulesSetTarget
+    :: Text -- ^ 'gfrstProject'
+    -> Text -- ^ 'gfrstForwardingRule'
+    -> TargetReference -- ^ 'gfrstPayload'
+    -> GlobalForwardingRulesSetTarget
+globalForwardingRulesSetTarget pGfrstProject_ pGfrstForwardingRule_ pGfrstPayload_ =
+    GlobalForwardingRulesSetTarget
+    { _gfrstProject = pGfrstProject_
+    , _gfrstForwardingRule = pGfrstForwardingRule_
+    , _gfrstPayload = pGfrstPayload_
+    }
+
+-- | Name of the project scoping this request.
+gfrstProject :: Lens' GlobalForwardingRulesSetTarget Text
+gfrstProject
+  = lens _gfrstProject (\ s a -> s{_gfrstProject = a})
+
+-- | Name of the ForwardingRule resource in which target is to be set.
+gfrstForwardingRule :: Lens' GlobalForwardingRulesSetTarget Text
+gfrstForwardingRule
+  = lens _gfrstForwardingRule
+      (\ s a -> s{_gfrstForwardingRule = a})
+
+-- | Multipart request metadata.
+gfrstPayload :: Lens' GlobalForwardingRulesSetTarget TargetReference
+gfrstPayload
+  = lens _gfrstPayload (\ s a -> s{_gfrstPayload = a})
+
+instance GoogleRequest GlobalForwardingRulesSetTarget
+         where
+        type Rs GlobalForwardingRulesSetTarget = Operation
+        requestClient GlobalForwardingRulesSetTarget{..}
+          = go _gfrstProject _gfrstForwardingRule
+              (Just AltJSON)
+              _gfrstPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy GlobalForwardingRulesSetTargetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/AggregatedList.hs
@@ -0,0 +1,140 @@
+{-# 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.Compute.GlobalOperations.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of all operations grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalOperations.aggregatedList@.
+module Network.Google.Resource.Compute.GlobalOperations.AggregatedList
+    (
+    -- * REST Resource
+      GlobalOperationsAggregatedListResource
+
+    -- * Creating a Request
+    , globalOperationsAggregatedList
+    , GlobalOperationsAggregatedList
+
+    -- * Request Lenses
+    , goalProject
+    , goalFilter
+    , goalPageToken
+    , goalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalOperations.aggregatedList@ method which the
+-- 'GlobalOperationsAggregatedList' request conforms to.
+type GlobalOperationsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "operations" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] OperationAggregatedList
+
+-- | Retrieves the list of all operations grouped by scope.
+--
+-- /See:/ 'globalOperationsAggregatedList' smart constructor.
+data GlobalOperationsAggregatedList = GlobalOperationsAggregatedList
+    { _goalProject    :: !Text
+    , _goalFilter     :: !(Maybe Text)
+    , _goalPageToken  :: !(Maybe Text)
+    , _goalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalOperationsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'goalProject'
+--
+-- * 'goalFilter'
+--
+-- * 'goalPageToken'
+--
+-- * 'goalMaxResults'
+globalOperationsAggregatedList
+    :: Text -- ^ 'goalProject'
+    -> GlobalOperationsAggregatedList
+globalOperationsAggregatedList pGoalProject_ =
+    GlobalOperationsAggregatedList
+    { _goalProject = pGoalProject_
+    , _goalFilter = Nothing
+    , _goalPageToken = Nothing
+    , _goalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+goalProject :: Lens' GlobalOperationsAggregatedList Text
+goalProject
+  = lens _goalProject (\ s a -> s{_goalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+goalFilter :: Lens' GlobalOperationsAggregatedList (Maybe Text)
+goalFilter
+  = lens _goalFilter (\ s a -> s{_goalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+goalPageToken :: Lens' GlobalOperationsAggregatedList (Maybe Text)
+goalPageToken
+  = lens _goalPageToken
+      (\ s a -> s{_goalPageToken = a})
+
+-- | Maximum count of results to be returned.
+goalMaxResults :: Lens' GlobalOperationsAggregatedList Word32
+goalMaxResults
+  = lens _goalMaxResults
+      (\ s a -> s{_goalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest GlobalOperationsAggregatedList
+         where
+        type Rs GlobalOperationsAggregatedList =
+             OperationAggregatedList
+        requestClient GlobalOperationsAggregatedList{..}
+          = go _goalProject _goalFilter _goalPageToken
+              (Just _goalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy GlobalOperationsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/Delete.hs
@@ -0,0 +1,98 @@
+{-# 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.Compute.GlobalOperations.Delete
+-- Copyright   : (c) 2015 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 the specified Operations resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalOperations.delete@.
+module Network.Google.Resource.Compute.GlobalOperations.Delete
+    (
+    -- * REST Resource
+      GlobalOperationsDeleteResource
+
+    -- * Creating a Request
+    , globalOperationsDelete
+    , GlobalOperationsDelete
+
+    -- * Request Lenses
+    , godProject
+    , godOperation
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalOperations.delete@ method which the
+-- 'GlobalOperationsDelete' request conforms to.
+type GlobalOperationsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "operations" :>
+                 Capture "operation" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the specified Operations resource.
+--
+-- /See:/ 'globalOperationsDelete' smart constructor.
+data GlobalOperationsDelete = GlobalOperationsDelete
+    { _godProject   :: !Text
+    , _godOperation :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalOperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'godProject'
+--
+-- * 'godOperation'
+globalOperationsDelete
+    :: Text -- ^ 'godProject'
+    -> Text -- ^ 'godOperation'
+    -> GlobalOperationsDelete
+globalOperationsDelete pGodProject_ pGodOperation_ =
+    GlobalOperationsDelete
+    { _godProject = pGodProject_
+    , _godOperation = pGodOperation_
+    }
+
+-- | Project ID for this request.
+godProject :: Lens' GlobalOperationsDelete Text
+godProject
+  = lens _godProject (\ s a -> s{_godProject = a})
+
+-- | Name of the Operations resource to delete.
+godOperation :: Lens' GlobalOperationsDelete Text
+godOperation
+  = lens _godOperation (\ s a -> s{_godOperation = a})
+
+instance GoogleRequest GlobalOperationsDelete where
+        type Rs GlobalOperationsDelete = ()
+        requestClient GlobalOperationsDelete{..}
+          = go _godProject _godOperation (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/Get.hs
@@ -0,0 +1,98 @@
+{-# 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.Compute.GlobalOperations.Get
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the specified Operations resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalOperations.get@.
+module Network.Google.Resource.Compute.GlobalOperations.Get
+    (
+    -- * REST Resource
+      GlobalOperationsGetResource
+
+    -- * Creating a Request
+    , globalOperationsGet
+    , GlobalOperationsGet
+
+    -- * Request Lenses
+    , gogProject
+    , gogOperation
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalOperations.get@ method which the
+-- 'GlobalOperationsGet' request conforms to.
+type GlobalOperationsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "operations" :>
+                 Capture "operation" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Retrieves the specified Operations resource.
+--
+-- /See:/ 'globalOperationsGet' smart constructor.
+data GlobalOperationsGet = GlobalOperationsGet
+    { _gogProject   :: !Text
+    , _gogOperation :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gogProject'
+--
+-- * 'gogOperation'
+globalOperationsGet
+    :: Text -- ^ 'gogProject'
+    -> Text -- ^ 'gogOperation'
+    -> GlobalOperationsGet
+globalOperationsGet pGogProject_ pGogOperation_ =
+    GlobalOperationsGet
+    { _gogProject = pGogProject_
+    , _gogOperation = pGogOperation_
+    }
+
+-- | Project ID for this request.
+gogProject :: Lens' GlobalOperationsGet Text
+gogProject
+  = lens _gogProject (\ s a -> s{_gogProject = a})
+
+-- | Name of the Operations resource to return.
+gogOperation :: Lens' GlobalOperationsGet Text
+gogOperation
+  = lens _gogOperation (\ s a -> s{_gogOperation = a})
+
+instance GoogleRequest GlobalOperationsGet where
+        type Rs GlobalOperationsGet = Operation
+        requestClient GlobalOperationsGet{..}
+          = go _gogProject _gogOperation (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs b/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/GlobalOperations/List.hs
@@ -0,0 +1,137 @@
+{-# 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.Compute.GlobalOperations.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of Operation resources contained within the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.globalOperations.list@.
+module Network.Google.Resource.Compute.GlobalOperations.List
+    (
+    -- * REST Resource
+      GlobalOperationsListResource
+
+    -- * Creating a Request
+    , globalOperationsList
+    , GlobalOperationsList
+
+    -- * Request Lenses
+    , golProject
+    , golFilter
+    , golPageToken
+    , golMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.globalOperations.list@ method which the
+-- 'GlobalOperationsList' request conforms to.
+type GlobalOperationsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "operations" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] OperationList
+
+-- | Retrieves the list of Operation resources contained within the specified
+-- project.
+--
+-- /See:/ 'globalOperationsList' smart constructor.
+data GlobalOperationsList = GlobalOperationsList
+    { _golProject    :: !Text
+    , _golFilter     :: !(Maybe Text)
+    , _golPageToken  :: !(Maybe Text)
+    , _golMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GlobalOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'golProject'
+--
+-- * 'golFilter'
+--
+-- * 'golPageToken'
+--
+-- * 'golMaxResults'
+globalOperationsList
+    :: Text -- ^ 'golProject'
+    -> GlobalOperationsList
+globalOperationsList pGolProject_ =
+    GlobalOperationsList
+    { _golProject = pGolProject_
+    , _golFilter = Nothing
+    , _golPageToken = Nothing
+    , _golMaxResults = 500
+    }
+
+-- | Project ID for this request.
+golProject :: Lens' GlobalOperationsList Text
+golProject
+  = lens _golProject (\ s a -> s{_golProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+golFilter :: Lens' GlobalOperationsList (Maybe Text)
+golFilter
+  = lens _golFilter (\ s a -> s{_golFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+golPageToken :: Lens' GlobalOperationsList (Maybe Text)
+golPageToken
+  = lens _golPageToken (\ s a -> s{_golPageToken = a})
+
+-- | Maximum count of results to be returned.
+golMaxResults :: Lens' GlobalOperationsList Word32
+golMaxResults
+  = lens _golMaxResults
+      (\ s a -> s{_golMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest GlobalOperationsList where
+        type Rs GlobalOperationsList = OperationList
+        requestClient GlobalOperationsList{..}
+          = go _golProject _golFilter _golPageToken
+              (Just _golMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy GlobalOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Delete.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.HTTPHealthChecks.Delete
+-- Copyright   : (c) 2015 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 the specified HttpHealthCheck resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.delete@.
+module Network.Google.Resource.Compute.HTTPHealthChecks.Delete
+    (
+    -- * REST Resource
+      HTTPHealthChecksDeleteResource
+
+    -- * Creating a Request
+    , hTTPHealthChecksDelete
+    , HTTPHealthChecksDelete
+
+    -- * Request Lenses
+    , httphcdProject
+    , httphcdHTTPHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpHealthChecks.delete@ method which the
+-- 'HTTPHealthChecksDelete' request conforms to.
+type HTTPHealthChecksDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpHealthChecks" :>
+                 Capture "httpHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified HttpHealthCheck resource.
+--
+-- /See:/ 'hTTPHealthChecksDelete' smart constructor.
+data HTTPHealthChecksDelete = HTTPHealthChecksDelete
+    { _httphcdProject         :: !Text
+    , _httphcdHTTPHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthChecksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcdProject'
+--
+-- * 'httphcdHTTPHealthCheck'
+hTTPHealthChecksDelete
+    :: Text -- ^ 'httphcdProject'
+    -> Text -- ^ 'httphcdHTTPHealthCheck'
+    -> HTTPHealthChecksDelete
+hTTPHealthChecksDelete pHttphcdProject_ pHttphcdHTTPHealthCheck_ =
+    HTTPHealthChecksDelete
+    { _httphcdProject = pHttphcdProject_
+    , _httphcdHTTPHealthCheck = pHttphcdHTTPHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+httphcdProject :: Lens' HTTPHealthChecksDelete Text
+httphcdProject
+  = lens _httphcdProject
+      (\ s a -> s{_httphcdProject = a})
+
+-- | Name of the HttpHealthCheck resource to delete.
+httphcdHTTPHealthCheck :: Lens' HTTPHealthChecksDelete Text
+httphcdHTTPHealthCheck
+  = lens _httphcdHTTPHealthCheck
+      (\ s a -> s{_httphcdHTTPHealthCheck = a})
+
+instance GoogleRequest HTTPHealthChecksDelete where
+        type Rs HTTPHealthChecksDelete = Operation
+        requestClient HTTPHealthChecksDelete{..}
+          = go _httphcdProject _httphcdHTTPHealthCheck
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPHealthChecksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Get.hs
@@ -0,0 +1,102 @@
+{-# 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.Compute.HTTPHealthChecks.Get
+-- Copyright   : (c) 2015 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 the specified HttpHealthCheck resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.get@.
+module Network.Google.Resource.Compute.HTTPHealthChecks.Get
+    (
+    -- * REST Resource
+      HTTPHealthChecksGetResource
+
+    -- * Creating a Request
+    , hTTPHealthChecksGet
+    , HTTPHealthChecksGet
+
+    -- * Request Lenses
+    , httphcgProject
+    , httphcgHTTPHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpHealthChecks.get@ method which the
+-- 'HTTPHealthChecksGet' request conforms to.
+type HTTPHealthChecksGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpHealthChecks" :>
+                 Capture "httpHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] HTTPHealthCheck
+
+-- | Returns the specified HttpHealthCheck resource.
+--
+-- /See:/ 'hTTPHealthChecksGet' smart constructor.
+data HTTPHealthChecksGet = HTTPHealthChecksGet
+    { _httphcgProject         :: !Text
+    , _httphcgHTTPHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthChecksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcgProject'
+--
+-- * 'httphcgHTTPHealthCheck'
+hTTPHealthChecksGet
+    :: Text -- ^ 'httphcgProject'
+    -> Text -- ^ 'httphcgHTTPHealthCheck'
+    -> HTTPHealthChecksGet
+hTTPHealthChecksGet pHttphcgProject_ pHttphcgHTTPHealthCheck_ =
+    HTTPHealthChecksGet
+    { _httphcgProject = pHttphcgProject_
+    , _httphcgHTTPHealthCheck = pHttphcgHTTPHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+httphcgProject :: Lens' HTTPHealthChecksGet Text
+httphcgProject
+  = lens _httphcgProject
+      (\ s a -> s{_httphcgProject = a})
+
+-- | Name of the HttpHealthCheck resource to return.
+httphcgHTTPHealthCheck :: Lens' HTTPHealthChecksGet Text
+httphcgHTTPHealthCheck
+  = lens _httphcgHTTPHealthCheck
+      (\ s a -> s{_httphcgHTTPHealthCheck = a})
+
+instance GoogleRequest HTTPHealthChecksGet where
+        type Rs HTTPHealthChecksGet = HTTPHealthCheck
+        requestClient HTTPHealthChecksGet{..}
+          = go _httphcgProject _httphcgHTTPHealthCheck
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPHealthChecksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Insert.hs
@@ -0,0 +1,103 @@
+{-# 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.Compute.HTTPHealthChecks.Insert
+-- Copyright   : (c) 2015 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 HttpHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.insert@.
+module Network.Google.Resource.Compute.HTTPHealthChecks.Insert
+    (
+    -- * REST Resource
+      HTTPHealthChecksInsertResource
+
+    -- * Creating a Request
+    , hTTPHealthChecksInsert
+    , HTTPHealthChecksInsert
+
+    -- * Request Lenses
+    , httphciProject
+    , httphciPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpHealthChecks.insert@ method which the
+-- 'HTTPHealthChecksInsert' request conforms to.
+type HTTPHealthChecksInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpHealthChecks" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] HTTPHealthCheck :>
+                     Post '[JSON] Operation
+
+-- | Creates a HttpHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'hTTPHealthChecksInsert' smart constructor.
+data HTTPHealthChecksInsert = HTTPHealthChecksInsert
+    { _httphciProject :: !Text
+    , _httphciPayload :: !HTTPHealthCheck
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthChecksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphciProject'
+--
+-- * 'httphciPayload'
+hTTPHealthChecksInsert
+    :: Text -- ^ 'httphciProject'
+    -> HTTPHealthCheck -- ^ 'httphciPayload'
+    -> HTTPHealthChecksInsert
+hTTPHealthChecksInsert pHttphciProject_ pHttphciPayload_ =
+    HTTPHealthChecksInsert
+    { _httphciProject = pHttphciProject_
+    , _httphciPayload = pHttphciPayload_
+    }
+
+-- | Name of the project scoping this request.
+httphciProject :: Lens' HTTPHealthChecksInsert Text
+httphciProject
+  = lens _httphciProject
+      (\ s a -> s{_httphciProject = a})
+
+-- | Multipart request metadata.
+httphciPayload :: Lens' HTTPHealthChecksInsert HTTPHealthCheck
+httphciPayload
+  = lens _httphciPayload
+      (\ s a -> s{_httphciPayload = a})
+
+instance GoogleRequest HTTPHealthChecksInsert where
+        type Rs HTTPHealthChecksInsert = Operation
+        requestClient HTTPHealthChecksInsert{..}
+          = go _httphciProject (Just AltJSON) _httphciPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPHealthChecksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/List.hs
@@ -0,0 +1,141 @@
+{-# 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.Compute.HTTPHealthChecks.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of HttpHealthCheck resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.list@.
+module Network.Google.Resource.Compute.HTTPHealthChecks.List
+    (
+    -- * REST Resource
+      HTTPHealthChecksListResource
+
+    -- * Creating a Request
+    , hTTPHealthChecksList
+    , HTTPHealthChecksList
+
+    -- * Request Lenses
+    , httphclProject
+    , httphclFilter
+    , httphclPageToken
+    , httphclMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpHealthChecks.list@ method which the
+-- 'HTTPHealthChecksList' request conforms to.
+type HTTPHealthChecksListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpHealthChecks" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] HTTPHealthCheckList
+
+-- | Retrieves the list of HttpHealthCheck resources available to the
+-- specified project.
+--
+-- /See:/ 'hTTPHealthChecksList' smart constructor.
+data HTTPHealthChecksList = HTTPHealthChecksList
+    { _httphclProject    :: !Text
+    , _httphclFilter     :: !(Maybe Text)
+    , _httphclPageToken  :: !(Maybe Text)
+    , _httphclMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthChecksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphclProject'
+--
+-- * 'httphclFilter'
+--
+-- * 'httphclPageToken'
+--
+-- * 'httphclMaxResults'
+hTTPHealthChecksList
+    :: Text -- ^ 'httphclProject'
+    -> HTTPHealthChecksList
+hTTPHealthChecksList pHttphclProject_ =
+    HTTPHealthChecksList
+    { _httphclProject = pHttphclProject_
+    , _httphclFilter = Nothing
+    , _httphclPageToken = Nothing
+    , _httphclMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+httphclProject :: Lens' HTTPHealthChecksList Text
+httphclProject
+  = lens _httphclProject
+      (\ s a -> s{_httphclProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+httphclFilter :: Lens' HTTPHealthChecksList (Maybe Text)
+httphclFilter
+  = lens _httphclFilter
+      (\ s a -> s{_httphclFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+httphclPageToken :: Lens' HTTPHealthChecksList (Maybe Text)
+httphclPageToken
+  = lens _httphclPageToken
+      (\ s a -> s{_httphclPageToken = a})
+
+-- | Maximum count of results to be returned.
+httphclMaxResults :: Lens' HTTPHealthChecksList Word32
+httphclMaxResults
+  = lens _httphclMaxResults
+      (\ s a -> s{_httphclMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest HTTPHealthChecksList where
+        type Rs HTTPHealthChecksList = HTTPHealthCheckList
+        requestClient HTTPHealthChecksList{..}
+          = go _httphclProject _httphclFilter _httphclPageToken
+              (Just _httphclMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPHealthChecksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Patch.hs
@@ -0,0 +1,118 @@
+{-# 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.Compute.HTTPHealthChecks.Patch
+-- Copyright   : (c) 2015 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 HttpHealthCheck resource in the specified project using the
+-- data included in the request. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.patch@.
+module Network.Google.Resource.Compute.HTTPHealthChecks.Patch
+    (
+    -- * REST Resource
+      HTTPHealthChecksPatchResource
+
+    -- * Creating a Request
+    , hTTPHealthChecksPatch
+    , HTTPHealthChecksPatch
+
+    -- * Request Lenses
+    , httphcpProject
+    , httphcpPayload
+    , httphcpHTTPHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpHealthChecks.patch@ method which the
+-- 'HTTPHealthChecksPatch' request conforms to.
+type HTTPHealthChecksPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpHealthChecks" :>
+                 Capture "httpHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HTTPHealthCheck :>
+                       Patch '[JSON] Operation
+
+-- | Updates a HttpHealthCheck resource in the specified project using the
+-- data included in the request. This method supports patch semantics.
+--
+-- /See:/ 'hTTPHealthChecksPatch' smart constructor.
+data HTTPHealthChecksPatch = HTTPHealthChecksPatch
+    { _httphcpProject         :: !Text
+    , _httphcpPayload         :: !HTTPHealthCheck
+    , _httphcpHTTPHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthChecksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcpProject'
+--
+-- * 'httphcpPayload'
+--
+-- * 'httphcpHTTPHealthCheck'
+hTTPHealthChecksPatch
+    :: Text -- ^ 'httphcpProject'
+    -> HTTPHealthCheck -- ^ 'httphcpPayload'
+    -> Text -- ^ 'httphcpHTTPHealthCheck'
+    -> HTTPHealthChecksPatch
+hTTPHealthChecksPatch pHttphcpProject_ pHttphcpPayload_ pHttphcpHTTPHealthCheck_ =
+    HTTPHealthChecksPatch
+    { _httphcpProject = pHttphcpProject_
+    , _httphcpPayload = pHttphcpPayload_
+    , _httphcpHTTPHealthCheck = pHttphcpHTTPHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+httphcpProject :: Lens' HTTPHealthChecksPatch Text
+httphcpProject
+  = lens _httphcpProject
+      (\ s a -> s{_httphcpProject = a})
+
+-- | Multipart request metadata.
+httphcpPayload :: Lens' HTTPHealthChecksPatch HTTPHealthCheck
+httphcpPayload
+  = lens _httphcpPayload
+      (\ s a -> s{_httphcpPayload = a})
+
+-- | Name of the HttpHealthCheck resource to update.
+httphcpHTTPHealthCheck :: Lens' HTTPHealthChecksPatch Text
+httphcpHTTPHealthCheck
+  = lens _httphcpHTTPHealthCheck
+      (\ s a -> s{_httphcpHTTPHealthCheck = a})
+
+instance GoogleRequest HTTPHealthChecksPatch where
+        type Rs HTTPHealthChecksPatch = Operation
+        requestClient HTTPHealthChecksPatch{..}
+          = go _httphcpProject _httphcpHTTPHealthCheck
+              (Just AltJSON)
+              _httphcpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPHealthChecksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPHealthChecks/Update.hs
@@ -0,0 +1,118 @@
+{-# 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.Compute.HTTPHealthChecks.Update
+-- Copyright   : (c) 2015 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 HttpHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpHealthChecks.update@.
+module Network.Google.Resource.Compute.HTTPHealthChecks.Update
+    (
+    -- * REST Resource
+      HTTPHealthChecksUpdateResource
+
+    -- * Creating a Request
+    , hTTPHealthChecksUpdate
+    , HTTPHealthChecksUpdate
+
+    -- * Request Lenses
+    , httphcuProject
+    , httphcuPayload
+    , httphcuHTTPHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpHealthChecks.update@ method which the
+-- 'HTTPHealthChecksUpdate' request conforms to.
+type HTTPHealthChecksUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpHealthChecks" :>
+                 Capture "httpHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HTTPHealthCheck :>
+                       Put '[JSON] Operation
+
+-- | Updates a HttpHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'hTTPHealthChecksUpdate' smart constructor.
+data HTTPHealthChecksUpdate = HTTPHealthChecksUpdate
+    { _httphcuProject         :: !Text
+    , _httphcuPayload         :: !HTTPHealthCheck
+    , _httphcuHTTPHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPHealthChecksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httphcuProject'
+--
+-- * 'httphcuPayload'
+--
+-- * 'httphcuHTTPHealthCheck'
+hTTPHealthChecksUpdate
+    :: Text -- ^ 'httphcuProject'
+    -> HTTPHealthCheck -- ^ 'httphcuPayload'
+    -> Text -- ^ 'httphcuHTTPHealthCheck'
+    -> HTTPHealthChecksUpdate
+hTTPHealthChecksUpdate pHttphcuProject_ pHttphcuPayload_ pHttphcuHTTPHealthCheck_ =
+    HTTPHealthChecksUpdate
+    { _httphcuProject = pHttphcuProject_
+    , _httphcuPayload = pHttphcuPayload_
+    , _httphcuHTTPHealthCheck = pHttphcuHTTPHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+httphcuProject :: Lens' HTTPHealthChecksUpdate Text
+httphcuProject
+  = lens _httphcuProject
+      (\ s a -> s{_httphcuProject = a})
+
+-- | Multipart request metadata.
+httphcuPayload :: Lens' HTTPHealthChecksUpdate HTTPHealthCheck
+httphcuPayload
+  = lens _httphcuPayload
+      (\ s a -> s{_httphcuPayload = a})
+
+-- | Name of the HttpHealthCheck resource to update.
+httphcuHTTPHealthCheck :: Lens' HTTPHealthChecksUpdate Text
+httphcuHTTPHealthCheck
+  = lens _httphcuHTTPHealthCheck
+      (\ s a -> s{_httphcuHTTPHealthCheck = a})
+
+instance GoogleRequest HTTPHealthChecksUpdate where
+        type Rs HTTPHealthChecksUpdate = Operation
+        requestClient HTTPHealthChecksUpdate{..}
+          = go _httphcuProject _httphcuHTTPHealthCheck
+              (Just AltJSON)
+              _httphcuPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPHealthChecksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Delete.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.HTTPSHealthChecks.Delete
+-- Copyright   : (c) 2015 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 the specified HttpsHealthCheck resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.delete@.
+module Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
+    (
+    -- * REST Resource
+      HTTPSHealthChecksDeleteResource
+
+    -- * Creating a Request
+    , httpsHealthChecksDelete
+    , HTTPSHealthChecksDelete
+
+    -- * Request Lenses
+    , hhcdProject
+    , hhcdHTTPSHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpsHealthChecks.delete@ method which the
+-- 'HTTPSHealthChecksDelete' request conforms to.
+type HTTPSHealthChecksDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpsHealthChecks" :>
+                 Capture "httpsHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified HttpsHealthCheck resource.
+--
+-- /See:/ 'httpsHealthChecksDelete' smart constructor.
+data HTTPSHealthChecksDelete = HTTPSHealthChecksDelete
+    { _hhcdProject          :: !Text
+    , _hhcdHTTPSHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthChecksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhcdProject'
+--
+-- * 'hhcdHTTPSHealthCheck'
+httpsHealthChecksDelete
+    :: Text -- ^ 'hhcdProject'
+    -> Text -- ^ 'hhcdHTTPSHealthCheck'
+    -> HTTPSHealthChecksDelete
+httpsHealthChecksDelete pHhcdProject_ pHhcdHTTPSHealthCheck_ =
+    HTTPSHealthChecksDelete
+    { _hhcdProject = pHhcdProject_
+    , _hhcdHTTPSHealthCheck = pHhcdHTTPSHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+hhcdProject :: Lens' HTTPSHealthChecksDelete Text
+hhcdProject
+  = lens _hhcdProject (\ s a -> s{_hhcdProject = a})
+
+-- | Name of the HttpsHealthCheck resource to delete.
+hhcdHTTPSHealthCheck :: Lens' HTTPSHealthChecksDelete Text
+hhcdHTTPSHealthCheck
+  = lens _hhcdHTTPSHealthCheck
+      (\ s a -> s{_hhcdHTTPSHealthCheck = a})
+
+instance GoogleRequest HTTPSHealthChecksDelete where
+        type Rs HTTPSHealthChecksDelete = Operation
+        requestClient HTTPSHealthChecksDelete{..}
+          = go _hhcdProject _hhcdHTTPSHealthCheck
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPSHealthChecksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Get.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.HTTPSHealthChecks.Get
+-- Copyright   : (c) 2015 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 the specified HttpsHealthCheck resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.get@.
+module Network.Google.Resource.Compute.HTTPSHealthChecks.Get
+    (
+    -- * REST Resource
+      HTTPSHealthChecksGetResource
+
+    -- * Creating a Request
+    , httpsHealthChecksGet
+    , HTTPSHealthChecksGet
+
+    -- * Request Lenses
+    , hhcgProject
+    , hhcgHTTPSHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpsHealthChecks.get@ method which the
+-- 'HTTPSHealthChecksGet' request conforms to.
+type HTTPSHealthChecksGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpsHealthChecks" :>
+                 Capture "httpsHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] HTTPSHealthCheck
+
+-- | Returns the specified HttpsHealthCheck resource.
+--
+-- /See:/ 'httpsHealthChecksGet' smart constructor.
+data HTTPSHealthChecksGet = HTTPSHealthChecksGet
+    { _hhcgProject          :: !Text
+    , _hhcgHTTPSHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthChecksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhcgProject'
+--
+-- * 'hhcgHTTPSHealthCheck'
+httpsHealthChecksGet
+    :: Text -- ^ 'hhcgProject'
+    -> Text -- ^ 'hhcgHTTPSHealthCheck'
+    -> HTTPSHealthChecksGet
+httpsHealthChecksGet pHhcgProject_ pHhcgHTTPSHealthCheck_ =
+    HTTPSHealthChecksGet
+    { _hhcgProject = pHhcgProject_
+    , _hhcgHTTPSHealthCheck = pHhcgHTTPSHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+hhcgProject :: Lens' HTTPSHealthChecksGet Text
+hhcgProject
+  = lens _hhcgProject (\ s a -> s{_hhcgProject = a})
+
+-- | Name of the HttpsHealthCheck resource to return.
+hhcgHTTPSHealthCheck :: Lens' HTTPSHealthChecksGet Text
+hhcgHTTPSHealthCheck
+  = lens _hhcgHTTPSHealthCheck
+      (\ s a -> s{_hhcgHTTPSHealthCheck = a})
+
+instance GoogleRequest HTTPSHealthChecksGet where
+        type Rs HTTPSHealthChecksGet = HTTPSHealthCheck
+        requestClient HTTPSHealthChecksGet{..}
+          = go _hhcgProject _hhcgHTTPSHealthCheck
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPSHealthChecksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Insert.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.HTTPSHealthChecks.Insert
+-- Copyright   : (c) 2015 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 HttpsHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.insert@.
+module Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
+    (
+    -- * REST Resource
+      HTTPSHealthChecksInsertResource
+
+    -- * Creating a Request
+    , httpsHealthChecksInsert
+    , HTTPSHealthChecksInsert
+
+    -- * Request Lenses
+    , hhciProject
+    , hhciPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpsHealthChecks.insert@ method which the
+-- 'HTTPSHealthChecksInsert' request conforms to.
+type HTTPSHealthChecksInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpsHealthChecks" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] HTTPSHealthCheck :>
+                     Post '[JSON] Operation
+
+-- | Creates a HttpsHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'httpsHealthChecksInsert' smart constructor.
+data HTTPSHealthChecksInsert = HTTPSHealthChecksInsert
+    { _hhciProject :: !Text
+    , _hhciPayload :: !HTTPSHealthCheck
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthChecksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhciProject'
+--
+-- * 'hhciPayload'
+httpsHealthChecksInsert
+    :: Text -- ^ 'hhciProject'
+    -> HTTPSHealthCheck -- ^ 'hhciPayload'
+    -> HTTPSHealthChecksInsert
+httpsHealthChecksInsert pHhciProject_ pHhciPayload_ =
+    HTTPSHealthChecksInsert
+    { _hhciProject = pHhciProject_
+    , _hhciPayload = pHhciPayload_
+    }
+
+-- | Name of the project scoping this request.
+hhciProject :: Lens' HTTPSHealthChecksInsert Text
+hhciProject
+  = lens _hhciProject (\ s a -> s{_hhciProject = a})
+
+-- | Multipart request metadata.
+hhciPayload :: Lens' HTTPSHealthChecksInsert HTTPSHealthCheck
+hhciPayload
+  = lens _hhciPayload (\ s a -> s{_hhciPayload = a})
+
+instance GoogleRequest HTTPSHealthChecksInsert where
+        type Rs HTTPSHealthChecksInsert = Operation
+        requestClient HTTPSHealthChecksInsert{..}
+          = go _hhciProject (Just AltJSON) _hhciPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPSHealthChecksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/List.hs
@@ -0,0 +1,139 @@
+{-# 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.Compute.HTTPSHealthChecks.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of HttpsHealthCheck resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.list@.
+module Network.Google.Resource.Compute.HTTPSHealthChecks.List
+    (
+    -- * REST Resource
+      HTTPSHealthChecksListResource
+
+    -- * Creating a Request
+    , httpsHealthChecksList
+    , HTTPSHealthChecksList
+
+    -- * Request Lenses
+    , hhclProject
+    , hhclFilter
+    , hhclPageToken
+    , hhclMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpsHealthChecks.list@ method which the
+-- 'HTTPSHealthChecksList' request conforms to.
+type HTTPSHealthChecksListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpsHealthChecks" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] HTTPSHealthCheckList
+
+-- | Retrieves the list of HttpsHealthCheck resources available to the
+-- specified project.
+--
+-- /See:/ 'httpsHealthChecksList' smart constructor.
+data HTTPSHealthChecksList = HTTPSHealthChecksList
+    { _hhclProject    :: !Text
+    , _hhclFilter     :: !(Maybe Text)
+    , _hhclPageToken  :: !(Maybe Text)
+    , _hhclMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthChecksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhclProject'
+--
+-- * 'hhclFilter'
+--
+-- * 'hhclPageToken'
+--
+-- * 'hhclMaxResults'
+httpsHealthChecksList
+    :: Text -- ^ 'hhclProject'
+    -> HTTPSHealthChecksList
+httpsHealthChecksList pHhclProject_ =
+    HTTPSHealthChecksList
+    { _hhclProject = pHhclProject_
+    , _hhclFilter = Nothing
+    , _hhclPageToken = Nothing
+    , _hhclMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+hhclProject :: Lens' HTTPSHealthChecksList Text
+hhclProject
+  = lens _hhclProject (\ s a -> s{_hhclProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+hhclFilter :: Lens' HTTPSHealthChecksList (Maybe Text)
+hhclFilter
+  = lens _hhclFilter (\ s a -> s{_hhclFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+hhclPageToken :: Lens' HTTPSHealthChecksList (Maybe Text)
+hhclPageToken
+  = lens _hhclPageToken
+      (\ s a -> s{_hhclPageToken = a})
+
+-- | Maximum count of results to be returned.
+hhclMaxResults :: Lens' HTTPSHealthChecksList Word32
+hhclMaxResults
+  = lens _hhclMaxResults
+      (\ s a -> s{_hhclMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest HTTPSHealthChecksList where
+        type Rs HTTPSHealthChecksList = HTTPSHealthCheckList
+        requestClient HTTPSHealthChecksList{..}
+          = go _hhclProject _hhclFilter _hhclPageToken
+              (Just _hhclMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPSHealthChecksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Patch.hs
@@ -0,0 +1,116 @@
+{-# 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.Compute.HTTPSHealthChecks.Patch
+-- Copyright   : (c) 2015 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 HttpsHealthCheck resource in the specified project using the
+-- data included in the request. This method supports patch semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.patch@.
+module Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
+    (
+    -- * REST Resource
+      HTTPSHealthChecksPatchResource
+
+    -- * Creating a Request
+    , httpsHealthChecksPatch
+    , HTTPSHealthChecksPatch
+
+    -- * Request Lenses
+    , hhcpProject
+    , hhcpPayload
+    , hhcpHTTPSHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpsHealthChecks.patch@ method which the
+-- 'HTTPSHealthChecksPatch' request conforms to.
+type HTTPSHealthChecksPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpsHealthChecks" :>
+                 Capture "httpsHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HTTPSHealthCheck :>
+                       Patch '[JSON] Operation
+
+-- | Updates a HttpsHealthCheck resource in the specified project using the
+-- data included in the request. This method supports patch semantics.
+--
+-- /See:/ 'httpsHealthChecksPatch' smart constructor.
+data HTTPSHealthChecksPatch = HTTPSHealthChecksPatch
+    { _hhcpProject          :: !Text
+    , _hhcpPayload          :: !HTTPSHealthCheck
+    , _hhcpHTTPSHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthChecksPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhcpProject'
+--
+-- * 'hhcpPayload'
+--
+-- * 'hhcpHTTPSHealthCheck'
+httpsHealthChecksPatch
+    :: Text -- ^ 'hhcpProject'
+    -> HTTPSHealthCheck -- ^ 'hhcpPayload'
+    -> Text -- ^ 'hhcpHTTPSHealthCheck'
+    -> HTTPSHealthChecksPatch
+httpsHealthChecksPatch pHhcpProject_ pHhcpPayload_ pHhcpHTTPSHealthCheck_ =
+    HTTPSHealthChecksPatch
+    { _hhcpProject = pHhcpProject_
+    , _hhcpPayload = pHhcpPayload_
+    , _hhcpHTTPSHealthCheck = pHhcpHTTPSHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+hhcpProject :: Lens' HTTPSHealthChecksPatch Text
+hhcpProject
+  = lens _hhcpProject (\ s a -> s{_hhcpProject = a})
+
+-- | Multipart request metadata.
+hhcpPayload :: Lens' HTTPSHealthChecksPatch HTTPSHealthCheck
+hhcpPayload
+  = lens _hhcpPayload (\ s a -> s{_hhcpPayload = a})
+
+-- | Name of the HttpsHealthCheck resource to update.
+hhcpHTTPSHealthCheck :: Lens' HTTPSHealthChecksPatch Text
+hhcpHTTPSHealthCheck
+  = lens _hhcpHTTPSHealthCheck
+      (\ s a -> s{_hhcpHTTPSHealthCheck = a})
+
+instance GoogleRequest HTTPSHealthChecksPatch where
+        type Rs HTTPSHealthChecksPatch = Operation
+        requestClient HTTPSHealthChecksPatch{..}
+          = go _hhcpProject _hhcpHTTPSHealthCheck
+              (Just AltJSON)
+              _hhcpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPSHealthChecksPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/HTTPSHealthChecks/Update.hs
@@ -0,0 +1,116 @@
+{-# 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.Compute.HTTPSHealthChecks.Update
+-- Copyright   : (c) 2015 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 HttpsHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.httpsHealthChecks.update@.
+module Network.Google.Resource.Compute.HTTPSHealthChecks.Update
+    (
+    -- * REST Resource
+      HTTPSHealthChecksUpdateResource
+
+    -- * Creating a Request
+    , httpsHealthChecksUpdate
+    , HTTPSHealthChecksUpdate
+
+    -- * Request Lenses
+    , hhcuProject
+    , hhcuPayload
+    , hhcuHTTPSHealthCheck
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.httpsHealthChecks.update@ method which the
+-- 'HTTPSHealthChecksUpdate' request conforms to.
+type HTTPSHealthChecksUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "httpsHealthChecks" :>
+                 Capture "httpsHealthCheck" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] HTTPSHealthCheck :>
+                       Put '[JSON] Operation
+
+-- | Updates a HttpsHealthCheck resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'httpsHealthChecksUpdate' smart constructor.
+data HTTPSHealthChecksUpdate = HTTPSHealthChecksUpdate
+    { _hhcuProject          :: !Text
+    , _hhcuPayload          :: !HTTPSHealthCheck
+    , _hhcuHTTPSHealthCheck :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPSHealthChecksUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hhcuProject'
+--
+-- * 'hhcuPayload'
+--
+-- * 'hhcuHTTPSHealthCheck'
+httpsHealthChecksUpdate
+    :: Text -- ^ 'hhcuProject'
+    -> HTTPSHealthCheck -- ^ 'hhcuPayload'
+    -> Text -- ^ 'hhcuHTTPSHealthCheck'
+    -> HTTPSHealthChecksUpdate
+httpsHealthChecksUpdate pHhcuProject_ pHhcuPayload_ pHhcuHTTPSHealthCheck_ =
+    HTTPSHealthChecksUpdate
+    { _hhcuProject = pHhcuProject_
+    , _hhcuPayload = pHhcuPayload_
+    , _hhcuHTTPSHealthCheck = pHhcuHTTPSHealthCheck_
+    }
+
+-- | Name of the project scoping this request.
+hhcuProject :: Lens' HTTPSHealthChecksUpdate Text
+hhcuProject
+  = lens _hhcuProject (\ s a -> s{_hhcuProject = a})
+
+-- | Multipart request metadata.
+hhcuPayload :: Lens' HTTPSHealthChecksUpdate HTTPSHealthCheck
+hhcuPayload
+  = lens _hhcuPayload (\ s a -> s{_hhcuPayload = a})
+
+-- | Name of the HttpsHealthCheck resource to update.
+hhcuHTTPSHealthCheck :: Lens' HTTPSHealthChecksUpdate Text
+hhcuHTTPSHealthCheck
+  = lens _hhcuHTTPSHealthCheck
+      (\ s a -> s{_hhcuHTTPSHealthCheck = a})
+
+instance GoogleRequest HTTPSHealthChecksUpdate where
+        type Rs HTTPSHealthChecksUpdate = Operation
+        requestClient HTTPSHealthChecksUpdate{..}
+          = go _hhcuProject _hhcuHTTPSHealthCheck
+              (Just AltJSON)
+              _hhcuPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy HTTPSHealthChecksUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/Delete.hs b/gen/Network/Google/Resource/Compute/Images/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/Delete.hs
@@ -0,0 +1,96 @@
+{-# 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.Compute.Images.Delete
+-- Copyright   : (c) 2015 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 the specified image resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.delete@.
+module Network.Google.Resource.Compute.Images.Delete
+    (
+    -- * REST Resource
+      ImagesDeleteResource
+
+    -- * Creating a Request
+    , imagesDelete
+    , ImagesDelete
+
+    -- * Request Lenses
+    , imaImage
+    , imaProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.delete@ method which the
+-- 'ImagesDelete' request conforms to.
+type ImagesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "image" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified image resource.
+--
+-- /See:/ 'imagesDelete' smart constructor.
+data ImagesDelete = ImagesDelete
+    { _imaImage   :: !Text
+    , _imaProject :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imaImage'
+--
+-- * 'imaProject'
+imagesDelete
+    :: Text -- ^ 'imaImage'
+    -> Text -- ^ 'imaProject'
+    -> ImagesDelete
+imagesDelete pImaImage_ pImaProject_ =
+    ImagesDelete
+    { _imaImage = pImaImage_
+    , _imaProject = pImaProject_
+    }
+
+-- | Name of the image resource to delete.
+imaImage :: Lens' ImagesDelete Text
+imaImage = lens _imaImage (\ s a -> s{_imaImage = a})
+
+-- | Project ID for this request.
+imaProject :: Lens' ImagesDelete Text
+imaProject
+  = lens _imaProject (\ s a -> s{_imaProject = a})
+
+instance GoogleRequest ImagesDelete where
+        type Rs ImagesDelete = Operation
+        requestClient ImagesDelete{..}
+          = go _imaProject _imaImage (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy ImagesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/Deprecate.hs b/gen/Network/Google/Resource/Compute/Images/Deprecate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/Deprecate.hs
@@ -0,0 +1,115 @@
+{-# 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.Compute.Images.Deprecate
+-- Copyright   : (c) 2015 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 deprecation status of an image. If an empty request body is
+-- given, clears the deprecation status instead.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.deprecate@.
+module Network.Google.Resource.Compute.Images.Deprecate
+    (
+    -- * REST Resource
+      ImagesDeprecateResource
+
+    -- * Creating a Request
+    , imagesDeprecate
+    , ImagesDeprecate
+
+    -- * Request Lenses
+    , imamImage
+    , imamProject
+    , imamPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.deprecate@ method which the
+-- 'ImagesDeprecate' request conforms to.
+type ImagesDeprecateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "image" Text :>
+                   "deprecate" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] DeprecationStatus :>
+                         Post '[JSON] Operation
+
+-- | Sets the deprecation status of an image. If an empty request body is
+-- given, clears the deprecation status instead.
+--
+-- /See:/ 'imagesDeprecate' smart constructor.
+data ImagesDeprecate = ImagesDeprecate
+    { _imamImage   :: !Text
+    , _imamProject :: !Text
+    , _imamPayload :: !DeprecationStatus
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesDeprecate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'imamImage'
+--
+-- * 'imamProject'
+--
+-- * 'imamPayload'
+imagesDeprecate
+    :: Text -- ^ 'imamImage'
+    -> Text -- ^ 'imamProject'
+    -> DeprecationStatus -- ^ 'imamPayload'
+    -> ImagesDeprecate
+imagesDeprecate pImamImage_ pImamProject_ pImamPayload_ =
+    ImagesDeprecate
+    { _imamImage = pImamImage_
+    , _imamProject = pImamProject_
+    , _imamPayload = pImamPayload_
+    }
+
+-- | Image name.
+imamImage :: Lens' ImagesDeprecate Text
+imamImage
+  = lens _imamImage (\ s a -> s{_imamImage = a})
+
+-- | Project ID for this request.
+imamProject :: Lens' ImagesDeprecate Text
+imamProject
+  = lens _imamProject (\ s a -> s{_imamProject = a})
+
+-- | Multipart request metadata.
+imamPayload :: Lens' ImagesDeprecate DeprecationStatus
+imamPayload
+  = lens _imamPayload (\ s a -> s{_imamPayload = a})
+
+instance GoogleRequest ImagesDeprecate where
+        type Rs ImagesDeprecate = Operation
+        requestClient ImagesDeprecate{..}
+          = go _imamProject _imamImage (Just AltJSON)
+              _imamPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ImagesDeprecateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/Get.hs b/gen/Network/Google/Resource/Compute/Images/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/Get.hs
@@ -0,0 +1,94 @@
+{-# 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.Compute.Images.Get
+-- Copyright   : (c) 2015 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 the specified image resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.get@.
+module Network.Google.Resource.Compute.Images.Get
+    (
+    -- * REST Resource
+      ImagesGetResource
+
+    -- * Creating a Request
+    , imagesGet
+    , ImagesGet
+
+    -- * Request Lenses
+    , iImage
+    , iProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.get@ method which the
+-- 'ImagesGet' request conforms to.
+type ImagesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 Capture "image" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Image
+
+-- | Returns the specified image resource.
+--
+-- /See:/ 'imagesGet' smart constructor.
+data ImagesGet = ImagesGet
+    { _iImage   :: !Text
+    , _iProject :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iImage'
+--
+-- * 'iProject'
+imagesGet
+    :: Text -- ^ 'iImage'
+    -> Text -- ^ 'iProject'
+    -> ImagesGet
+imagesGet pIImage_ pIProject_ =
+    ImagesGet
+    { _iImage = pIImage_
+    , _iProject = pIProject_
+    }
+
+-- | Name of the image resource to return.
+iImage :: Lens' ImagesGet Text
+iImage = lens _iImage (\ s a -> s{_iImage = a})
+
+-- | Project ID for this request.
+iProject :: Lens' ImagesGet Text
+iProject = lens _iProject (\ s a -> s{_iProject = a})
+
+instance GoogleRequest ImagesGet where
+        type Rs ImagesGet = Image
+        requestClient ImagesGet{..}
+          = go _iProject _iImage (Just AltJSON) computeService
+          where go
+                  = buildClient (Proxy :: Proxy ImagesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/Insert.hs b/gen/Network/Google/Resource/Compute/Images/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/Insert.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.Images.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an image resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.insert@.
+module Network.Google.Resource.Compute.Images.Insert
+    (
+    -- * REST Resource
+      ImagesInsertResource
+
+    -- * Creating a Request
+    , imagesInsert
+    , ImagesInsert
+
+    -- * Request Lenses
+    , iiProject
+    , iiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.insert@ method which the
+-- 'ImagesInsert' request conforms to.
+type ImagesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Image :> Post '[JSON] Operation
+
+-- | Creates an image resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'imagesInsert' smart constructor.
+data ImagesInsert = ImagesInsert
+    { _iiProject :: !Text
+    , _iiPayload :: !Image
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiProject'
+--
+-- * 'iiPayload'
+imagesInsert
+    :: Text -- ^ 'iiProject'
+    -> Image -- ^ 'iiPayload'
+    -> ImagesInsert
+imagesInsert pIiProject_ pIiPayload_ =
+    ImagesInsert
+    { _iiProject = pIiProject_
+    , _iiPayload = pIiPayload_
+    }
+
+-- | Project ID for this request.
+iiProject :: Lens' ImagesInsert Text
+iiProject
+  = lens _iiProject (\ s a -> s{_iiProject = a})
+
+-- | Multipart request metadata.
+iiPayload :: Lens' ImagesInsert Image
+iiPayload
+  = lens _iiPayload (\ s a -> s{_iiPayload = a})
+
+instance GoogleRequest ImagesInsert where
+        type Rs ImagesInsert = Operation
+        requestClient ImagesInsert{..}
+          = go _iiProject (Just AltJSON) _iiPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy ImagesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Images/List.hs b/gen/Network/Google/Resource/Compute/Images/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Images/List.hs
@@ -0,0 +1,146 @@
+{-# 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.Compute.Images.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of private images available to the specified project.
+-- Private images are images you create that belong to your project. This
+-- method does not get any images that belong to other projects, including
+-- publicly-available images, like Debian 7. If you want to get a list of
+-- publicly-available images, use this method to make a request to the
+-- respective image project, such as debian-cloud or windows-cloud. See
+-- Accessing images for more information.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.images.list@.
+module Network.Google.Resource.Compute.Images.List
+    (
+    -- * REST Resource
+      ImagesListResource
+
+    -- * Creating a Request
+    , imagesList
+    , ImagesList
+
+    -- * Request Lenses
+    , illProject
+    , illFilter
+    , illPageToken
+    , illMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.images.list@ method which the
+-- 'ImagesList' request conforms to.
+type ImagesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "images" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] ImageList
+
+-- | Retrieves the list of private images available to the specified project.
+-- Private images are images you create that belong to your project. This
+-- method does not get any images that belong to other projects, including
+-- publicly-available images, like Debian 7. If you want to get a list of
+-- publicly-available images, use this method to make a request to the
+-- respective image project, such as debian-cloud or windows-cloud. See
+-- Accessing images for more information.
+--
+-- /See:/ 'imagesList' smart constructor.
+data ImagesList = ImagesList
+    { _illProject    :: !Text
+    , _illFilter     :: !(Maybe Text)
+    , _illPageToken  :: !(Maybe Text)
+    , _illMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ImagesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'illProject'
+--
+-- * 'illFilter'
+--
+-- * 'illPageToken'
+--
+-- * 'illMaxResults'
+imagesList
+    :: Text -- ^ 'illProject'
+    -> ImagesList
+imagesList pIllProject_ =
+    ImagesList
+    { _illProject = pIllProject_
+    , _illFilter = Nothing
+    , _illPageToken = Nothing
+    , _illMaxResults = 500
+    }
+
+-- | Project ID for this request.
+illProject :: Lens' ImagesList Text
+illProject
+  = lens _illProject (\ s a -> s{_illProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+illFilter :: Lens' ImagesList (Maybe Text)
+illFilter
+  = lens _illFilter (\ s a -> s{_illFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+illPageToken :: Lens' ImagesList (Maybe Text)
+illPageToken
+  = lens _illPageToken (\ s a -> s{_illPageToken = a})
+
+-- | Maximum count of results to be returned.
+illMaxResults :: Lens' ImagesList Word32
+illMaxResults
+  = lens _illMaxResults
+      (\ s a -> s{_illMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ImagesList where
+        type Rs ImagesList = ImageList
+        requestClient ImagesList{..}
+          = go _illProject _illFilter _illPageToken
+              (Just _illMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy ImagesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AbandonInstances.hs
@@ -0,0 +1,149 @@
+{-# 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.Compute.InstanceGroupManagers.AbandonInstances
+-- Copyright   : (c) 2015 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)
+--
+-- Schedules a group action to remove the specified instances from the
+-- managed instance group. Abandoning an instance does not delete the
+-- instance, but it does remove the instance from any target pools that are
+-- applied by the managed instance group. This method reduces the
+-- targetSize of the managed instance group by the number of instances that
+-- you abandon. This operation is marked as DONE when the action is
+-- scheduled even if the instances have not yet been removed from the
+-- group. You must separately verify the status of the abandoning action
+-- with the listmanagedinstances method.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.abandonInstances@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
+    (
+    -- * REST Resource
+      InstanceGroupManagersAbandonInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupManagersAbandonInstances
+    , InstanceGroupManagersAbandonInstances
+
+    -- * Request Lenses
+    , igmaiProject
+    , igmaiInstanceGroupManager
+    , igmaiZone
+    , igmaiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.abandonInstances@ method which the
+-- 'InstanceGroupManagersAbandonInstances' request conforms to.
+type InstanceGroupManagersAbandonInstancesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "abandonInstances" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           InstanceGroupManagersAbandonInstancesRequest
+                           :> Post '[JSON] Operation
+
+-- | Schedules a group action to remove the specified instances from the
+-- managed instance group. Abandoning an instance does not delete the
+-- instance, but it does remove the instance from any target pools that are
+-- applied by the managed instance group. This method reduces the
+-- targetSize of the managed instance group by the number of instances that
+-- you abandon. This operation is marked as DONE when the action is
+-- scheduled even if the instances have not yet been removed from the
+-- group. You must separately verify the status of the abandoning action
+-- with the listmanagedinstances method.
+--
+-- /See:/ 'instanceGroupManagersAbandonInstances' smart constructor.
+data InstanceGroupManagersAbandonInstances = InstanceGroupManagersAbandonInstances
+    { _igmaiProject              :: !Text
+    , _igmaiInstanceGroupManager :: !Text
+    , _igmaiZone                 :: !Text
+    , _igmaiPayload              :: !InstanceGroupManagersAbandonInstancesRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersAbandonInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmaiProject'
+--
+-- * 'igmaiInstanceGroupManager'
+--
+-- * 'igmaiZone'
+--
+-- * 'igmaiPayload'
+instanceGroupManagersAbandonInstances
+    :: Text -- ^ 'igmaiProject'
+    -> Text -- ^ 'igmaiInstanceGroupManager'
+    -> Text -- ^ 'igmaiZone'
+    -> InstanceGroupManagersAbandonInstancesRequest -- ^ 'igmaiPayload'
+    -> InstanceGroupManagersAbandonInstances
+instanceGroupManagersAbandonInstances pIgmaiProject_ pIgmaiInstanceGroupManager_ pIgmaiZone_ pIgmaiPayload_ =
+    InstanceGroupManagersAbandonInstances
+    { _igmaiProject = pIgmaiProject_
+    , _igmaiInstanceGroupManager = pIgmaiInstanceGroupManager_
+    , _igmaiZone = pIgmaiZone_
+    , _igmaiPayload = pIgmaiPayload_
+    }
+
+-- | The project ID for this request.
+igmaiProject :: Lens' InstanceGroupManagersAbandonInstances Text
+igmaiProject
+  = lens _igmaiProject (\ s a -> s{_igmaiProject = a})
+
+-- | The name of the managed instance group.
+igmaiInstanceGroupManager :: Lens' InstanceGroupManagersAbandonInstances Text
+igmaiInstanceGroupManager
+  = lens _igmaiInstanceGroupManager
+      (\ s a -> s{_igmaiInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmaiZone :: Lens' InstanceGroupManagersAbandonInstances Text
+igmaiZone
+  = lens _igmaiZone (\ s a -> s{_igmaiZone = a})
+
+-- | Multipart request metadata.
+igmaiPayload :: Lens' InstanceGroupManagersAbandonInstances InstanceGroupManagersAbandonInstancesRequest
+igmaiPayload
+  = lens _igmaiPayload (\ s a -> s{_igmaiPayload = a})
+
+instance GoogleRequest
+         InstanceGroupManagersAbandonInstances where
+        type Rs InstanceGroupManagersAbandonInstances =
+             Operation
+        requestClient
+          InstanceGroupManagersAbandonInstances{..}
+          = go _igmaiProject _igmaiZone
+              _igmaiInstanceGroupManager
+              (Just AltJSON)
+              _igmaiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceGroupManagersAbandonInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/AggregatedList.hs
@@ -0,0 +1,140 @@
+{-# 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.Compute.InstanceGroupManagers.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of managed instance groups and groups them by zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.aggregatedList@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
+    (
+    -- * REST Resource
+      InstanceGroupManagersAggregatedListResource
+
+    -- * Creating a Request
+    , instanceGroupManagersAggregatedList
+    , InstanceGroupManagersAggregatedList
+
+    -- * Request Lenses
+    , igmalProject
+    , igmalFilter
+    , igmalPageToken
+    , igmalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.aggregatedList@ method which the
+-- 'InstanceGroupManagersAggregatedList' request conforms to.
+type InstanceGroupManagersAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "instanceGroupManagers" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] InstanceGroupManagerAggregatedList
+
+-- | Retrieves the list of managed instance groups and groups them by zone.
+--
+-- /See:/ 'instanceGroupManagersAggregatedList' smart constructor.
+data InstanceGroupManagersAggregatedList = InstanceGroupManagersAggregatedList
+    { _igmalProject    :: !Text
+    , _igmalFilter     :: !(Maybe Text)
+    , _igmalPageToken  :: !(Maybe Text)
+    , _igmalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmalProject'
+--
+-- * 'igmalFilter'
+--
+-- * 'igmalPageToken'
+--
+-- * 'igmalMaxResults'
+instanceGroupManagersAggregatedList
+    :: Text -- ^ 'igmalProject'
+    -> InstanceGroupManagersAggregatedList
+instanceGroupManagersAggregatedList pIgmalProject_ =
+    InstanceGroupManagersAggregatedList
+    { _igmalProject = pIgmalProject_
+    , _igmalFilter = Nothing
+    , _igmalPageToken = Nothing
+    , _igmalMaxResults = 500
+    }
+
+-- | The project ID for this request.
+igmalProject :: Lens' InstanceGroupManagersAggregatedList Text
+igmalProject
+  = lens _igmalProject (\ s a -> s{_igmalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+igmalFilter :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)
+igmalFilter
+  = lens _igmalFilter (\ s a -> s{_igmalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+igmalPageToken :: Lens' InstanceGroupManagersAggregatedList (Maybe Text)
+igmalPageToken
+  = lens _igmalPageToken
+      (\ s a -> s{_igmalPageToken = a})
+
+-- | Maximum count of results to be returned.
+igmalMaxResults :: Lens' InstanceGroupManagersAggregatedList Word32
+igmalMaxResults
+  = lens _igmalMaxResults
+      (\ s a -> s{_igmalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+         InstanceGroupManagersAggregatedList where
+        type Rs InstanceGroupManagersAggregatedList =
+             InstanceGroupManagerAggregatedList
+        requestClient InstanceGroupManagersAggregatedList{..}
+          = go _igmalProject _igmalFilter _igmalPageToken
+              (Just _igmalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceGroupManagersAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Delete.hs
@@ -0,0 +1,114 @@
+{-# 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.Compute.InstanceGroupManagers.Delete
+-- Copyright   : (c) 2015 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 the specified managed instance group and all of the instances in
+-- that group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.delete@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.Delete
+    (
+    -- * REST Resource
+      InstanceGroupManagersDeleteResource
+
+    -- * Creating a Request
+    , instanceGroupManagersDelete
+    , InstanceGroupManagersDelete
+
+    -- * Request Lenses
+    , igmdProject
+    , igmdInstanceGroupManager
+    , igmdZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.delete@ method which the
+-- 'InstanceGroupManagersDelete' request conforms to.
+type InstanceGroupManagersDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified managed instance group and all of the instances in
+-- that group.
+--
+-- /See:/ 'instanceGroupManagersDelete' smart constructor.
+data InstanceGroupManagersDelete = InstanceGroupManagersDelete
+    { _igmdProject              :: !Text
+    , _igmdInstanceGroupManager :: !Text
+    , _igmdZone                 :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmdProject'
+--
+-- * 'igmdInstanceGroupManager'
+--
+-- * 'igmdZone'
+instanceGroupManagersDelete
+    :: Text -- ^ 'igmdProject'
+    -> Text -- ^ 'igmdInstanceGroupManager'
+    -> Text -- ^ 'igmdZone'
+    -> InstanceGroupManagersDelete
+instanceGroupManagersDelete pIgmdProject_ pIgmdInstanceGroupManager_ pIgmdZone_ =
+    InstanceGroupManagersDelete
+    { _igmdProject = pIgmdProject_
+    , _igmdInstanceGroupManager = pIgmdInstanceGroupManager_
+    , _igmdZone = pIgmdZone_
+    }
+
+-- | The project ID for this request.
+igmdProject :: Lens' InstanceGroupManagersDelete Text
+igmdProject
+  = lens _igmdProject (\ s a -> s{_igmdProject = a})
+
+-- | The name of the managed instance group to delete.
+igmdInstanceGroupManager :: Lens' InstanceGroupManagersDelete Text
+igmdInstanceGroupManager
+  = lens _igmdInstanceGroupManager
+      (\ s a -> s{_igmdInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmdZone :: Lens' InstanceGroupManagersDelete Text
+igmdZone = lens _igmdZone (\ s a -> s{_igmdZone = a})
+
+instance GoogleRequest InstanceGroupManagersDelete
+         where
+        type Rs InstanceGroupManagersDelete = Operation
+        requestClient InstanceGroupManagersDelete{..}
+          = go _igmdProject _igmdZone _igmdInstanceGroupManager
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupManagersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/DeleteInstances.hs
@@ -0,0 +1,145 @@
+{-# 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.Compute.InstanceGroupManagers.DeleteInstances
+-- Copyright   : (c) 2015 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)
+--
+-- Schedules a group action to delete the specified instances in the
+-- managed instance group. The instances are also removed from any target
+-- pools of which they were a member. This method reduces the targetSize of
+-- the managed instance group by the number of instances that you delete.
+-- This operation is marked as DONE when the action is scheduled even if
+-- the instances are still being deleted. You must separately verify the
+-- status of the deleting action with the listmanagedinstances method.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.deleteInstances@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
+    (
+    -- * REST Resource
+      InstanceGroupManagersDeleteInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupManagersDeleteInstances
+    , InstanceGroupManagersDeleteInstances
+
+    -- * Request Lenses
+    , igmdiProject
+    , igmdiInstanceGroupManager
+    , igmdiZone
+    , igmdiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.deleteInstances@ method which the
+-- 'InstanceGroupManagersDeleteInstances' request conforms to.
+type InstanceGroupManagersDeleteInstancesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "deleteInstances" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           InstanceGroupManagersDeleteInstancesRequest
+                           :> Post '[JSON] Operation
+
+-- | Schedules a group action to delete the specified instances in the
+-- managed instance group. The instances are also removed from any target
+-- pools of which they were a member. This method reduces the targetSize of
+-- the managed instance group by the number of instances that you delete.
+-- This operation is marked as DONE when the action is scheduled even if
+-- the instances are still being deleted. You must separately verify the
+-- status of the deleting action with the listmanagedinstances method.
+--
+-- /See:/ 'instanceGroupManagersDeleteInstances' smart constructor.
+data InstanceGroupManagersDeleteInstances = InstanceGroupManagersDeleteInstances
+    { _igmdiProject              :: !Text
+    , _igmdiInstanceGroupManager :: !Text
+    , _igmdiZone                 :: !Text
+    , _igmdiPayload              :: !InstanceGroupManagersDeleteInstancesRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersDeleteInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmdiProject'
+--
+-- * 'igmdiInstanceGroupManager'
+--
+-- * 'igmdiZone'
+--
+-- * 'igmdiPayload'
+instanceGroupManagersDeleteInstances
+    :: Text -- ^ 'igmdiProject'
+    -> Text -- ^ 'igmdiInstanceGroupManager'
+    -> Text -- ^ 'igmdiZone'
+    -> InstanceGroupManagersDeleteInstancesRequest -- ^ 'igmdiPayload'
+    -> InstanceGroupManagersDeleteInstances
+instanceGroupManagersDeleteInstances pIgmdiProject_ pIgmdiInstanceGroupManager_ pIgmdiZone_ pIgmdiPayload_ =
+    InstanceGroupManagersDeleteInstances
+    { _igmdiProject = pIgmdiProject_
+    , _igmdiInstanceGroupManager = pIgmdiInstanceGroupManager_
+    , _igmdiZone = pIgmdiZone_
+    , _igmdiPayload = pIgmdiPayload_
+    }
+
+-- | The project ID for this request.
+igmdiProject :: Lens' InstanceGroupManagersDeleteInstances Text
+igmdiProject
+  = lens _igmdiProject (\ s a -> s{_igmdiProject = a})
+
+-- | The name of the managed instance group.
+igmdiInstanceGroupManager :: Lens' InstanceGroupManagersDeleteInstances Text
+igmdiInstanceGroupManager
+  = lens _igmdiInstanceGroupManager
+      (\ s a -> s{_igmdiInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmdiZone :: Lens' InstanceGroupManagersDeleteInstances Text
+igmdiZone
+  = lens _igmdiZone (\ s a -> s{_igmdiZone = a})
+
+-- | Multipart request metadata.
+igmdiPayload :: Lens' InstanceGroupManagersDeleteInstances InstanceGroupManagersDeleteInstancesRequest
+igmdiPayload
+  = lens _igmdiPayload (\ s a -> s{_igmdiPayload = a})
+
+instance GoogleRequest
+         InstanceGroupManagersDeleteInstances where
+        type Rs InstanceGroupManagersDeleteInstances =
+             Operation
+        requestClient
+          InstanceGroupManagersDeleteInstances{..}
+          = go _igmdiProject _igmdiZone
+              _igmdiInstanceGroupManager
+              (Just AltJSON)
+              _igmdiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceGroupManagersDeleteInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Get.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.InstanceGroupManagers.Get
+-- Copyright   : (c) 2015 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 all of the details about the specified managed instance group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.get@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.Get
+    (
+    -- * REST Resource
+      InstanceGroupManagersGetResource
+
+    -- * Creating a Request
+    , instanceGroupManagersGet
+    , InstanceGroupManagersGet
+
+    -- * Request Lenses
+    , igmgProject
+    , igmgInstanceGroupManager
+    , igmgZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.get@ method which the
+-- 'InstanceGroupManagersGet' request conforms to.
+type InstanceGroupManagersGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] InstanceGroupManager
+
+-- | Returns all of the details about the specified managed instance group.
+--
+-- /See:/ 'instanceGroupManagersGet' smart constructor.
+data InstanceGroupManagersGet = InstanceGroupManagersGet
+    { _igmgProject              :: !Text
+    , _igmgInstanceGroupManager :: !Text
+    , _igmgZone                 :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmgProject'
+--
+-- * 'igmgInstanceGroupManager'
+--
+-- * 'igmgZone'
+instanceGroupManagersGet
+    :: Text -- ^ 'igmgProject'
+    -> Text -- ^ 'igmgInstanceGroupManager'
+    -> Text -- ^ 'igmgZone'
+    -> InstanceGroupManagersGet
+instanceGroupManagersGet pIgmgProject_ pIgmgInstanceGroupManager_ pIgmgZone_ =
+    InstanceGroupManagersGet
+    { _igmgProject = pIgmgProject_
+    , _igmgInstanceGroupManager = pIgmgInstanceGroupManager_
+    , _igmgZone = pIgmgZone_
+    }
+
+-- | The project ID for this request.
+igmgProject :: Lens' InstanceGroupManagersGet Text
+igmgProject
+  = lens _igmgProject (\ s a -> s{_igmgProject = a})
+
+-- | The name of the managed instance group.
+igmgInstanceGroupManager :: Lens' InstanceGroupManagersGet Text
+igmgInstanceGroupManager
+  = lens _igmgInstanceGroupManager
+      (\ s a -> s{_igmgInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmgZone :: Lens' InstanceGroupManagersGet Text
+igmgZone = lens _igmgZone (\ s a -> s{_igmgZone = a})
+
+instance GoogleRequest InstanceGroupManagersGet where
+        type Rs InstanceGroupManagersGet =
+             InstanceGroupManager
+        requestClient InstanceGroupManagersGet{..}
+          = go _igmgProject _igmgZone _igmgInstanceGroupManager
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupManagersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Insert.hs
@@ -0,0 +1,125 @@
+{-# 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.Compute.InstanceGroupManagers.Insert
+-- Copyright   : (c) 2015 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 managed instance group using the information that you specify
+-- in the request. After the group is created, it schedules an action to
+-- create instances in the group using the specified instance template.
+-- This operation is marked as DONE when the group is created even if the
+-- instances in the group have not yet been created. You must separately
+-- verify the status of the individual instances with the
+-- listmanagedinstances method.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.insert@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.Insert
+    (
+    -- * REST Resource
+      InstanceGroupManagersInsertResource
+
+    -- * Creating a Request
+    , instanceGroupManagersInsert
+    , InstanceGroupManagersInsert
+
+    -- * Request Lenses
+    , igmiProject
+    , igmiZone
+    , igmiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.insert@ method which the
+-- 'InstanceGroupManagersInsert' request conforms to.
+type InstanceGroupManagersInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] InstanceGroupManager :>
+                       Post '[JSON] Operation
+
+-- | Creates a managed instance group using the information that you specify
+-- in the request. After the group is created, it schedules an action to
+-- create instances in the group using the specified instance template.
+-- This operation is marked as DONE when the group is created even if the
+-- instances in the group have not yet been created. You must separately
+-- verify the status of the individual instances with the
+-- listmanagedinstances method.
+--
+-- /See:/ 'instanceGroupManagersInsert' smart constructor.
+data InstanceGroupManagersInsert = InstanceGroupManagersInsert
+    { _igmiProject :: !Text
+    , _igmiZone    :: !Text
+    , _igmiPayload :: !InstanceGroupManager
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmiProject'
+--
+-- * 'igmiZone'
+--
+-- * 'igmiPayload'
+instanceGroupManagersInsert
+    :: Text -- ^ 'igmiProject'
+    -> Text -- ^ 'igmiZone'
+    -> InstanceGroupManager -- ^ 'igmiPayload'
+    -> InstanceGroupManagersInsert
+instanceGroupManagersInsert pIgmiProject_ pIgmiZone_ pIgmiPayload_ =
+    InstanceGroupManagersInsert
+    { _igmiProject = pIgmiProject_
+    , _igmiZone = pIgmiZone_
+    , _igmiPayload = pIgmiPayload_
+    }
+
+-- | The project ID for this request.
+igmiProject :: Lens' InstanceGroupManagersInsert Text
+igmiProject
+  = lens _igmiProject (\ s a -> s{_igmiProject = a})
+
+-- | The name of the zone where you want to create the managed instance
+-- group.
+igmiZone :: Lens' InstanceGroupManagersInsert Text
+igmiZone = lens _igmiZone (\ s a -> s{_igmiZone = a})
+
+-- | Multipart request metadata.
+igmiPayload :: Lens' InstanceGroupManagersInsert InstanceGroupManager
+igmiPayload
+  = lens _igmiPayload (\ s a -> s{_igmiPayload = a})
+
+instance GoogleRequest InstanceGroupManagersInsert
+         where
+        type Rs InstanceGroupManagersInsert = Operation
+        requestClient InstanceGroupManagersInsert{..}
+          = go _igmiProject _igmiZone (Just AltJSON)
+              _igmiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupManagersInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/List.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.Compute.InstanceGroupManagers.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves a list of managed instance groups that are contained within
+-- the specified project and zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.list@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.List
+    (
+    -- * REST Resource
+      InstanceGroupManagersListResource
+
+    -- * Creating a Request
+    , instanceGroupManagersList
+    , InstanceGroupManagersList
+
+    -- * Request Lenses
+    , igmlProject
+    , igmlZone
+    , igmlFilter
+    , igmlPageToken
+    , igmlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.list@ method which the
+-- 'InstanceGroupManagersList' request conforms to.
+type InstanceGroupManagersListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] InstanceGroupManagerList
+
+-- | Retrieves a list of managed instance groups that are contained within
+-- the specified project and zone.
+--
+-- /See:/ 'instanceGroupManagersList' smart constructor.
+data InstanceGroupManagersList = InstanceGroupManagersList
+    { _igmlProject    :: !Text
+    , _igmlZone       :: !Text
+    , _igmlFilter     :: !(Maybe Text)
+    , _igmlPageToken  :: !(Maybe Text)
+    , _igmlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlProject'
+--
+-- * 'igmlZone'
+--
+-- * 'igmlFilter'
+--
+-- * 'igmlPageToken'
+--
+-- * 'igmlMaxResults'
+instanceGroupManagersList
+    :: Text -- ^ 'igmlProject'
+    -> Text -- ^ 'igmlZone'
+    -> InstanceGroupManagersList
+instanceGroupManagersList pIgmlProject_ pIgmlZone_ =
+    InstanceGroupManagersList
+    { _igmlProject = pIgmlProject_
+    , _igmlZone = pIgmlZone_
+    , _igmlFilter = Nothing
+    , _igmlPageToken = Nothing
+    , _igmlMaxResults = 500
+    }
+
+-- | The project ID for this request.
+igmlProject :: Lens' InstanceGroupManagersList Text
+igmlProject
+  = lens _igmlProject (\ s a -> s{_igmlProject = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmlZone :: Lens' InstanceGroupManagersList Text
+igmlZone = lens _igmlZone (\ s a -> s{_igmlZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+igmlFilter :: Lens' InstanceGroupManagersList (Maybe Text)
+igmlFilter
+  = lens _igmlFilter (\ s a -> s{_igmlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+igmlPageToken :: Lens' InstanceGroupManagersList (Maybe Text)
+igmlPageToken
+  = lens _igmlPageToken
+      (\ s a -> s{_igmlPageToken = a})
+
+-- | Maximum count of results to be returned.
+igmlMaxResults :: Lens' InstanceGroupManagersList Word32
+igmlMaxResults
+  = lens _igmlMaxResults
+      (\ s a -> s{_igmlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstanceGroupManagersList
+         where
+        type Rs InstanceGroupManagersList =
+             InstanceGroupManagerList
+        requestClient InstanceGroupManagersList{..}
+          = go _igmlProject _igmlZone _igmlFilter
+              _igmlPageToken
+              (Just _igmlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupManagersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/ListManagedInstances.hs
@@ -0,0 +1,133 @@
+{-# 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.Compute.InstanceGroupManagers.ListManagedInstances
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all of the instances in the managed instance group. Each instance
+-- in the list has a currentAction, which indicates the action that the
+-- managed instance group is performing on the instance. For example, if
+-- the group is still creating an instance, the currentAction is CREATING.
+-- If a previous action failed, the list displays the errors for that
+-- failed action.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.listManagedInstances@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+    (
+    -- * REST Resource
+      InstanceGroupManagersListManagedInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupManagersListManagedInstances
+    , InstanceGroupManagersListManagedInstances
+
+    -- * Request Lenses
+    , igmlmiProject
+    , igmlmiInstanceGroupManager
+    , igmlmiZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.listManagedInstances@ method which the
+-- 'InstanceGroupManagersListManagedInstances' request conforms to.
+type InstanceGroupManagersListManagedInstancesResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "listManagedInstances" :>
+                       QueryParam "alt" AltJSON :>
+                         Post '[JSON]
+                           InstanceGroupManagersListManagedInstancesResponse
+
+-- | Lists all of the instances in the managed instance group. Each instance
+-- in the list has a currentAction, which indicates the action that the
+-- managed instance group is performing on the instance. For example, if
+-- the group is still creating an instance, the currentAction is CREATING.
+-- If a previous action failed, the list displays the errors for that
+-- failed action.
+--
+-- /See:/ 'instanceGroupManagersListManagedInstances' smart constructor.
+data InstanceGroupManagersListManagedInstances = InstanceGroupManagersListManagedInstances
+    { _igmlmiProject              :: !Text
+    , _igmlmiInstanceGroupManager :: !Text
+    , _igmlmiZone                 :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersListManagedInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmlmiProject'
+--
+-- * 'igmlmiInstanceGroupManager'
+--
+-- * 'igmlmiZone'
+instanceGroupManagersListManagedInstances
+    :: Text -- ^ 'igmlmiProject'
+    -> Text -- ^ 'igmlmiInstanceGroupManager'
+    -> Text -- ^ 'igmlmiZone'
+    -> InstanceGroupManagersListManagedInstances
+instanceGroupManagersListManagedInstances pIgmlmiProject_ pIgmlmiInstanceGroupManager_ pIgmlmiZone_ =
+    InstanceGroupManagersListManagedInstances
+    { _igmlmiProject = pIgmlmiProject_
+    , _igmlmiInstanceGroupManager = pIgmlmiInstanceGroupManager_
+    , _igmlmiZone = pIgmlmiZone_
+    }
+
+-- | The project ID for this request.
+igmlmiProject :: Lens' InstanceGroupManagersListManagedInstances Text
+igmlmiProject
+  = lens _igmlmiProject
+      (\ s a -> s{_igmlmiProject = a})
+
+-- | The name of the managed instance group.
+igmlmiInstanceGroupManager :: Lens' InstanceGroupManagersListManagedInstances Text
+igmlmiInstanceGroupManager
+  = lens _igmlmiInstanceGroupManager
+      (\ s a -> s{_igmlmiInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmlmiZone :: Lens' InstanceGroupManagersListManagedInstances Text
+igmlmiZone
+  = lens _igmlmiZone (\ s a -> s{_igmlmiZone = a})
+
+instance GoogleRequest
+         InstanceGroupManagersListManagedInstances where
+        type Rs InstanceGroupManagersListManagedInstances =
+             InstanceGroupManagersListManagedInstancesResponse
+        requestClient
+          InstanceGroupManagersListManagedInstances{..}
+          = go _igmlmiProject _igmlmiZone
+              _igmlmiInstanceGroupManager
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           InstanceGroupManagersListManagedInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/RecreateInstances.hs
@@ -0,0 +1,143 @@
+{-# 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.Compute.InstanceGroupManagers.RecreateInstances
+-- Copyright   : (c) 2015 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)
+--
+-- Schedules a group action to recreate the specified instances in the
+-- managed instance group. The instances are deleted and recreated using
+-- the current instance template for the managed instance group. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances have not yet been recreated. You must separately verify the
+-- status of the recreating action with the listmanagedinstances method.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.recreateInstances@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
+    (
+    -- * REST Resource
+      InstanceGroupManagersRecreateInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupManagersRecreateInstances
+    , InstanceGroupManagersRecreateInstances
+
+    -- * Request Lenses
+    , igmriProject
+    , igmriInstanceGroupManager
+    , igmriZone
+    , igmriPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.recreateInstances@ method which the
+-- 'InstanceGroupManagersRecreateInstances' request conforms to.
+type InstanceGroupManagersRecreateInstancesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "recreateInstances" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           InstanceGroupManagersRecreateInstancesRequest
+                           :> Post '[JSON] Operation
+
+-- | Schedules a group action to recreate the specified instances in the
+-- managed instance group. The instances are deleted and recreated using
+-- the current instance template for the managed instance group. This
+-- operation is marked as DONE when the action is scheduled even if the
+-- instances have not yet been recreated. You must separately verify the
+-- status of the recreating action with the listmanagedinstances method.
+--
+-- /See:/ 'instanceGroupManagersRecreateInstances' smart constructor.
+data InstanceGroupManagersRecreateInstances = InstanceGroupManagersRecreateInstances
+    { _igmriProject              :: !Text
+    , _igmriInstanceGroupManager :: !Text
+    , _igmriZone                 :: !Text
+    , _igmriPayload              :: !InstanceGroupManagersRecreateInstancesRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersRecreateInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmriProject'
+--
+-- * 'igmriInstanceGroupManager'
+--
+-- * 'igmriZone'
+--
+-- * 'igmriPayload'
+instanceGroupManagersRecreateInstances
+    :: Text -- ^ 'igmriProject'
+    -> Text -- ^ 'igmriInstanceGroupManager'
+    -> Text -- ^ 'igmriZone'
+    -> InstanceGroupManagersRecreateInstancesRequest -- ^ 'igmriPayload'
+    -> InstanceGroupManagersRecreateInstances
+instanceGroupManagersRecreateInstances pIgmriProject_ pIgmriInstanceGroupManager_ pIgmriZone_ pIgmriPayload_ =
+    InstanceGroupManagersRecreateInstances
+    { _igmriProject = pIgmriProject_
+    , _igmriInstanceGroupManager = pIgmriInstanceGroupManager_
+    , _igmriZone = pIgmriZone_
+    , _igmriPayload = pIgmriPayload_
+    }
+
+-- | The project ID for this request.
+igmriProject :: Lens' InstanceGroupManagersRecreateInstances Text
+igmriProject
+  = lens _igmriProject (\ s a -> s{_igmriProject = a})
+
+-- | The name of the managed instance group.
+igmriInstanceGroupManager :: Lens' InstanceGroupManagersRecreateInstances Text
+igmriInstanceGroupManager
+  = lens _igmriInstanceGroupManager
+      (\ s a -> s{_igmriInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmriZone :: Lens' InstanceGroupManagersRecreateInstances Text
+igmriZone
+  = lens _igmriZone (\ s a -> s{_igmriZone = a})
+
+-- | Multipart request metadata.
+igmriPayload :: Lens' InstanceGroupManagersRecreateInstances InstanceGroupManagersRecreateInstancesRequest
+igmriPayload
+  = lens _igmriPayload (\ s a -> s{_igmriPayload = a})
+
+instance GoogleRequest
+         InstanceGroupManagersRecreateInstances where
+        type Rs InstanceGroupManagersRecreateInstances =
+             Operation
+        requestClient
+          InstanceGroupManagersRecreateInstances{..}
+          = go _igmriProject _igmriZone
+              _igmriInstanceGroupManager
+              (Just AltJSON)
+              _igmriPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceGroupManagersRecreateInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/Resize.hs
@@ -0,0 +1,142 @@
+{-# 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.Compute.InstanceGroupManagers.Resize
+-- Copyright   : (c) 2015 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)
+--
+-- Resizes the managed instance group. If you increase the size, the group
+-- creates new instances using the current instance template. If you
+-- decrease the size, the group deletes instances. The resize operation is
+-- marked DONE when the resize actions are scheduled even if the group has
+-- not yet added or deleted any instances. You must separately verify the
+-- status of the creating or deleting actions with the listmanagedinstances
+-- method.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.resize@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.Resize
+    (
+    -- * REST Resource
+      InstanceGroupManagersResizeResource
+
+    -- * Creating a Request
+    , instanceGroupManagersResize
+    , InstanceGroupManagersResize
+
+    -- * Request Lenses
+    , igmrProject
+    , igmrSize
+    , igmrInstanceGroupManager
+    , igmrZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.resize@ method which the
+-- 'InstanceGroupManagersResize' request conforms to.
+type InstanceGroupManagersResizeResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "resize" :>
+                       QueryParam "size" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Resizes the managed instance group. If you increase the size, the group
+-- creates new instances using the current instance template. If you
+-- decrease the size, the group deletes instances. The resize operation is
+-- marked DONE when the resize actions are scheduled even if the group has
+-- not yet added or deleted any instances. You must separately verify the
+-- status of the creating or deleting actions with the listmanagedinstances
+-- method.
+--
+-- /See:/ 'instanceGroupManagersResize' smart constructor.
+data InstanceGroupManagersResize = InstanceGroupManagersResize
+    { _igmrProject              :: !Text
+    , _igmrSize                 :: !(Textual Int32)
+    , _igmrInstanceGroupManager :: !Text
+    , _igmrZone                 :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersResize' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmrProject'
+--
+-- * 'igmrSize'
+--
+-- * 'igmrInstanceGroupManager'
+--
+-- * 'igmrZone'
+instanceGroupManagersResize
+    :: Text -- ^ 'igmrProject'
+    -> Int32 -- ^ 'igmrSize'
+    -> Text -- ^ 'igmrInstanceGroupManager'
+    -> Text -- ^ 'igmrZone'
+    -> InstanceGroupManagersResize
+instanceGroupManagersResize pIgmrProject_ pIgmrSize_ pIgmrInstanceGroupManager_ pIgmrZone_ =
+    InstanceGroupManagersResize
+    { _igmrProject = pIgmrProject_
+    , _igmrSize = _Coerce # pIgmrSize_
+    , _igmrInstanceGroupManager = pIgmrInstanceGroupManager_
+    , _igmrZone = pIgmrZone_
+    }
+
+-- | The project ID for this request.
+igmrProject :: Lens' InstanceGroupManagersResize Text
+igmrProject
+  = lens _igmrProject (\ s a -> s{_igmrProject = a})
+
+-- | The number of running instances that the managed instance group should
+-- maintain at any given time. The group automatically adds or removes
+-- instances to maintain the number of instances specified by this
+-- parameter.
+igmrSize :: Lens' InstanceGroupManagersResize Int32
+igmrSize
+  = lens _igmrSize (\ s a -> s{_igmrSize = a}) .
+      _Coerce
+
+-- | The name of the managed instance group.
+igmrInstanceGroupManager :: Lens' InstanceGroupManagersResize Text
+igmrInstanceGroupManager
+  = lens _igmrInstanceGroupManager
+      (\ s a -> s{_igmrInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmrZone :: Lens' InstanceGroupManagersResize Text
+igmrZone = lens _igmrZone (\ s a -> s{_igmrZone = a})
+
+instance GoogleRequest InstanceGroupManagersResize
+         where
+        type Rs InstanceGroupManagersResize = Operation
+        requestClient InstanceGroupManagersResize{..}
+          = go _igmrProject _igmrZone _igmrInstanceGroupManager
+              (Just _igmrSize)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupManagersResizeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetInstanceTemplate.hs
@@ -0,0 +1,141 @@
+{-# 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.Compute.InstanceGroupManagers.SetInstanceTemplate
+-- Copyright   : (c) 2015 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)
+--
+-- Specifies the instance template to use when creating new instances in
+-- this group. The templates for existing instances in the group do not
+-- change unless you recreate them.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.setInstanceTemplate@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
+    (
+    -- * REST Resource
+      InstanceGroupManagersSetInstanceTemplateResource
+
+    -- * Creating a Request
+    , instanceGroupManagersSetInstanceTemplate
+    , InstanceGroupManagersSetInstanceTemplate
+
+    -- * Request Lenses
+    , igmsitProject
+    , igmsitInstanceGroupManager
+    , igmsitZone
+    , igmsitPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.setInstanceTemplate@ method which the
+-- 'InstanceGroupManagersSetInstanceTemplate' request conforms to.
+type InstanceGroupManagersSetInstanceTemplateResource
+     =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "setInstanceTemplate" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           InstanceGroupManagersSetInstanceTemplateRequest
+                           :> Post '[JSON] Operation
+
+-- | Specifies the instance template to use when creating new instances in
+-- this group. The templates for existing instances in the group do not
+-- change unless you recreate them.
+--
+-- /See:/ 'instanceGroupManagersSetInstanceTemplate' smart constructor.
+data InstanceGroupManagersSetInstanceTemplate = InstanceGroupManagersSetInstanceTemplate
+    { _igmsitProject              :: !Text
+    , _igmsitInstanceGroupManager :: !Text
+    , _igmsitZone                 :: !Text
+    , _igmsitPayload              :: !InstanceGroupManagersSetInstanceTemplateRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersSetInstanceTemplate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmsitProject'
+--
+-- * 'igmsitInstanceGroupManager'
+--
+-- * 'igmsitZone'
+--
+-- * 'igmsitPayload'
+instanceGroupManagersSetInstanceTemplate
+    :: Text -- ^ 'igmsitProject'
+    -> Text -- ^ 'igmsitInstanceGroupManager'
+    -> Text -- ^ 'igmsitZone'
+    -> InstanceGroupManagersSetInstanceTemplateRequest -- ^ 'igmsitPayload'
+    -> InstanceGroupManagersSetInstanceTemplate
+instanceGroupManagersSetInstanceTemplate pIgmsitProject_ pIgmsitInstanceGroupManager_ pIgmsitZone_ pIgmsitPayload_ =
+    InstanceGroupManagersSetInstanceTemplate
+    { _igmsitProject = pIgmsitProject_
+    , _igmsitInstanceGroupManager = pIgmsitInstanceGroupManager_
+    , _igmsitZone = pIgmsitZone_
+    , _igmsitPayload = pIgmsitPayload_
+    }
+
+-- | The project ID for this request.
+igmsitProject :: Lens' InstanceGroupManagersSetInstanceTemplate Text
+igmsitProject
+  = lens _igmsitProject
+      (\ s a -> s{_igmsitProject = a})
+
+-- | The name of the managed instance group.
+igmsitInstanceGroupManager :: Lens' InstanceGroupManagersSetInstanceTemplate Text
+igmsitInstanceGroupManager
+  = lens _igmsitInstanceGroupManager
+      (\ s a -> s{_igmsitInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmsitZone :: Lens' InstanceGroupManagersSetInstanceTemplate Text
+igmsitZone
+  = lens _igmsitZone (\ s a -> s{_igmsitZone = a})
+
+-- | Multipart request metadata.
+igmsitPayload :: Lens' InstanceGroupManagersSetInstanceTemplate InstanceGroupManagersSetInstanceTemplateRequest
+igmsitPayload
+  = lens _igmsitPayload
+      (\ s a -> s{_igmsitPayload = a})
+
+instance GoogleRequest
+         InstanceGroupManagersSetInstanceTemplate where
+        type Rs InstanceGroupManagersSetInstanceTemplate =
+             Operation
+        requestClient
+          InstanceGroupManagersSetInstanceTemplate{..}
+          = go _igmsitProject _igmsitZone
+              _igmsitInstanceGroupManager
+              (Just AltJSON)
+              _igmsitPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           InstanceGroupManagersSetInstanceTemplateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroupManagers/SetTargetPools.hs
@@ -0,0 +1,144 @@
+{-# 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.Compute.InstanceGroupManagers.SetTargetPools
+-- Copyright   : (c) 2015 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)
+--
+-- Modifies the target pools to which all instances in this managed
+-- instance group are assigned. The target pools automatically apply to all
+-- of the instances in the managed instance group. This operation is marked
+-- DONE when you make the request even if the instances have not yet been
+-- added to their target pools. The change might take some time to apply to
+-- all of the instances in the group depending on the size of the group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroupManagers.setTargetPools@.
+module Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
+    (
+    -- * REST Resource
+      InstanceGroupManagersSetTargetPoolsResource
+
+    -- * Creating a Request
+    , instanceGroupManagersSetTargetPools
+    , InstanceGroupManagersSetTargetPools
+
+    -- * Request Lenses
+    , igmstpProject
+    , igmstpInstanceGroupManager
+    , igmstpZone
+    , igmstpPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroupManagers.setTargetPools@ method which the
+-- 'InstanceGroupManagersSetTargetPools' request conforms to.
+type InstanceGroupManagersSetTargetPoolsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroupManagers" :>
+                   Capture "instanceGroupManager" Text :>
+                     "setTargetPools" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON]
+                           InstanceGroupManagersSetTargetPoolsRequest
+                           :> Post '[JSON] Operation
+
+-- | Modifies the target pools to which all instances in this managed
+-- instance group are assigned. The target pools automatically apply to all
+-- of the instances in the managed instance group. This operation is marked
+-- DONE when you make the request even if the instances have not yet been
+-- added to their target pools. The change might take some time to apply to
+-- all of the instances in the group depending on the size of the group.
+--
+-- /See:/ 'instanceGroupManagersSetTargetPools' smart constructor.
+data InstanceGroupManagersSetTargetPools = InstanceGroupManagersSetTargetPools
+    { _igmstpProject              :: !Text
+    , _igmstpInstanceGroupManager :: !Text
+    , _igmstpZone                 :: !Text
+    , _igmstpPayload              :: !InstanceGroupManagersSetTargetPoolsRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupManagersSetTargetPools' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igmstpProject'
+--
+-- * 'igmstpInstanceGroupManager'
+--
+-- * 'igmstpZone'
+--
+-- * 'igmstpPayload'
+instanceGroupManagersSetTargetPools
+    :: Text -- ^ 'igmstpProject'
+    -> Text -- ^ 'igmstpInstanceGroupManager'
+    -> Text -- ^ 'igmstpZone'
+    -> InstanceGroupManagersSetTargetPoolsRequest -- ^ 'igmstpPayload'
+    -> InstanceGroupManagersSetTargetPools
+instanceGroupManagersSetTargetPools pIgmstpProject_ pIgmstpInstanceGroupManager_ pIgmstpZone_ pIgmstpPayload_ =
+    InstanceGroupManagersSetTargetPools
+    { _igmstpProject = pIgmstpProject_
+    , _igmstpInstanceGroupManager = pIgmstpInstanceGroupManager_
+    , _igmstpZone = pIgmstpZone_
+    , _igmstpPayload = pIgmstpPayload_
+    }
+
+-- | The project ID for this request.
+igmstpProject :: Lens' InstanceGroupManagersSetTargetPools Text
+igmstpProject
+  = lens _igmstpProject
+      (\ s a -> s{_igmstpProject = a})
+
+-- | The name of the managed instance group.
+igmstpInstanceGroupManager :: Lens' InstanceGroupManagersSetTargetPools Text
+igmstpInstanceGroupManager
+  = lens _igmstpInstanceGroupManager
+      (\ s a -> s{_igmstpInstanceGroupManager = a})
+
+-- | The name of the zone where the managed instance group is located.
+igmstpZone :: Lens' InstanceGroupManagersSetTargetPools Text
+igmstpZone
+  = lens _igmstpZone (\ s a -> s{_igmstpZone = a})
+
+-- | Multipart request metadata.
+igmstpPayload :: Lens' InstanceGroupManagersSetTargetPools InstanceGroupManagersSetTargetPoolsRequest
+igmstpPayload
+  = lens _igmstpPayload
+      (\ s a -> s{_igmstpPayload = a})
+
+instance GoogleRequest
+         InstanceGroupManagersSetTargetPools where
+        type Rs InstanceGroupManagersSetTargetPools =
+             Operation
+        requestClient InstanceGroupManagersSetTargetPools{..}
+          = go _igmstpProject _igmstpZone
+              _igmstpInstanceGroupManager
+              (Just AltJSON)
+              _igmstpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceGroupManagersSetTargetPoolsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/AddInstances.hs
@@ -0,0 +1,131 @@
+{-# 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.Compute.InstanceGroups.AddInstances
+-- Copyright   : (c) 2015 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)
+--
+-- Adds a list of instances to the specified instance group. All of the
+-- instances in the instance group must be in the same network\/subnetwork.
+-- TODO: Change to comment to state \"if IG is load balanced.\"
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.addInstances@.
+module Network.Google.Resource.Compute.InstanceGroups.AddInstances
+    (
+    -- * REST Resource
+      InstanceGroupsAddInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupsAddInstances
+    , InstanceGroupsAddInstances
+
+    -- * Request Lenses
+    , igaiProject
+    , igaiZone
+    , igaiPayload
+    , igaiInstanceGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.addInstances@ method which the
+-- 'InstanceGroupsAddInstances' request conforms to.
+type InstanceGroupsAddInstancesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   Capture "instanceGroup" Text :>
+                     "addInstances" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InstanceGroupsAddInstancesRequest :>
+                           Post '[JSON] Operation
+
+-- | Adds a list of instances to the specified instance group. All of the
+-- instances in the instance group must be in the same network\/subnetwork.
+-- TODO: Change to comment to state \"if IG is load balanced.\"
+--
+-- /See:/ 'instanceGroupsAddInstances' smart constructor.
+data InstanceGroupsAddInstances = InstanceGroupsAddInstances
+    { _igaiProject       :: !Text
+    , _igaiZone          :: !Text
+    , _igaiPayload       :: !InstanceGroupsAddInstancesRequest
+    , _igaiInstanceGroup :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsAddInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igaiProject'
+--
+-- * 'igaiZone'
+--
+-- * 'igaiPayload'
+--
+-- * 'igaiInstanceGroup'
+instanceGroupsAddInstances
+    :: Text -- ^ 'igaiProject'
+    -> Text -- ^ 'igaiZone'
+    -> InstanceGroupsAddInstancesRequest -- ^ 'igaiPayload'
+    -> Text -- ^ 'igaiInstanceGroup'
+    -> InstanceGroupsAddInstances
+instanceGroupsAddInstances pIgaiProject_ pIgaiZone_ pIgaiPayload_ pIgaiInstanceGroup_ =
+    InstanceGroupsAddInstances
+    { _igaiProject = pIgaiProject_
+    , _igaiZone = pIgaiZone_
+    , _igaiPayload = pIgaiPayload_
+    , _igaiInstanceGroup = pIgaiInstanceGroup_
+    }
+
+-- | The project ID for this request.
+igaiProject :: Lens' InstanceGroupsAddInstances Text
+igaiProject
+  = lens _igaiProject (\ s a -> s{_igaiProject = a})
+
+-- | The name of the zone where the instance group is located.
+igaiZone :: Lens' InstanceGroupsAddInstances Text
+igaiZone = lens _igaiZone (\ s a -> s{_igaiZone = a})
+
+-- | Multipart request metadata.
+igaiPayload :: Lens' InstanceGroupsAddInstances InstanceGroupsAddInstancesRequest
+igaiPayload
+  = lens _igaiPayload (\ s a -> s{_igaiPayload = a})
+
+-- | The name of the instance group where you are adding instances.
+igaiInstanceGroup :: Lens' InstanceGroupsAddInstances Text
+igaiInstanceGroup
+  = lens _igaiInstanceGroup
+      (\ s a -> s{_igaiInstanceGroup = a})
+
+instance GoogleRequest InstanceGroupsAddInstances
+         where
+        type Rs InstanceGroupsAddInstances = Operation
+        requestClient InstanceGroupsAddInstances{..}
+          = go _igaiProject _igaiZone _igaiInstanceGroup
+              (Just AltJSON)
+              _igaiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsAddInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/AggregatedList.hs
@@ -0,0 +1,139 @@
+{-# 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.Compute.InstanceGroups.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of instance groups and sorts them by zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.aggregatedList@.
+module Network.Google.Resource.Compute.InstanceGroups.AggregatedList
+    (
+    -- * REST Resource
+      InstanceGroupsAggregatedListResource
+
+    -- * Creating a Request
+    , instanceGroupsAggregatedList
+    , InstanceGroupsAggregatedList
+
+    -- * Request Lenses
+    , igalProject
+    , igalFilter
+    , igalPageToken
+    , igalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.aggregatedList@ method which the
+-- 'InstanceGroupsAggregatedList' request conforms to.
+type InstanceGroupsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "instanceGroups" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] InstanceGroupAggregatedList
+
+-- | Retrieves the list of instance groups and sorts them by zone.
+--
+-- /See:/ 'instanceGroupsAggregatedList' smart constructor.
+data InstanceGroupsAggregatedList = InstanceGroupsAggregatedList
+    { _igalProject    :: !Text
+    , _igalFilter     :: !(Maybe Text)
+    , _igalPageToken  :: !(Maybe Text)
+    , _igalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igalProject'
+--
+-- * 'igalFilter'
+--
+-- * 'igalPageToken'
+--
+-- * 'igalMaxResults'
+instanceGroupsAggregatedList
+    :: Text -- ^ 'igalProject'
+    -> InstanceGroupsAggregatedList
+instanceGroupsAggregatedList pIgalProject_ =
+    InstanceGroupsAggregatedList
+    { _igalProject = pIgalProject_
+    , _igalFilter = Nothing
+    , _igalPageToken = Nothing
+    , _igalMaxResults = 500
+    }
+
+-- | The project ID for this request.
+igalProject :: Lens' InstanceGroupsAggregatedList Text
+igalProject
+  = lens _igalProject (\ s a -> s{_igalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+igalFilter :: Lens' InstanceGroupsAggregatedList (Maybe Text)
+igalFilter
+  = lens _igalFilter (\ s a -> s{_igalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+igalPageToken :: Lens' InstanceGroupsAggregatedList (Maybe Text)
+igalPageToken
+  = lens _igalPageToken
+      (\ s a -> s{_igalPageToken = a})
+
+-- | Maximum count of results to be returned.
+igalMaxResults :: Lens' InstanceGroupsAggregatedList Word32
+igalMaxResults
+  = lens _igalMaxResults
+      (\ s a -> s{_igalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstanceGroupsAggregatedList
+         where
+        type Rs InstanceGroupsAggregatedList =
+             InstanceGroupAggregatedList
+        requestClient InstanceGroupsAggregatedList{..}
+          = go _igalProject _igalFilter _igalPageToken
+              (Just _igalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/Delete.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.InstanceGroups.Delete
+-- Copyright   : (c) 2015 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 the specified instance group. The instances in the group are not
+-- deleted.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.delete@.
+module Network.Google.Resource.Compute.InstanceGroups.Delete
+    (
+    -- * REST Resource
+      InstanceGroupsDeleteResource
+
+    -- * Creating a Request
+    , instanceGroupsDelete
+    , InstanceGroupsDelete
+
+    -- * Request Lenses
+    , igdProject
+    , igdZone
+    , igdInstanceGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.delete@ method which the
+-- 'InstanceGroupsDelete' request conforms to.
+type InstanceGroupsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   Capture "instanceGroup" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified instance group. The instances in the group are not
+-- deleted.
+--
+-- /See:/ 'instanceGroupsDelete' smart constructor.
+data InstanceGroupsDelete = InstanceGroupsDelete
+    { _igdProject       :: !Text
+    , _igdZone          :: !Text
+    , _igdInstanceGroup :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igdProject'
+--
+-- * 'igdZone'
+--
+-- * 'igdInstanceGroup'
+instanceGroupsDelete
+    :: Text -- ^ 'igdProject'
+    -> Text -- ^ 'igdZone'
+    -> Text -- ^ 'igdInstanceGroup'
+    -> InstanceGroupsDelete
+instanceGroupsDelete pIgdProject_ pIgdZone_ pIgdInstanceGroup_ =
+    InstanceGroupsDelete
+    { _igdProject = pIgdProject_
+    , _igdZone = pIgdZone_
+    , _igdInstanceGroup = pIgdInstanceGroup_
+    }
+
+-- | The project ID for this request.
+igdProject :: Lens' InstanceGroupsDelete Text
+igdProject
+  = lens _igdProject (\ s a -> s{_igdProject = a})
+
+-- | The name of the zone where the instance group is located.
+igdZone :: Lens' InstanceGroupsDelete Text
+igdZone = lens _igdZone (\ s a -> s{_igdZone = a})
+
+-- | The name of the instance group to delete.
+igdInstanceGroup :: Lens' InstanceGroupsDelete Text
+igdInstanceGroup
+  = lens _igdInstanceGroup
+      (\ s a -> s{_igdInstanceGroup = a})
+
+instance GoogleRequest InstanceGroupsDelete where
+        type Rs InstanceGroupsDelete = Operation
+        requestClient InstanceGroupsDelete{..}
+          = go _igdProject _igdZone _igdInstanceGroup
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/Get.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.InstanceGroups.Get
+-- Copyright   : (c) 2015 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 the specified instance group resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.get@.
+module Network.Google.Resource.Compute.InstanceGroups.Get
+    (
+    -- * REST Resource
+      InstanceGroupsGetResource
+
+    -- * Creating a Request
+    , instanceGroupsGet
+    , InstanceGroupsGet
+
+    -- * Request Lenses
+    , iggProject
+    , iggZone
+    , iggInstanceGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.get@ method which the
+-- 'InstanceGroupsGet' request conforms to.
+type InstanceGroupsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   Capture "instanceGroup" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] InstanceGroup
+
+-- | Returns the specified instance group resource.
+--
+-- /See:/ 'instanceGroupsGet' smart constructor.
+data InstanceGroupsGet = InstanceGroupsGet
+    { _iggProject       :: !Text
+    , _iggZone          :: !Text
+    , _iggInstanceGroup :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iggProject'
+--
+-- * 'iggZone'
+--
+-- * 'iggInstanceGroup'
+instanceGroupsGet
+    :: Text -- ^ 'iggProject'
+    -> Text -- ^ 'iggZone'
+    -> Text -- ^ 'iggInstanceGroup'
+    -> InstanceGroupsGet
+instanceGroupsGet pIggProject_ pIggZone_ pIggInstanceGroup_ =
+    InstanceGroupsGet
+    { _iggProject = pIggProject_
+    , _iggZone = pIggZone_
+    , _iggInstanceGroup = pIggInstanceGroup_
+    }
+
+-- | The project ID for this request.
+iggProject :: Lens' InstanceGroupsGet Text
+iggProject
+  = lens _iggProject (\ s a -> s{_iggProject = a})
+
+-- | The name of the zone where the instance group is located.
+iggZone :: Lens' InstanceGroupsGet Text
+iggZone = lens _iggZone (\ s a -> s{_iggZone = a})
+
+-- | The name of the instance group.
+iggInstanceGroup :: Lens' InstanceGroupsGet Text
+iggInstanceGroup
+  = lens _iggInstanceGroup
+      (\ s a -> s{_iggInstanceGroup = a})
+
+instance GoogleRequest InstanceGroupsGet where
+        type Rs InstanceGroupsGet = InstanceGroup
+        requestClient InstanceGroupsGet{..}
+          = go _iggProject _iggZone _iggInstanceGroup
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/Insert.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.InstanceGroups.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an instance group in the specified project using the parameters
+-- that are included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.insert@.
+module Network.Google.Resource.Compute.InstanceGroups.Insert
+    (
+    -- * REST Resource
+      InstanceGroupsInsertResource
+
+    -- * Creating a Request
+    , instanceGroupsInsert
+    , InstanceGroupsInsert
+
+    -- * Request Lenses
+    , igiProject
+    , igiZone
+    , igiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.insert@ method which the
+-- 'InstanceGroupsInsert' request conforms to.
+type InstanceGroupsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] InstanceGroup :>
+                       Post '[JSON] Operation
+
+-- | Creates an instance group in the specified project using the parameters
+-- that are included in the request.
+--
+-- /See:/ 'instanceGroupsInsert' smart constructor.
+data InstanceGroupsInsert = InstanceGroupsInsert
+    { _igiProject :: !Text
+    , _igiZone    :: !Text
+    , _igiPayload :: !InstanceGroup
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igiProject'
+--
+-- * 'igiZone'
+--
+-- * 'igiPayload'
+instanceGroupsInsert
+    :: Text -- ^ 'igiProject'
+    -> Text -- ^ 'igiZone'
+    -> InstanceGroup -- ^ 'igiPayload'
+    -> InstanceGroupsInsert
+instanceGroupsInsert pIgiProject_ pIgiZone_ pIgiPayload_ =
+    InstanceGroupsInsert
+    { _igiProject = pIgiProject_
+    , _igiZone = pIgiZone_
+    , _igiPayload = pIgiPayload_
+    }
+
+-- | The project ID for this request.
+igiProject :: Lens' InstanceGroupsInsert Text
+igiProject
+  = lens _igiProject (\ s a -> s{_igiProject = a})
+
+-- | The name of the zone where you want to create the instance group.
+igiZone :: Lens' InstanceGroupsInsert Text
+igiZone = lens _igiZone (\ s a -> s{_igiZone = a})
+
+-- | Multipart request metadata.
+igiPayload :: Lens' InstanceGroupsInsert InstanceGroup
+igiPayload
+  = lens _igiPayload (\ s a -> s{_igiPayload = a})
+
+instance GoogleRequest InstanceGroupsInsert where
+        type Rs InstanceGroupsInsert = Operation
+        requestClient InstanceGroupsInsert{..}
+          = go _igiProject _igiZone (Just AltJSON) _igiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/List.hs
@@ -0,0 +1,149 @@
+{-# 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.Compute.InstanceGroups.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of instance groups that are located in the specified
+-- project and zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.list@.
+module Network.Google.Resource.Compute.InstanceGroups.List
+    (
+    -- * REST Resource
+      InstanceGroupsListResource
+
+    -- * Creating a Request
+    , instanceGroupsList
+    , InstanceGroupsList
+
+    -- * Request Lenses
+    , iglProject
+    , iglZone
+    , iglFilter
+    , iglPageToken
+    , iglMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.list@ method which the
+-- 'InstanceGroupsList' request conforms to.
+type InstanceGroupsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] InstanceGroupList
+
+-- | Retrieves the list of instance groups that are located in the specified
+-- project and zone.
+--
+-- /See:/ 'instanceGroupsList' smart constructor.
+data InstanceGroupsList = InstanceGroupsList
+    { _iglProject    :: !Text
+    , _iglZone       :: !Text
+    , _iglFilter     :: !(Maybe Text)
+    , _iglPageToken  :: !(Maybe Text)
+    , _iglMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iglProject'
+--
+-- * 'iglZone'
+--
+-- * 'iglFilter'
+--
+-- * 'iglPageToken'
+--
+-- * 'iglMaxResults'
+instanceGroupsList
+    :: Text -- ^ 'iglProject'
+    -> Text -- ^ 'iglZone'
+    -> InstanceGroupsList
+instanceGroupsList pIglProject_ pIglZone_ =
+    InstanceGroupsList
+    { _iglProject = pIglProject_
+    , _iglZone = pIglZone_
+    , _iglFilter = Nothing
+    , _iglPageToken = Nothing
+    , _iglMaxResults = 500
+    }
+
+-- | The project ID for this request.
+iglProject :: Lens' InstanceGroupsList Text
+iglProject
+  = lens _iglProject (\ s a -> s{_iglProject = a})
+
+-- | The name of the zone where the instance group is located.
+iglZone :: Lens' InstanceGroupsList Text
+iglZone = lens _iglZone (\ s a -> s{_iglZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+iglFilter :: Lens' InstanceGroupsList (Maybe Text)
+iglFilter
+  = lens _iglFilter (\ s a -> s{_iglFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+iglPageToken :: Lens' InstanceGroupsList (Maybe Text)
+iglPageToken
+  = lens _iglPageToken (\ s a -> s{_iglPageToken = a})
+
+-- | Maximum count of results to be returned.
+iglMaxResults :: Lens' InstanceGroupsList Word32
+iglMaxResults
+  = lens _iglMaxResults
+      (\ s a -> s{_iglMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstanceGroupsList where
+        type Rs InstanceGroupsList = InstanceGroupList
+        requestClient InstanceGroupsList{..}
+          = go _iglProject _iglZone _iglFilter _iglPageToken
+              (Just _iglMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/ListInstances.hs
@@ -0,0 +1,181 @@
+{-# 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.Compute.InstanceGroups.ListInstances
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the instances in the specified instance group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.listInstances@.
+module Network.Google.Resource.Compute.InstanceGroups.ListInstances
+    (
+    -- * REST Resource
+      InstanceGroupsListInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupsListInstances'
+    , InstanceGroupsListInstances'
+
+    -- * Request Lenses
+    , igliProject
+    , igliZone
+    , igliPayload
+    , igliFilter
+    , igliPageToken
+    , igliInstanceGroup
+    , igliMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.listInstances@ method which the
+-- 'InstanceGroupsListInstances'' request conforms to.
+type InstanceGroupsListInstancesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   Capture "instanceGroup" Text :>
+                     "listInstances" :>
+                       QueryParam "filter" Text :>
+                         QueryParam "pageToken" Text :>
+                           QueryParam "maxResults" (Textual Word32) :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON]
+                                 InstanceGroupsListInstancesRequest
+                                 :> Post '[JSON] InstanceGroupsListInstances
+
+-- | Lists the instances in the specified instance group.
+--
+-- /See:/ 'instanceGroupsListInstances'' smart constructor.
+data InstanceGroupsListInstances' = InstanceGroupsListInstances'
+    { _igliProject       :: !Text
+    , _igliZone          :: !Text
+    , _igliPayload       :: !InstanceGroupsListInstancesRequest
+    , _igliFilter        :: !(Maybe Text)
+    , _igliPageToken     :: !(Maybe Text)
+    , _igliInstanceGroup :: !Text
+    , _igliMaxResults    :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsListInstances'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igliProject'
+--
+-- * 'igliZone'
+--
+-- * 'igliPayload'
+--
+-- * 'igliFilter'
+--
+-- * 'igliPageToken'
+--
+-- * 'igliInstanceGroup'
+--
+-- * 'igliMaxResults'
+instanceGroupsListInstances'
+    :: Text -- ^ 'igliProject'
+    -> Text -- ^ 'igliZone'
+    -> InstanceGroupsListInstancesRequest -- ^ 'igliPayload'
+    -> Text -- ^ 'igliInstanceGroup'
+    -> InstanceGroupsListInstances'
+instanceGroupsListInstances' pIgliProject_ pIgliZone_ pIgliPayload_ pIgliInstanceGroup_ =
+    InstanceGroupsListInstances'
+    { _igliProject = pIgliProject_
+    , _igliZone = pIgliZone_
+    , _igliPayload = pIgliPayload_
+    , _igliFilter = Nothing
+    , _igliPageToken = Nothing
+    , _igliInstanceGroup = pIgliInstanceGroup_
+    , _igliMaxResults = 500
+    }
+
+-- | The project ID for this request.
+igliProject :: Lens' InstanceGroupsListInstances' Text
+igliProject
+  = lens _igliProject (\ s a -> s{_igliProject = a})
+
+-- | The name of the zone where the instance group is located.
+igliZone :: Lens' InstanceGroupsListInstances' Text
+igliZone = lens _igliZone (\ s a -> s{_igliZone = a})
+
+-- | Multipart request metadata.
+igliPayload :: Lens' InstanceGroupsListInstances' InstanceGroupsListInstancesRequest
+igliPayload
+  = lens _igliPayload (\ s a -> s{_igliPayload = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+igliFilter :: Lens' InstanceGroupsListInstances' (Maybe Text)
+igliFilter
+  = lens _igliFilter (\ s a -> s{_igliFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+igliPageToken :: Lens' InstanceGroupsListInstances' (Maybe Text)
+igliPageToken
+  = lens _igliPageToken
+      (\ s a -> s{_igliPageToken = a})
+
+-- | The name of the instance group from which you want to generate a list of
+-- included instances.
+igliInstanceGroup :: Lens' InstanceGroupsListInstances' Text
+igliInstanceGroup
+  = lens _igliInstanceGroup
+      (\ s a -> s{_igliInstanceGroup = a})
+
+-- | Maximum count of results to be returned.
+igliMaxResults :: Lens' InstanceGroupsListInstances' Word32
+igliMaxResults
+  = lens _igliMaxResults
+      (\ s a -> s{_igliMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstanceGroupsListInstances'
+         where
+        type Rs InstanceGroupsListInstances' =
+             InstanceGroupsListInstances
+        requestClient InstanceGroupsListInstances'{..}
+          = go _igliProject _igliZone _igliInstanceGroup
+              _igliFilter
+              _igliPageToken
+              (Just _igliMaxResults)
+              (Just AltJSON)
+              _igliPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsListInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/RemoveInstances.hs
@@ -0,0 +1,131 @@
+{-# 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.Compute.InstanceGroups.RemoveInstances
+-- Copyright   : (c) 2015 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)
+--
+-- Removes one or more instances from the specified instance group, but
+-- does not delete those instances.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.removeInstances@.
+module Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
+    (
+    -- * REST Resource
+      InstanceGroupsRemoveInstancesResource
+
+    -- * Creating a Request
+    , instanceGroupsRemoveInstances
+    , InstanceGroupsRemoveInstances
+
+    -- * Request Lenses
+    , igriProject
+    , igriZone
+    , igriPayload
+    , igriInstanceGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.removeInstances@ method which the
+-- 'InstanceGroupsRemoveInstances' request conforms to.
+type InstanceGroupsRemoveInstancesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   Capture "instanceGroup" Text :>
+                     "removeInstances" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InstanceGroupsRemoveInstancesRequest
+                           :> Post '[JSON] Operation
+
+-- | Removes one or more instances from the specified instance group, but
+-- does not delete those instances.
+--
+-- /See:/ 'instanceGroupsRemoveInstances' smart constructor.
+data InstanceGroupsRemoveInstances = InstanceGroupsRemoveInstances
+    { _igriProject       :: !Text
+    , _igriZone          :: !Text
+    , _igriPayload       :: !InstanceGroupsRemoveInstancesRequest
+    , _igriInstanceGroup :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsRemoveInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igriProject'
+--
+-- * 'igriZone'
+--
+-- * 'igriPayload'
+--
+-- * 'igriInstanceGroup'
+instanceGroupsRemoveInstances
+    :: Text -- ^ 'igriProject'
+    -> Text -- ^ 'igriZone'
+    -> InstanceGroupsRemoveInstancesRequest -- ^ 'igriPayload'
+    -> Text -- ^ 'igriInstanceGroup'
+    -> InstanceGroupsRemoveInstances
+instanceGroupsRemoveInstances pIgriProject_ pIgriZone_ pIgriPayload_ pIgriInstanceGroup_ =
+    InstanceGroupsRemoveInstances
+    { _igriProject = pIgriProject_
+    , _igriZone = pIgriZone_
+    , _igriPayload = pIgriPayload_
+    , _igriInstanceGroup = pIgriInstanceGroup_
+    }
+
+-- | The project ID for this request.
+igriProject :: Lens' InstanceGroupsRemoveInstances Text
+igriProject
+  = lens _igriProject (\ s a -> s{_igriProject = a})
+
+-- | The name of the zone where the instance group is located.
+igriZone :: Lens' InstanceGroupsRemoveInstances Text
+igriZone = lens _igriZone (\ s a -> s{_igriZone = a})
+
+-- | Multipart request metadata.
+igriPayload :: Lens' InstanceGroupsRemoveInstances InstanceGroupsRemoveInstancesRequest
+igriPayload
+  = lens _igriPayload (\ s a -> s{_igriPayload = a})
+
+-- | The name of the instance group where the specified instances will be
+-- removed.
+igriInstanceGroup :: Lens' InstanceGroupsRemoveInstances Text
+igriInstanceGroup
+  = lens _igriInstanceGroup
+      (\ s a -> s{_igriInstanceGroup = a})
+
+instance GoogleRequest InstanceGroupsRemoveInstances
+         where
+        type Rs InstanceGroupsRemoveInstances = Operation
+        requestClient InstanceGroupsRemoveInstances{..}
+          = go _igriProject _igriZone _igriInstanceGroup
+              (Just AltJSON)
+              _igriPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy InstanceGroupsRemoveInstancesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs b/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceGroups/SetNamedPorts.hs
@@ -0,0 +1,128 @@
+{-# 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.Compute.InstanceGroups.SetNamedPorts
+-- Copyright   : (c) 2015 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 named ports for the specified instance group.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceGroups.setNamedPorts@.
+module Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
+    (
+    -- * REST Resource
+      InstanceGroupsSetNamedPortsResource
+
+    -- * Creating a Request
+    , instanceGroupsSetNamedPorts
+    , InstanceGroupsSetNamedPorts
+
+    -- * Request Lenses
+    , igsnpProject
+    , igsnpZone
+    , igsnpPayload
+    , igsnpInstanceGroup
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceGroups.setNamedPorts@ method which the
+-- 'InstanceGroupsSetNamedPorts' request conforms to.
+type InstanceGroupsSetNamedPortsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instanceGroups" :>
+                   Capture "instanceGroup" Text :>
+                     "setNamedPorts" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InstanceGroupsSetNamedPortsRequest :>
+                           Post '[JSON] Operation
+
+-- | Sets the named ports for the specified instance group.
+--
+-- /See:/ 'instanceGroupsSetNamedPorts' smart constructor.
+data InstanceGroupsSetNamedPorts = InstanceGroupsSetNamedPorts
+    { _igsnpProject       :: !Text
+    , _igsnpZone          :: !Text
+    , _igsnpPayload       :: !InstanceGroupsSetNamedPortsRequest
+    , _igsnpInstanceGroup :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceGroupsSetNamedPorts' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igsnpProject'
+--
+-- * 'igsnpZone'
+--
+-- * 'igsnpPayload'
+--
+-- * 'igsnpInstanceGroup'
+instanceGroupsSetNamedPorts
+    :: Text -- ^ 'igsnpProject'
+    -> Text -- ^ 'igsnpZone'
+    -> InstanceGroupsSetNamedPortsRequest -- ^ 'igsnpPayload'
+    -> Text -- ^ 'igsnpInstanceGroup'
+    -> InstanceGroupsSetNamedPorts
+instanceGroupsSetNamedPorts pIgsnpProject_ pIgsnpZone_ pIgsnpPayload_ pIgsnpInstanceGroup_ =
+    InstanceGroupsSetNamedPorts
+    { _igsnpProject = pIgsnpProject_
+    , _igsnpZone = pIgsnpZone_
+    , _igsnpPayload = pIgsnpPayload_
+    , _igsnpInstanceGroup = pIgsnpInstanceGroup_
+    }
+
+-- | The project ID for this request.
+igsnpProject :: Lens' InstanceGroupsSetNamedPorts Text
+igsnpProject
+  = lens _igsnpProject (\ s a -> s{_igsnpProject = a})
+
+-- | The name of the zone where the instance group is located.
+igsnpZone :: Lens' InstanceGroupsSetNamedPorts Text
+igsnpZone
+  = lens _igsnpZone (\ s a -> s{_igsnpZone = a})
+
+-- | Multipart request metadata.
+igsnpPayload :: Lens' InstanceGroupsSetNamedPorts InstanceGroupsSetNamedPortsRequest
+igsnpPayload
+  = lens _igsnpPayload (\ s a -> s{_igsnpPayload = a})
+
+-- | The name of the instance group where the named ports are updated.
+igsnpInstanceGroup :: Lens' InstanceGroupsSetNamedPorts Text
+igsnpInstanceGroup
+  = lens _igsnpInstanceGroup
+      (\ s a -> s{_igsnpInstanceGroup = a})
+
+instance GoogleRequest InstanceGroupsSetNamedPorts
+         where
+        type Rs InstanceGroupsSetNamedPorts = Operation
+        requestClient InstanceGroupsSetNamedPorts{..}
+          = go _igsnpProject _igsnpZone _igsnpInstanceGroup
+              (Just AltJSON)
+              _igsnpPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceGroupsSetNamedPortsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/Delete.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.InstanceTemplates.Delete
+-- Copyright   : (c) 2015 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 the specified instance template.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.delete@.
+module Network.Google.Resource.Compute.InstanceTemplates.Delete
+    (
+    -- * REST Resource
+      InstanceTemplatesDeleteResource
+
+    -- * Creating a Request
+    , instanceTemplatesDelete
+    , InstanceTemplatesDelete
+
+    -- * Request Lenses
+    , itdProject
+    , itdInstanceTemplate
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.delete@ method which the
+-- 'InstanceTemplatesDelete' request conforms to.
+type InstanceTemplatesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 Capture "instanceTemplate" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified instance template.
+--
+-- /See:/ 'instanceTemplatesDelete' smart constructor.
+data InstanceTemplatesDelete = InstanceTemplatesDelete
+    { _itdProject          :: !Text
+    , _itdInstanceTemplate :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itdProject'
+--
+-- * 'itdInstanceTemplate'
+instanceTemplatesDelete
+    :: Text -- ^ 'itdProject'
+    -> Text -- ^ 'itdInstanceTemplate'
+    -> InstanceTemplatesDelete
+instanceTemplatesDelete pItdProject_ pItdInstanceTemplate_ =
+    InstanceTemplatesDelete
+    { _itdProject = pItdProject_
+    , _itdInstanceTemplate = pItdInstanceTemplate_
+    }
+
+-- | The project ID for this request.
+itdProject :: Lens' InstanceTemplatesDelete Text
+itdProject
+  = lens _itdProject (\ s a -> s{_itdProject = a})
+
+-- | The name of the instance template to delete.
+itdInstanceTemplate :: Lens' InstanceTemplatesDelete Text
+itdInstanceTemplate
+  = lens _itdInstanceTemplate
+      (\ s a -> s{_itdInstanceTemplate = a})
+
+instance GoogleRequest InstanceTemplatesDelete where
+        type Rs InstanceTemplatesDelete = Operation
+        requestClient InstanceTemplatesDelete{..}
+          = go _itdProject _itdInstanceTemplate (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceTemplatesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/Get.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.InstanceTemplates.Get
+-- Copyright   : (c) 2015 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 the specified instance template resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.get@.
+module Network.Google.Resource.Compute.InstanceTemplates.Get
+    (
+    -- * REST Resource
+      InstanceTemplatesGetResource
+
+    -- * Creating a Request
+    , instanceTemplatesGet
+    , InstanceTemplatesGet
+
+    -- * Request Lenses
+    , itgProject
+    , itgInstanceTemplate
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.get@ method which the
+-- 'InstanceTemplatesGet' request conforms to.
+type InstanceTemplatesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 Capture "instanceTemplate" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] InstanceTemplate
+
+-- | Returns the specified instance template resource.
+--
+-- /See:/ 'instanceTemplatesGet' smart constructor.
+data InstanceTemplatesGet = InstanceTemplatesGet
+    { _itgProject          :: !Text
+    , _itgInstanceTemplate :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itgProject'
+--
+-- * 'itgInstanceTemplate'
+instanceTemplatesGet
+    :: Text -- ^ 'itgProject'
+    -> Text -- ^ 'itgInstanceTemplate'
+    -> InstanceTemplatesGet
+instanceTemplatesGet pItgProject_ pItgInstanceTemplate_ =
+    InstanceTemplatesGet
+    { _itgProject = pItgProject_
+    , _itgInstanceTemplate = pItgInstanceTemplate_
+    }
+
+-- | The project ID for this request.
+itgProject :: Lens' InstanceTemplatesGet Text
+itgProject
+  = lens _itgProject (\ s a -> s{_itgProject = a})
+
+-- | The name of the instance template.
+itgInstanceTemplate :: Lens' InstanceTemplatesGet Text
+itgInstanceTemplate
+  = lens _itgInstanceTemplate
+      (\ s a -> s{_itgInstanceTemplate = a})
+
+instance GoogleRequest InstanceTemplatesGet where
+        type Rs InstanceTemplatesGet = InstanceTemplate
+        requestClient InstanceTemplatesGet{..}
+          = go _itgProject _itgInstanceTemplate (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceTemplatesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/Insert.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.InstanceTemplates.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an instance template in the specified project using the data
+-- that is included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.insert@.
+module Network.Google.Resource.Compute.InstanceTemplates.Insert
+    (
+    -- * REST Resource
+      InstanceTemplatesInsertResource
+
+    -- * Creating a Request
+    , instanceTemplatesInsert
+    , InstanceTemplatesInsert
+
+    -- * Request Lenses
+    , itiProject
+    , itiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.insert@ method which the
+-- 'InstanceTemplatesInsert' request conforms to.
+type InstanceTemplatesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] InstanceTemplate :>
+                     Post '[JSON] Operation
+
+-- | Creates an instance template in the specified project using the data
+-- that is included in the request.
+--
+-- /See:/ 'instanceTemplatesInsert' smart constructor.
+data InstanceTemplatesInsert = InstanceTemplatesInsert
+    { _itiProject :: !Text
+    , _itiPayload :: !InstanceTemplate
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itiProject'
+--
+-- * 'itiPayload'
+instanceTemplatesInsert
+    :: Text -- ^ 'itiProject'
+    -> InstanceTemplate -- ^ 'itiPayload'
+    -> InstanceTemplatesInsert
+instanceTemplatesInsert pItiProject_ pItiPayload_ =
+    InstanceTemplatesInsert
+    { _itiProject = pItiProject_
+    , _itiPayload = pItiPayload_
+    }
+
+-- | The project ID for this request.
+itiProject :: Lens' InstanceTemplatesInsert Text
+itiProject
+  = lens _itiProject (\ s a -> s{_itiProject = a})
+
+-- | Multipart request metadata.
+itiPayload :: Lens' InstanceTemplatesInsert InstanceTemplate
+itiPayload
+  = lens _itiPayload (\ s a -> s{_itiPayload = a})
+
+instance GoogleRequest InstanceTemplatesInsert where
+        type Rs InstanceTemplatesInsert = Operation
+        requestClient InstanceTemplatesInsert{..}
+          = go _itiProject (Just AltJSON) _itiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceTemplatesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs b/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/InstanceTemplates/List.hs
@@ -0,0 +1,138 @@
+{-# 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.Compute.InstanceTemplates.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves a list of instance templates that are contained within the
+-- specified project and zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instanceTemplates.list@.
+module Network.Google.Resource.Compute.InstanceTemplates.List
+    (
+    -- * REST Resource
+      InstanceTemplatesListResource
+
+    -- * Creating a Request
+    , instanceTemplatesList
+    , InstanceTemplatesList
+
+    -- * Request Lenses
+    , itlProject
+    , itlFilter
+    , itlPageToken
+    , itlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instanceTemplates.list@ method which the
+-- 'InstanceTemplatesList' request conforms to.
+type InstanceTemplatesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "instanceTemplates" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] InstanceTemplateList
+
+-- | Retrieves a list of instance templates that are contained within the
+-- specified project and zone.
+--
+-- /See:/ 'instanceTemplatesList' smart constructor.
+data InstanceTemplatesList = InstanceTemplatesList
+    { _itlProject    :: !Text
+    , _itlFilter     :: !(Maybe Text)
+    , _itlPageToken  :: !(Maybe Text)
+    , _itlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceTemplatesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'itlProject'
+--
+-- * 'itlFilter'
+--
+-- * 'itlPageToken'
+--
+-- * 'itlMaxResults'
+instanceTemplatesList
+    :: Text -- ^ 'itlProject'
+    -> InstanceTemplatesList
+instanceTemplatesList pItlProject_ =
+    InstanceTemplatesList
+    { _itlProject = pItlProject_
+    , _itlFilter = Nothing
+    , _itlPageToken = Nothing
+    , _itlMaxResults = 500
+    }
+
+-- | The project ID for this request.
+itlProject :: Lens' InstanceTemplatesList Text
+itlProject
+  = lens _itlProject (\ s a -> s{_itlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+itlFilter :: Lens' InstanceTemplatesList (Maybe Text)
+itlFilter
+  = lens _itlFilter (\ s a -> s{_itlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+itlPageToken :: Lens' InstanceTemplatesList (Maybe Text)
+itlPageToken
+  = lens _itlPageToken (\ s a -> s{_itlPageToken = a})
+
+-- | Maximum count of results to be returned.
+itlMaxResults :: Lens' InstanceTemplatesList Word32
+itlMaxResults
+  = lens _itlMaxResults
+      (\ s a -> s{_itlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstanceTemplatesList where
+        type Rs InstanceTemplatesList = InstanceTemplateList
+        requestClient InstanceTemplatesList{..}
+          = go _itlProject _itlFilter _itlPageToken
+              (Just _itlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstanceTemplatesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs b/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/AddAccessConfig.hs
@@ -0,0 +1,139 @@
+{-# 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.Compute.Instances.AddAccessConfig
+-- Copyright   : (c) 2015 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)
+--
+-- Adds an access config to an instance\'s network interface.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.addAccessConfig@.
+module Network.Google.Resource.Compute.Instances.AddAccessConfig
+    (
+    -- * REST Resource
+      InstancesAddAccessConfigResource
+
+    -- * Creating a Request
+    , instancesAddAccessConfig
+    , InstancesAddAccessConfig
+
+    -- * Request Lenses
+    , iaacProject
+    , iaacNetworkInterface
+    , iaacZone
+    , iaacPayload
+    , iaacInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.addAccessConfig@ method which the
+-- 'InstancesAddAccessConfig' request conforms to.
+type InstancesAddAccessConfigResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "addAccessConfig" :>
+                       QueryParam "networkInterface" Text :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] AccessConfig :>
+                             Post '[JSON] Operation
+
+-- | Adds an access config to an instance\'s network interface.
+--
+-- /See:/ 'instancesAddAccessConfig' smart constructor.
+data InstancesAddAccessConfig = InstancesAddAccessConfig
+    { _iaacProject          :: !Text
+    , _iaacNetworkInterface :: !Text
+    , _iaacZone             :: !Text
+    , _iaacPayload          :: !AccessConfig
+    , _iaacInstance         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesAddAccessConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaacProject'
+--
+-- * 'iaacNetworkInterface'
+--
+-- * 'iaacZone'
+--
+-- * 'iaacPayload'
+--
+-- * 'iaacInstance'
+instancesAddAccessConfig
+    :: Text -- ^ 'iaacProject'
+    -> Text -- ^ 'iaacNetworkInterface'
+    -> Text -- ^ 'iaacZone'
+    -> AccessConfig -- ^ 'iaacPayload'
+    -> Text -- ^ 'iaacInstance'
+    -> InstancesAddAccessConfig
+instancesAddAccessConfig pIaacProject_ pIaacNetworkInterface_ pIaacZone_ pIaacPayload_ pIaacInstance_ =
+    InstancesAddAccessConfig
+    { _iaacProject = pIaacProject_
+    , _iaacNetworkInterface = pIaacNetworkInterface_
+    , _iaacZone = pIaacZone_
+    , _iaacPayload = pIaacPayload_
+    , _iaacInstance = pIaacInstance_
+    }
+
+-- | Project ID for this request.
+iaacProject :: Lens' InstancesAddAccessConfig Text
+iaacProject
+  = lens _iaacProject (\ s a -> s{_iaacProject = a})
+
+-- | The name of the network interface to add to this instance.
+iaacNetworkInterface :: Lens' InstancesAddAccessConfig Text
+iaacNetworkInterface
+  = lens _iaacNetworkInterface
+      (\ s a -> s{_iaacNetworkInterface = a})
+
+-- | The name of the zone for this request.
+iaacZone :: Lens' InstancesAddAccessConfig Text
+iaacZone = lens _iaacZone (\ s a -> s{_iaacZone = a})
+
+-- | Multipart request metadata.
+iaacPayload :: Lens' InstancesAddAccessConfig AccessConfig
+iaacPayload
+  = lens _iaacPayload (\ s a -> s{_iaacPayload = a})
+
+-- | The instance name for this request.
+iaacInstance :: Lens' InstancesAddAccessConfig Text
+iaacInstance
+  = lens _iaacInstance (\ s a -> s{_iaacInstance = a})
+
+instance GoogleRequest InstancesAddAccessConfig where
+        type Rs InstancesAddAccessConfig = Operation
+        requestClient InstancesAddAccessConfig{..}
+          = go _iaacProject _iaacZone _iaacInstance
+              (Just _iaacNetworkInterface)
+              (Just AltJSON)
+              _iaacPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesAddAccessConfigResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs b/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/AggregatedList.hs
@@ -0,0 +1,137 @@
+{-# 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.Compute.Instances.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves aggregated list of instance resources.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.aggregatedList@.
+module Network.Google.Resource.Compute.Instances.AggregatedList
+    (
+    -- * REST Resource
+      InstancesAggregatedListResource
+
+    -- * Creating a Request
+    , instancesAggregatedList
+    , InstancesAggregatedList
+
+    -- * Request Lenses
+    , ialProject
+    , ialFilter
+    , ialPageToken
+    , ialMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.aggregatedList@ method which the
+-- 'InstancesAggregatedList' request conforms to.
+type InstancesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "instances" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] InstanceAggregatedList
+
+-- | Retrieves aggregated list of instance resources.
+--
+-- /See:/ 'instancesAggregatedList' smart constructor.
+data InstancesAggregatedList = InstancesAggregatedList
+    { _ialProject    :: !Text
+    , _ialFilter     :: !(Maybe Text)
+    , _ialPageToken  :: !(Maybe Text)
+    , _ialMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ialProject'
+--
+-- * 'ialFilter'
+--
+-- * 'ialPageToken'
+--
+-- * 'ialMaxResults'
+instancesAggregatedList
+    :: Text -- ^ 'ialProject'
+    -> InstancesAggregatedList
+instancesAggregatedList pIalProject_ =
+    InstancesAggregatedList
+    { _ialProject = pIalProject_
+    , _ialFilter = Nothing
+    , _ialPageToken = Nothing
+    , _ialMaxResults = 500
+    }
+
+-- | Project ID for this request.
+ialProject :: Lens' InstancesAggregatedList Text
+ialProject
+  = lens _ialProject (\ s a -> s{_ialProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+ialFilter :: Lens' InstancesAggregatedList (Maybe Text)
+ialFilter
+  = lens _ialFilter (\ s a -> s{_ialFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+ialPageToken :: Lens' InstancesAggregatedList (Maybe Text)
+ialPageToken
+  = lens _ialPageToken (\ s a -> s{_ialPageToken = a})
+
+-- | Maximum count of results to be returned.
+ialMaxResults :: Lens' InstancesAggregatedList Word32
+ialMaxResults
+  = lens _ialMaxResults
+      (\ s a -> s{_ialMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstancesAggregatedList where
+        type Rs InstancesAggregatedList =
+             InstanceAggregatedList
+        requestClient InstancesAggregatedList{..}
+          = go _ialProject _ialFilter _ialPageToken
+              (Just _ialMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs b/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/AttachDisk.hs
@@ -0,0 +1,124 @@
+{-# 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.Compute.Instances.AttachDisk
+-- Copyright   : (c) 2015 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)
+--
+-- Attaches a Disk resource to an instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.attachDisk@.
+module Network.Google.Resource.Compute.Instances.AttachDisk
+    (
+    -- * REST Resource
+      InstancesAttachDiskResource
+
+    -- * Creating a Request
+    , instancesAttachDisk
+    , InstancesAttachDisk
+
+    -- * Request Lenses
+    , iadProject
+    , iadZone
+    , iadPayload
+    , iadInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.attachDisk@ method which the
+-- 'InstancesAttachDisk' request conforms to.
+type InstancesAttachDiskResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "attachDisk" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] AttachedDisk :>
+                           Post '[JSON] Operation
+
+-- | Attaches a Disk resource to an instance.
+--
+-- /See:/ 'instancesAttachDisk' smart constructor.
+data InstancesAttachDisk = InstancesAttachDisk
+    { _iadProject  :: !Text
+    , _iadZone     :: !Text
+    , _iadPayload  :: !AttachedDisk
+    , _iadInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesAttachDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iadProject'
+--
+-- * 'iadZone'
+--
+-- * 'iadPayload'
+--
+-- * 'iadInstance'
+instancesAttachDisk
+    :: Text -- ^ 'iadProject'
+    -> Text -- ^ 'iadZone'
+    -> AttachedDisk -- ^ 'iadPayload'
+    -> Text -- ^ 'iadInstance'
+    -> InstancesAttachDisk
+instancesAttachDisk pIadProject_ pIadZone_ pIadPayload_ pIadInstance_ =
+    InstancesAttachDisk
+    { _iadProject = pIadProject_
+    , _iadZone = pIadZone_
+    , _iadPayload = pIadPayload_
+    , _iadInstance = pIadInstance_
+    }
+
+-- | Project ID for this request.
+iadProject :: Lens' InstancesAttachDisk Text
+iadProject
+  = lens _iadProject (\ s a -> s{_iadProject = a})
+
+-- | The name of the zone for this request.
+iadZone :: Lens' InstancesAttachDisk Text
+iadZone = lens _iadZone (\ s a -> s{_iadZone = a})
+
+-- | Multipart request metadata.
+iadPayload :: Lens' InstancesAttachDisk AttachedDisk
+iadPayload
+  = lens _iadPayload (\ s a -> s{_iadPayload = a})
+
+-- | Instance name.
+iadInstance :: Lens' InstancesAttachDisk Text
+iadInstance
+  = lens _iadInstance (\ s a -> s{_iadInstance = a})
+
+instance GoogleRequest InstancesAttachDisk where
+        type Rs InstancesAttachDisk = Operation
+        requestClient InstancesAttachDisk{..}
+          = go _iadProject _iadZone _iadInstance (Just AltJSON)
+              _iadPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesAttachDiskResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Delete.hs b/gen/Network/Google/Resource/Compute/Instances/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/Delete.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.Instances.Delete
+-- Copyright   : (c) 2015 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 the specified Instance resource. For more information, see
+-- Shutting down an instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.delete@.
+module Network.Google.Resource.Compute.Instances.Delete
+    (
+    -- * REST Resource
+      InstancesDeleteResource
+
+    -- * Creating a Request
+    , instancesDelete
+    , InstancesDelete
+
+    -- * Request Lenses
+    , idProject
+    , idZone
+    , idInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.delete@ method which the
+-- 'InstancesDelete' request conforms to.
+type InstancesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified Instance resource. For more information, see
+-- Shutting down an instance.
+--
+-- /See:/ 'instancesDelete' smart constructor.
+data InstancesDelete = InstancesDelete
+    { _idProject  :: !Text
+    , _idZone     :: !Text
+    , _idInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idProject'
+--
+-- * 'idZone'
+--
+-- * 'idInstance'
+instancesDelete
+    :: Text -- ^ 'idProject'
+    -> Text -- ^ 'idZone'
+    -> Text -- ^ 'idInstance'
+    -> InstancesDelete
+instancesDelete pIdProject_ pIdZone_ pIdInstance_ =
+    InstancesDelete
+    { _idProject = pIdProject_
+    , _idZone = pIdZone_
+    , _idInstance = pIdInstance_
+    }
+
+-- | Project ID for this request.
+idProject :: Lens' InstancesDelete Text
+idProject
+  = lens _idProject (\ s a -> s{_idProject = a})
+
+-- | The name of the zone for this request.
+idZone :: Lens' InstancesDelete Text
+idZone = lens _idZone (\ s a -> s{_idZone = a})
+
+-- | Name of the instance resource to delete.
+idInstance :: Lens' InstancesDelete Text
+idInstance
+  = lens _idInstance (\ s a -> s{_idInstance = a})
+
+instance GoogleRequest InstancesDelete where
+        type Rs InstancesDelete = Operation
+        requestClient InstancesDelete{..}
+          = go _idProject _idZone _idInstance (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs b/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/DeleteAccessConfig.hs
@@ -0,0 +1,140 @@
+{-# 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.Compute.Instances.DeleteAccessConfig
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an access config from an instance\'s network interface.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.deleteAccessConfig@.
+module Network.Google.Resource.Compute.Instances.DeleteAccessConfig
+    (
+    -- * REST Resource
+      InstancesDeleteAccessConfigResource
+
+    -- * Creating a Request
+    , instancesDeleteAccessConfig
+    , InstancesDeleteAccessConfig
+
+    -- * Request Lenses
+    , idacProject
+    , idacNetworkInterface
+    , idacZone
+    , idacAccessConfig
+    , idacInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.deleteAccessConfig@ method which the
+-- 'InstancesDeleteAccessConfig' request conforms to.
+type InstancesDeleteAccessConfigResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "deleteAccessConfig" :>
+                       QueryParam "accessConfig" Text :>
+                         QueryParam "networkInterface" Text :>
+                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Deletes an access config from an instance\'s network interface.
+--
+-- /See:/ 'instancesDeleteAccessConfig' smart constructor.
+data InstancesDeleteAccessConfig = InstancesDeleteAccessConfig
+    { _idacProject          :: !Text
+    , _idacNetworkInterface :: !Text
+    , _idacZone             :: !Text
+    , _idacAccessConfig     :: !Text
+    , _idacInstance         :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesDeleteAccessConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idacProject'
+--
+-- * 'idacNetworkInterface'
+--
+-- * 'idacZone'
+--
+-- * 'idacAccessConfig'
+--
+-- * 'idacInstance'
+instancesDeleteAccessConfig
+    :: Text -- ^ 'idacProject'
+    -> Text -- ^ 'idacNetworkInterface'
+    -> Text -- ^ 'idacZone'
+    -> Text -- ^ 'idacAccessConfig'
+    -> Text -- ^ 'idacInstance'
+    -> InstancesDeleteAccessConfig
+instancesDeleteAccessConfig pIdacProject_ pIdacNetworkInterface_ pIdacZone_ pIdacAccessConfig_ pIdacInstance_ =
+    InstancesDeleteAccessConfig
+    { _idacProject = pIdacProject_
+    , _idacNetworkInterface = pIdacNetworkInterface_
+    , _idacZone = pIdacZone_
+    , _idacAccessConfig = pIdacAccessConfig_
+    , _idacInstance = pIdacInstance_
+    }
+
+-- | Project ID for this request.
+idacProject :: Lens' InstancesDeleteAccessConfig Text
+idacProject
+  = lens _idacProject (\ s a -> s{_idacProject = a})
+
+-- | The name of the network interface.
+idacNetworkInterface :: Lens' InstancesDeleteAccessConfig Text
+idacNetworkInterface
+  = lens _idacNetworkInterface
+      (\ s a -> s{_idacNetworkInterface = a})
+
+-- | The name of the zone for this request.
+idacZone :: Lens' InstancesDeleteAccessConfig Text
+idacZone = lens _idacZone (\ s a -> s{_idacZone = a})
+
+-- | The name of the access config to delete.
+idacAccessConfig :: Lens' InstancesDeleteAccessConfig Text
+idacAccessConfig
+  = lens _idacAccessConfig
+      (\ s a -> s{_idacAccessConfig = a})
+
+-- | The instance name for this request.
+idacInstance :: Lens' InstancesDeleteAccessConfig Text
+idacInstance
+  = lens _idacInstance (\ s a -> s{_idacInstance = a})
+
+instance GoogleRequest InstancesDeleteAccessConfig
+         where
+        type Rs InstancesDeleteAccessConfig = Operation
+        requestClient InstancesDeleteAccessConfig{..}
+          = go _idacProject _idacZone _idacInstance
+              (Just _idacAccessConfig)
+              (Just _idacNetworkInterface)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesDeleteAccessConfigResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs b/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/DetachDisk.hs
@@ -0,0 +1,125 @@
+{-# 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.Compute.Instances.DetachDisk
+-- Copyright   : (c) 2015 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)
+--
+-- Detaches a disk from an instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.detachDisk@.
+module Network.Google.Resource.Compute.Instances.DetachDisk
+    (
+    -- * REST Resource
+      InstancesDetachDiskResource
+
+    -- * Creating a Request
+    , instancesDetachDisk
+    , InstancesDetachDisk
+
+    -- * Request Lenses
+    , iddProject
+    , iddZone
+    , iddDeviceName
+    , iddInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.detachDisk@ method which the
+-- 'InstancesDetachDisk' request conforms to.
+type InstancesDetachDiskResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "detachDisk" :>
+                       QueryParam "deviceName" Text :>
+                         QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Detaches a disk from an instance.
+--
+-- /See:/ 'instancesDetachDisk' smart constructor.
+data InstancesDetachDisk = InstancesDetachDisk
+    { _iddProject    :: !Text
+    , _iddZone       :: !Text
+    , _iddDeviceName :: !Text
+    , _iddInstance   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesDetachDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iddProject'
+--
+-- * 'iddZone'
+--
+-- * 'iddDeviceName'
+--
+-- * 'iddInstance'
+instancesDetachDisk
+    :: Text -- ^ 'iddProject'
+    -> Text -- ^ 'iddZone'
+    -> Text -- ^ 'iddDeviceName'
+    -> Text -- ^ 'iddInstance'
+    -> InstancesDetachDisk
+instancesDetachDisk pIddProject_ pIddZone_ pIddDeviceName_ pIddInstance_ =
+    InstancesDetachDisk
+    { _iddProject = pIddProject_
+    , _iddZone = pIddZone_
+    , _iddDeviceName = pIddDeviceName_
+    , _iddInstance = pIddInstance_
+    }
+
+-- | Project ID for this request.
+iddProject :: Lens' InstancesDetachDisk Text
+iddProject
+  = lens _iddProject (\ s a -> s{_iddProject = a})
+
+-- | The name of the zone for this request.
+iddZone :: Lens' InstancesDetachDisk Text
+iddZone = lens _iddZone (\ s a -> s{_iddZone = a})
+
+-- | Disk device name to detach.
+iddDeviceName :: Lens' InstancesDetachDisk Text
+iddDeviceName
+  = lens _iddDeviceName
+      (\ s a -> s{_iddDeviceName = a})
+
+-- | Instance name.
+iddInstance :: Lens' InstancesDetachDisk Text
+iddInstance
+  = lens _iddInstance (\ s a -> s{_iddInstance = a})
+
+instance GoogleRequest InstancesDetachDisk where
+        type Rs InstancesDetachDisk = Operation
+        requestClient InstancesDetachDisk{..}
+          = go _iddProject _iddZone _iddInstance
+              (Just _iddDeviceName)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesDetachDiskResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Get.hs b/gen/Network/Google/Resource/Compute/Instances/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/Get.hs
@@ -0,0 +1,108 @@
+{-# 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.Compute.Instances.Get
+-- Copyright   : (c) 2015 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 the specified instance resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.get@.
+module Network.Google.Resource.Compute.Instances.Get
+    (
+    -- * REST Resource
+      InstancesGetResource
+
+    -- * Creating a Request
+    , instancesGet
+    , InstancesGet
+
+    -- * Request Lenses
+    , igProject
+    , igZone
+    , igInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.get@ method which the
+-- 'InstancesGet' request conforms to.
+type InstancesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Instance
+
+-- | Returns the specified instance resource.
+--
+-- /See:/ 'instancesGet' smart constructor.
+data InstancesGet = InstancesGet
+    { _igProject  :: !Text
+    , _igZone     :: !Text
+    , _igInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igProject'
+--
+-- * 'igZone'
+--
+-- * 'igInstance'
+instancesGet
+    :: Text -- ^ 'igProject'
+    -> Text -- ^ 'igZone'
+    -> Text -- ^ 'igInstance'
+    -> InstancesGet
+instancesGet pIgProject_ pIgZone_ pIgInstance_ =
+    InstancesGet
+    { _igProject = pIgProject_
+    , _igZone = pIgZone_
+    , _igInstance = pIgInstance_
+    }
+
+-- | Project ID for this request.
+igProject :: Lens' InstancesGet Text
+igProject
+  = lens _igProject (\ s a -> s{_igProject = a})
+
+-- | The name of the zone for this request.
+igZone :: Lens' InstancesGet Text
+igZone = lens _igZone (\ s a -> s{_igZone = a})
+
+-- | Name of the instance resource to return.
+igInstance :: Lens' InstancesGet Text
+igInstance
+  = lens _igInstance (\ s a -> s{_igInstance = a})
+
+instance GoogleRequest InstancesGet where
+        type Rs InstancesGet = Instance
+        requestClient InstancesGet{..}
+          = go _igProject _igZone _igInstance (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy InstancesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs b/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/GetSerialPortOutput.hs
@@ -0,0 +1,129 @@
+{-# 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.Compute.Instances.GetSerialPortOutput
+-- Copyright   : (c) 2015 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 the specified instance\'s serial port output.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.getSerialPortOutput@.
+module Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+    (
+    -- * REST Resource
+      InstancesGetSerialPortOutputResource
+
+    -- * Creating a Request
+    , instancesGetSerialPortOutput
+    , InstancesGetSerialPortOutput
+
+    -- * Request Lenses
+    , igspoProject
+    , igspoZone
+    , igspoPort
+    , igspoInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.getSerialPortOutput@ method which the
+-- 'InstancesGetSerialPortOutput' request conforms to.
+type InstancesGetSerialPortOutputResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "serialPort" :>
+                       QueryParam "port" (Textual Int32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] SerialPortOutput
+
+-- | Returns the specified instance\'s serial port output.
+--
+-- /See:/ 'instancesGetSerialPortOutput' smart constructor.
+data InstancesGetSerialPortOutput = InstancesGetSerialPortOutput
+    { _igspoProject  :: !Text
+    , _igspoZone     :: !Text
+    , _igspoPort     :: !(Textual Int32)
+    , _igspoInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesGetSerialPortOutput' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'igspoProject'
+--
+-- * 'igspoZone'
+--
+-- * 'igspoPort'
+--
+-- * 'igspoInstance'
+instancesGetSerialPortOutput
+    :: Text -- ^ 'igspoProject'
+    -> Text -- ^ 'igspoZone'
+    -> Text -- ^ 'igspoInstance'
+    -> InstancesGetSerialPortOutput
+instancesGetSerialPortOutput pIgspoProject_ pIgspoZone_ pIgspoInstance_ =
+    InstancesGetSerialPortOutput
+    { _igspoProject = pIgspoProject_
+    , _igspoZone = pIgspoZone_
+    , _igspoPort = 1
+    , _igspoInstance = pIgspoInstance_
+    }
+
+-- | Project ID for this request.
+igspoProject :: Lens' InstancesGetSerialPortOutput Text
+igspoProject
+  = lens _igspoProject (\ s a -> s{_igspoProject = a})
+
+-- | The name of the zone for this request.
+igspoZone :: Lens' InstancesGetSerialPortOutput Text
+igspoZone
+  = lens _igspoZone (\ s a -> s{_igspoZone = a})
+
+-- | Specifies which COM or serial port to retrieve data from.
+igspoPort :: Lens' InstancesGetSerialPortOutput Int32
+igspoPort
+  = lens _igspoPort (\ s a -> s{_igspoPort = a}) .
+      _Coerce
+
+-- | Name of the instance scoping this request.
+igspoInstance :: Lens' InstancesGetSerialPortOutput Text
+igspoInstance
+  = lens _igspoInstance
+      (\ s a -> s{_igspoInstance = a})
+
+instance GoogleRequest InstancesGetSerialPortOutput
+         where
+        type Rs InstancesGetSerialPortOutput =
+             SerialPortOutput
+        requestClient InstancesGetSerialPortOutput{..}
+          = go _igspoProject _igspoZone _igspoInstance
+              (Just _igspoPort)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesGetSerialPortOutputResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Insert.hs b/gen/Network/Google/Resource/Compute/Instances/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/Insert.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.Instances.Insert
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an instance resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.insert@.
+module Network.Google.Resource.Compute.Instances.Insert
+    (
+    -- * REST Resource
+      InstancesInsertResource
+
+    -- * Creating a Request
+    , instancesInsert
+    , InstancesInsert
+
+    -- * Request Lenses
+    , iiiProject
+    , iiiZone
+    , iiiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.insert@ method which the
+-- 'InstancesInsert' request conforms to.
+type InstancesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Instance :> Post '[JSON] Operation
+
+-- | Creates an instance resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'instancesInsert' smart constructor.
+data InstancesInsert = InstancesInsert
+    { _iiiProject :: !Text
+    , _iiiZone    :: !Text
+    , _iiiPayload :: !Instance
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiiProject'
+--
+-- * 'iiiZone'
+--
+-- * 'iiiPayload'
+instancesInsert
+    :: Text -- ^ 'iiiProject'
+    -> Text -- ^ 'iiiZone'
+    -> Instance -- ^ 'iiiPayload'
+    -> InstancesInsert
+instancesInsert pIiiProject_ pIiiZone_ pIiiPayload_ =
+    InstancesInsert
+    { _iiiProject = pIiiProject_
+    , _iiiZone = pIiiZone_
+    , _iiiPayload = pIiiPayload_
+    }
+
+-- | Project ID for this request.
+iiiProject :: Lens' InstancesInsert Text
+iiiProject
+  = lens _iiiProject (\ s a -> s{_iiiProject = a})
+
+-- | The name of the zone for this request.
+iiiZone :: Lens' InstancesInsert Text
+iiiZone = lens _iiiZone (\ s a -> s{_iiiZone = a})
+
+-- | Multipart request metadata.
+iiiPayload :: Lens' InstancesInsert Instance
+iiiPayload
+  = lens _iiiPayload (\ s a -> s{_iiiPayload = a})
+
+instance GoogleRequest InstancesInsert where
+        type Rs InstancesInsert = Operation
+        requestClient InstancesInsert{..}
+          = go _iiiProject _iiiZone (Just AltJSON) _iiiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/List.hs b/gen/Network/Google/Resource/Compute/Instances/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/List.hs
@@ -0,0 +1,145 @@
+{-# 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.Compute.Instances.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of instance resources contained within the specified
+-- zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.list@.
+module Network.Google.Resource.Compute.Instances.List
+    (
+    -- * REST Resource
+      InstancesListResource
+
+    -- * Creating a Request
+    , instancesList
+    , InstancesList
+
+    -- * Request Lenses
+    , ilProject
+    , ilZone
+    , ilFilter
+    , ilPageToken
+    , ilMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.list@ method which the
+-- 'InstancesList' request conforms to.
+type InstancesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] InstanceList
+
+-- | Retrieves the list of instance resources contained within the specified
+-- zone.
+--
+-- /See:/ 'instancesList' smart constructor.
+data InstancesList = InstancesList
+    { _ilProject    :: !Text
+    , _ilZone       :: !Text
+    , _ilFilter     :: !(Maybe Text)
+    , _ilPageToken  :: !(Maybe Text)
+    , _ilMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ilProject'
+--
+-- * 'ilZone'
+--
+-- * 'ilFilter'
+--
+-- * 'ilPageToken'
+--
+-- * 'ilMaxResults'
+instancesList
+    :: Text -- ^ 'ilProject'
+    -> Text -- ^ 'ilZone'
+    -> InstancesList
+instancesList pIlProject_ pIlZone_ =
+    InstancesList
+    { _ilProject = pIlProject_
+    , _ilZone = pIlZone_
+    , _ilFilter = Nothing
+    , _ilPageToken = Nothing
+    , _ilMaxResults = 500
+    }
+
+-- | Project ID for this request.
+ilProject :: Lens' InstancesList Text
+ilProject
+  = lens _ilProject (\ s a -> s{_ilProject = a})
+
+-- | The name of the zone for this request.
+ilZone :: Lens' InstancesList Text
+ilZone = lens _ilZone (\ s a -> s{_ilZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+ilFilter :: Lens' InstancesList (Maybe Text)
+ilFilter = lens _ilFilter (\ s a -> s{_ilFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+ilPageToken :: Lens' InstancesList (Maybe Text)
+ilPageToken
+  = lens _ilPageToken (\ s a -> s{_ilPageToken = a})
+
+-- | Maximum count of results to be returned.
+ilMaxResults :: Lens' InstancesList Word32
+ilMaxResults
+  = lens _ilMaxResults (\ s a -> s{_ilMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest InstancesList where
+        type Rs InstancesList = InstanceList
+        requestClient InstancesList{..}
+          = go _ilProject _ilZone _ilFilter _ilPageToken
+              (Just _ilMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy InstancesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Reset.hs b/gen/Network/Google/Resource/Compute/Instances/Reset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/Reset.hs
@@ -0,0 +1,109 @@
+{-# 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.Compute.Instances.Reset
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Performs a hard reset on the instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.reset@.
+module Network.Google.Resource.Compute.Instances.Reset
+    (
+    -- * REST Resource
+      InstancesResetResource
+
+    -- * Creating a Request
+    , instancesReset
+    , InstancesReset
+
+    -- * Request Lenses
+    , irProject
+    , irZone
+    , irInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.reset@ method which the
+-- 'InstancesReset' request conforms to.
+type InstancesResetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "reset" :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Performs a hard reset on the instance.
+--
+-- /See:/ 'instancesReset' smart constructor.
+data InstancesReset = InstancesReset
+    { _irProject  :: !Text
+    , _irZone     :: !Text
+    , _irInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesReset' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'irProject'
+--
+-- * 'irZone'
+--
+-- * 'irInstance'
+instancesReset
+    :: Text -- ^ 'irProject'
+    -> Text -- ^ 'irZone'
+    -> Text -- ^ 'irInstance'
+    -> InstancesReset
+instancesReset pIrProject_ pIrZone_ pIrInstance_ =
+    InstancesReset
+    { _irProject = pIrProject_
+    , _irZone = pIrZone_
+    , _irInstance = pIrInstance_
+    }
+
+-- | Project ID for this request.
+irProject :: Lens' InstancesReset Text
+irProject
+  = lens _irProject (\ s a -> s{_irProject = a})
+
+-- | The name of the zone for this request.
+irZone :: Lens' InstancesReset Text
+irZone = lens _irZone (\ s a -> s{_irZone = a})
+
+-- | Name of the instance scoping this request.
+irInstance :: Lens' InstancesReset Text
+irInstance
+  = lens _irInstance (\ s a -> s{_irInstance = a})
+
+instance GoogleRequest InstancesReset where
+        type Rs InstancesReset = Operation
+        requestClient InstancesReset{..}
+          = go _irProject _irZone _irInstance (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy InstancesResetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs b/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetDiskAutoDelete.hs
@@ -0,0 +1,142 @@
+{-# 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.Compute.Instances.SetDiskAutoDelete
+-- Copyright   : (c) 2015 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 auto-delete flag for a disk attached to an instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setDiskAutoDelete@.
+module Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+    (
+    -- * REST Resource
+      InstancesSetDiskAutoDeleteResource
+
+    -- * Creating a Request
+    , instancesSetDiskAutoDelete
+    , InstancesSetDiskAutoDelete
+
+    -- * Request Lenses
+    , isdadProject
+    , isdadAutoDelete
+    , isdadZone
+    , isdadDeviceName
+    , isdadInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setDiskAutoDelete@ method which the
+-- 'InstancesSetDiskAutoDelete' request conforms to.
+type InstancesSetDiskAutoDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setDiskAutoDelete" :>
+                       QueryParam "autoDelete" Bool :>
+                         QueryParam "deviceName" Text :>
+                           QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | Sets the auto-delete flag for a disk attached to an instance.
+--
+-- /See:/ 'instancesSetDiskAutoDelete' smart constructor.
+data InstancesSetDiskAutoDelete = InstancesSetDiskAutoDelete
+    { _isdadProject    :: !Text
+    , _isdadAutoDelete :: !Bool
+    , _isdadZone       :: !Text
+    , _isdadDeviceName :: !Text
+    , _isdadInstance   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetDiskAutoDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isdadProject'
+--
+-- * 'isdadAutoDelete'
+--
+-- * 'isdadZone'
+--
+-- * 'isdadDeviceName'
+--
+-- * 'isdadInstance'
+instancesSetDiskAutoDelete
+    :: Text -- ^ 'isdadProject'
+    -> Bool -- ^ 'isdadAutoDelete'
+    -> Text -- ^ 'isdadZone'
+    -> Text -- ^ 'isdadDeviceName'
+    -> Text -- ^ 'isdadInstance'
+    -> InstancesSetDiskAutoDelete
+instancesSetDiskAutoDelete pIsdadProject_ pIsdadAutoDelete_ pIsdadZone_ pIsdadDeviceName_ pIsdadInstance_ =
+    InstancesSetDiskAutoDelete
+    { _isdadProject = pIsdadProject_
+    , _isdadAutoDelete = pIsdadAutoDelete_
+    , _isdadZone = pIsdadZone_
+    , _isdadDeviceName = pIsdadDeviceName_
+    , _isdadInstance = pIsdadInstance_
+    }
+
+-- | Project ID for this request.
+isdadProject :: Lens' InstancesSetDiskAutoDelete Text
+isdadProject
+  = lens _isdadProject (\ s a -> s{_isdadProject = a})
+
+-- | Whether to auto-delete the disk when the instance is deleted.
+isdadAutoDelete :: Lens' InstancesSetDiskAutoDelete Bool
+isdadAutoDelete
+  = lens _isdadAutoDelete
+      (\ s a -> s{_isdadAutoDelete = a})
+
+-- | The name of the zone for this request.
+isdadZone :: Lens' InstancesSetDiskAutoDelete Text
+isdadZone
+  = lens _isdadZone (\ s a -> s{_isdadZone = a})
+
+-- | The device name of the disk to modify.
+isdadDeviceName :: Lens' InstancesSetDiskAutoDelete Text
+isdadDeviceName
+  = lens _isdadDeviceName
+      (\ s a -> s{_isdadDeviceName = a})
+
+-- | The instance name.
+isdadInstance :: Lens' InstancesSetDiskAutoDelete Text
+isdadInstance
+  = lens _isdadInstance
+      (\ s a -> s{_isdadInstance = a})
+
+instance GoogleRequest InstancesSetDiskAutoDelete
+         where
+        type Rs InstancesSetDiskAutoDelete = Operation
+        requestClient InstancesSetDiskAutoDelete{..}
+          = go _isdadProject _isdadZone _isdadInstance
+              (Just _isdadAutoDelete)
+              (Just _isdadDeviceName)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetDiskAutoDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs b/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetMetadata.hs
@@ -0,0 +1,125 @@
+{-# 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.Compute.Instances.SetMetadata
+-- Copyright   : (c) 2015 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 metadata for the specified instance to the data included in the
+-- request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setMetadata@.
+module Network.Google.Resource.Compute.Instances.SetMetadata
+    (
+    -- * REST Resource
+      InstancesSetMetadataResource
+
+    -- * Creating a Request
+    , instancesSetMetadata
+    , InstancesSetMetadata
+
+    -- * Request Lenses
+    , ismProject
+    , ismZone
+    , ismPayload
+    , ismInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setMetadata@ method which the
+-- 'InstancesSetMetadata' request conforms to.
+type InstancesSetMetadataResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setMetadata" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Metadata :> Post '[JSON] Operation
+
+-- | Sets metadata for the specified instance to the data included in the
+-- request.
+--
+-- /See:/ 'instancesSetMetadata' smart constructor.
+data InstancesSetMetadata = InstancesSetMetadata
+    { _ismProject  :: !Text
+    , _ismZone     :: !Text
+    , _ismPayload  :: !Metadata
+    , _ismInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ismProject'
+--
+-- * 'ismZone'
+--
+-- * 'ismPayload'
+--
+-- * 'ismInstance'
+instancesSetMetadata
+    :: Text -- ^ 'ismProject'
+    -> Text -- ^ 'ismZone'
+    -> Metadata -- ^ 'ismPayload'
+    -> Text -- ^ 'ismInstance'
+    -> InstancesSetMetadata
+instancesSetMetadata pIsmProject_ pIsmZone_ pIsmPayload_ pIsmInstance_ =
+    InstancesSetMetadata
+    { _ismProject = pIsmProject_
+    , _ismZone = pIsmZone_
+    , _ismPayload = pIsmPayload_
+    , _ismInstance = pIsmInstance_
+    }
+
+-- | Project ID for this request.
+ismProject :: Lens' InstancesSetMetadata Text
+ismProject
+  = lens _ismProject (\ s a -> s{_ismProject = a})
+
+-- | The name of the zone for this request.
+ismZone :: Lens' InstancesSetMetadata Text
+ismZone = lens _ismZone (\ s a -> s{_ismZone = a})
+
+-- | Multipart request metadata.
+ismPayload :: Lens' InstancesSetMetadata Metadata
+ismPayload
+  = lens _ismPayload (\ s a -> s{_ismPayload = a})
+
+-- | Name of the instance scoping this request.
+ismInstance :: Lens' InstancesSetMetadata Text
+ismInstance
+  = lens _ismInstance (\ s a -> s{_ismInstance = a})
+
+instance GoogleRequest InstancesSetMetadata where
+        type Rs InstancesSetMetadata = Operation
+        requestClient InstancesSetMetadata{..}
+          = go _ismProject _ismZone _ismInstance (Just AltJSON)
+              _ismPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetMetadataResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs b/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetScheduling.hs
@@ -0,0 +1,123 @@
+{-# 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.Compute.Instances.SetScheduling
+-- Copyright   : (c) 2015 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 an instance\'s scheduling options.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setScheduling@.
+module Network.Google.Resource.Compute.Instances.SetScheduling
+    (
+    -- * REST Resource
+      InstancesSetSchedulingResource
+
+    -- * Creating a Request
+    , instancesSetScheduling
+    , InstancesSetScheduling
+
+    -- * Request Lenses
+    , issProject
+    , issZone
+    , issPayload
+    , issInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setScheduling@ method which the
+-- 'InstancesSetScheduling' request conforms to.
+type InstancesSetSchedulingResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setScheduling" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Scheduling :> Post '[JSON] Operation
+
+-- | Sets an instance\'s scheduling options.
+--
+-- /See:/ 'instancesSetScheduling' smart constructor.
+data InstancesSetScheduling = InstancesSetScheduling
+    { _issProject  :: !Text
+    , _issZone     :: !Text
+    , _issPayload  :: !Scheduling
+    , _issInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetScheduling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'issProject'
+--
+-- * 'issZone'
+--
+-- * 'issPayload'
+--
+-- * 'issInstance'
+instancesSetScheduling
+    :: Text -- ^ 'issProject'
+    -> Text -- ^ 'issZone'
+    -> Scheduling -- ^ 'issPayload'
+    -> Text -- ^ 'issInstance'
+    -> InstancesSetScheduling
+instancesSetScheduling pIssProject_ pIssZone_ pIssPayload_ pIssInstance_ =
+    InstancesSetScheduling
+    { _issProject = pIssProject_
+    , _issZone = pIssZone_
+    , _issPayload = pIssPayload_
+    , _issInstance = pIssInstance_
+    }
+
+-- | Project ID for this request.
+issProject :: Lens' InstancesSetScheduling Text
+issProject
+  = lens _issProject (\ s a -> s{_issProject = a})
+
+-- | The name of the zone for this request.
+issZone :: Lens' InstancesSetScheduling Text
+issZone = lens _issZone (\ s a -> s{_issZone = a})
+
+-- | Multipart request metadata.
+issPayload :: Lens' InstancesSetScheduling Scheduling
+issPayload
+  = lens _issPayload (\ s a -> s{_issPayload = a})
+
+-- | Instance name.
+issInstance :: Lens' InstancesSetScheduling Text
+issInstance
+  = lens _issInstance (\ s a -> s{_issInstance = a})
+
+instance GoogleRequest InstancesSetScheduling where
+        type Rs InstancesSetScheduling = Operation
+        requestClient InstancesSetScheduling{..}
+          = go _issProject _issZone _issInstance (Just AltJSON)
+              _issPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetSchedulingResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/SetTags.hs b/gen/Network/Google/Resource/Compute/Instances/SetTags.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/SetTags.hs
@@ -0,0 +1,125 @@
+{-# 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.Compute.Instances.SetTags
+-- Copyright   : (c) 2015 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 tags for the specified instance to the data included in the
+-- request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.setTags@.
+module Network.Google.Resource.Compute.Instances.SetTags
+    (
+    -- * REST Resource
+      InstancesSetTagsResource
+
+    -- * Creating a Request
+    , instancesSetTags
+    , InstancesSetTags
+
+    -- * Request Lenses
+    , istProject
+    , istZone
+    , istPayload
+    , istInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.setTags@ method which the
+-- 'InstancesSetTags' request conforms to.
+type InstancesSetTagsResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "setTags" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Tags :> Post '[JSON] Operation
+
+-- | Sets tags for the specified instance to the data included in the
+-- request.
+--
+-- /See:/ 'instancesSetTags' smart constructor.
+data InstancesSetTags = InstancesSetTags
+    { _istProject  :: !Text
+    , _istZone     :: !Text
+    , _istPayload  :: !Tags
+    , _istInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesSetTags' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'istProject'
+--
+-- * 'istZone'
+--
+-- * 'istPayload'
+--
+-- * 'istInstance'
+instancesSetTags
+    :: Text -- ^ 'istProject'
+    -> Text -- ^ 'istZone'
+    -> Tags -- ^ 'istPayload'
+    -> Text -- ^ 'istInstance'
+    -> InstancesSetTags
+instancesSetTags pIstProject_ pIstZone_ pIstPayload_ pIstInstance_ =
+    InstancesSetTags
+    { _istProject = pIstProject_
+    , _istZone = pIstZone_
+    , _istPayload = pIstPayload_
+    , _istInstance = pIstInstance_
+    }
+
+-- | Project ID for this request.
+istProject :: Lens' InstancesSetTags Text
+istProject
+  = lens _istProject (\ s a -> s{_istProject = a})
+
+-- | The name of the zone for this request.
+istZone :: Lens' InstancesSetTags Text
+istZone = lens _istZone (\ s a -> s{_istZone = a})
+
+-- | Multipart request metadata.
+istPayload :: Lens' InstancesSetTags Tags
+istPayload
+  = lens _istPayload (\ s a -> s{_istPayload = a})
+
+-- | Name of the instance scoping this request.
+istInstance :: Lens' InstancesSetTags Text
+istInstance
+  = lens _istInstance (\ s a -> s{_istInstance = a})
+
+instance GoogleRequest InstancesSetTags where
+        type Rs InstancesSetTags = Operation
+        requestClient InstancesSetTags{..}
+          = go _istProject _istZone _istInstance (Just AltJSON)
+              _istPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy InstancesSetTagsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Start.hs b/gen/Network/Google/Resource/Compute/Instances/Start.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/Start.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.Instances.Start
+-- Copyright   : (c) 2015 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)
+--
+-- This method starts an instance that was stopped using the using the
+-- instances().stop method. For more information, see Restart an instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.start@.
+module Network.Google.Resource.Compute.Instances.Start
+    (
+    -- * REST Resource
+      InstancesStartResource
+
+    -- * Creating a Request
+    , instancesStart
+    , InstancesStart
+
+    -- * Request Lenses
+    , insProject
+    , insZone
+    , insInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.start@ method which the
+-- 'InstancesStart' request conforms to.
+type InstancesStartResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "start" :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | This method starts an instance that was stopped using the using the
+-- instances().stop method. For more information, see Restart an instance.
+--
+-- /See:/ 'instancesStart' smart constructor.
+data InstancesStart = InstancesStart
+    { _insProject  :: !Text
+    , _insZone     :: !Text
+    , _insInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesStart' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'insProject'
+--
+-- * 'insZone'
+--
+-- * 'insInstance'
+instancesStart
+    :: Text -- ^ 'insProject'
+    -> Text -- ^ 'insZone'
+    -> Text -- ^ 'insInstance'
+    -> InstancesStart
+instancesStart pInsProject_ pInsZone_ pInsInstance_ =
+    InstancesStart
+    { _insProject = pInsProject_
+    , _insZone = pInsZone_
+    , _insInstance = pInsInstance_
+    }
+
+-- | Project ID for this request.
+insProject :: Lens' InstancesStart Text
+insProject
+  = lens _insProject (\ s a -> s{_insProject = a})
+
+-- | The name of the zone for this request.
+insZone :: Lens' InstancesStart Text
+insZone = lens _insZone (\ s a -> s{_insZone = a})
+
+-- | Name of the instance resource to start.
+insInstance :: Lens' InstancesStart Text
+insInstance
+  = lens _insInstance (\ s a -> s{_insInstance = a})
+
+instance GoogleRequest InstancesStart where
+        type Rs InstancesStart = Operation
+        requestClient InstancesStart{..}
+          = go _insProject _insZone _insInstance (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy InstancesStartResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Instances/Stop.hs b/gen/Network/Google/Resource/Compute/Instances/Stop.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Instances/Stop.hs
@@ -0,0 +1,119 @@
+{-# 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.Compute.Instances.Stop
+-- Copyright   : (c) 2015 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)
+--
+-- This method stops a running instance, shutting it down cleanly, and
+-- allows you to restart the instance at a later time. Stopped instances do
+-- not incur per-minute, virtual machine usage charges while they are
+-- stopped, but any resources that the virtual machine is using, such as
+-- persistent disks and static IP addresses,will continue to be charged
+-- until they are deleted. For more information, see Stopping an instance.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.instances.stop@.
+module Network.Google.Resource.Compute.Instances.Stop
+    (
+    -- * REST Resource
+      InstancesStopResource
+
+    -- * Creating a Request
+    , instancesStop
+    , InstancesStop
+
+    -- * Request Lenses
+    , isProject
+    , isZone
+    , isInstance
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.instances.stop@ method which the
+-- 'InstancesStop' request conforms to.
+type InstancesStopResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "instances" :>
+                   Capture "instance" Text :>
+                     "stop" :>
+                       QueryParam "alt" AltJSON :> Post '[JSON] Operation
+
+-- | This method stops a running instance, shutting it down cleanly, and
+-- allows you to restart the instance at a later time. Stopped instances do
+-- not incur per-minute, virtual machine usage charges while they are
+-- stopped, but any resources that the virtual machine is using, such as
+-- persistent disks and static IP addresses,will continue to be charged
+-- until they are deleted. For more information, see Stopping an instance.
+--
+-- /See:/ 'instancesStop' smart constructor.
+data InstancesStop = InstancesStop
+    { _isProject  :: !Text
+    , _isZone     :: !Text
+    , _isInstance :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesStop' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'isProject'
+--
+-- * 'isZone'
+--
+-- * 'isInstance'
+instancesStop
+    :: Text -- ^ 'isProject'
+    -> Text -- ^ 'isZone'
+    -> Text -- ^ 'isInstance'
+    -> InstancesStop
+instancesStop pIsProject_ pIsZone_ pIsInstance_ =
+    InstancesStop
+    { _isProject = pIsProject_
+    , _isZone = pIsZone_
+    , _isInstance = pIsInstance_
+    }
+
+-- | Project ID for this request.
+isProject :: Lens' InstancesStop Text
+isProject
+  = lens _isProject (\ s a -> s{_isProject = a})
+
+-- | The name of the zone for this request.
+isZone :: Lens' InstancesStop Text
+isZone = lens _isZone (\ s a -> s{_isZone = a})
+
+-- | Name of the instance resource to stop.
+isInstance :: Lens' InstancesStop Text
+isInstance
+  = lens _isInstance (\ s a -> s{_isInstance = a})
+
+instance GoogleRequest InstancesStop where
+        type Rs InstancesStop = Operation
+        requestClient InstancesStop{..}
+          = go _isProject _isZone _isInstance (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy InstancesStopResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Licenses/Get.hs b/gen/Network/Google/Resource/Compute/Licenses/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Licenses/Get.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.Licenses.Get
+-- Copyright   : (c) 2015 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 the specified license resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.licenses.get@.
+module Network.Google.Resource.Compute.Licenses.Get
+    (
+    -- * REST Resource
+      LicensesGetResource
+
+    -- * Creating a Request
+    , licensesGet
+    , LicensesGet
+
+    -- * Request Lenses
+    , lgProject
+    , lgLicense
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.licenses.get@ method which the
+-- 'LicensesGet' request conforms to.
+type LicensesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "licenses" :>
+                 Capture "license" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] License
+
+-- | Returns the specified license resource.
+--
+-- /See:/ 'licensesGet' smart constructor.
+data LicensesGet = LicensesGet
+    { _lgProject :: !Text
+    , _lgLicense :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LicensesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgProject'
+--
+-- * 'lgLicense'
+licensesGet
+    :: Text -- ^ 'lgProject'
+    -> Text -- ^ 'lgLicense'
+    -> LicensesGet
+licensesGet pLgProject_ pLgLicense_ =
+    LicensesGet
+    { _lgProject = pLgProject_
+    , _lgLicense = pLgLicense_
+    }
+
+-- | Project ID for this request.
+lgProject :: Lens' LicensesGet Text
+lgProject
+  = lens _lgProject (\ s a -> s{_lgProject = a})
+
+-- | Name of the license resource to return.
+lgLicense :: Lens' LicensesGet Text
+lgLicense
+  = lens _lgLicense (\ s a -> s{_lgLicense = a})
+
+instance GoogleRequest LicensesGet where
+        type Rs LicensesGet = License
+        requestClient LicensesGet{..}
+          = go _lgProject _lgLicense (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy LicensesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs b/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/MachineTypes/AggregatedList.hs
@@ -0,0 +1,139 @@
+{-# 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.Compute.MachineTypes.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of machine type resources grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.machineTypes.aggregatedList@.
+module Network.Google.Resource.Compute.MachineTypes.AggregatedList
+    (
+    -- * REST Resource
+      MachineTypesAggregatedListResource
+
+    -- * Creating a Request
+    , machineTypesAggregatedList
+    , MachineTypesAggregatedList
+
+    -- * Request Lenses
+    , mtalProject
+    , mtalFilter
+    , mtalPageToken
+    , mtalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.machineTypes.aggregatedList@ method which the
+-- 'MachineTypesAggregatedList' request conforms to.
+type MachineTypesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "machineTypes" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] MachineTypeAggregatedList
+
+-- | Retrieves the list of machine type resources grouped by scope.
+--
+-- /See:/ 'machineTypesAggregatedList' smart constructor.
+data MachineTypesAggregatedList = MachineTypesAggregatedList
+    { _mtalProject    :: !Text
+    , _mtalFilter     :: !(Maybe Text)
+    , _mtalPageToken  :: !(Maybe Text)
+    , _mtalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtalProject'
+--
+-- * 'mtalFilter'
+--
+-- * 'mtalPageToken'
+--
+-- * 'mtalMaxResults'
+machineTypesAggregatedList
+    :: Text -- ^ 'mtalProject'
+    -> MachineTypesAggregatedList
+machineTypesAggregatedList pMtalProject_ =
+    MachineTypesAggregatedList
+    { _mtalProject = pMtalProject_
+    , _mtalFilter = Nothing
+    , _mtalPageToken = Nothing
+    , _mtalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+mtalProject :: Lens' MachineTypesAggregatedList Text
+mtalProject
+  = lens _mtalProject (\ s a -> s{_mtalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+mtalFilter :: Lens' MachineTypesAggregatedList (Maybe Text)
+mtalFilter
+  = lens _mtalFilter (\ s a -> s{_mtalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+mtalPageToken :: Lens' MachineTypesAggregatedList (Maybe Text)
+mtalPageToken
+  = lens _mtalPageToken
+      (\ s a -> s{_mtalPageToken = a})
+
+-- | Maximum count of results to be returned.
+mtalMaxResults :: Lens' MachineTypesAggregatedList Word32
+mtalMaxResults
+  = lens _mtalMaxResults
+      (\ s a -> s{_mtalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest MachineTypesAggregatedList
+         where
+        type Rs MachineTypesAggregatedList =
+             MachineTypeAggregatedList
+        requestClient MachineTypesAggregatedList{..}
+          = go _mtalProject _mtalFilter _mtalPageToken
+              (Just _mtalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MachineTypesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs b/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/MachineTypes/Get.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.MachineTypes.Get
+-- Copyright   : (c) 2015 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 the specified machine type resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.machineTypes.get@.
+module Network.Google.Resource.Compute.MachineTypes.Get
+    (
+    -- * REST Resource
+      MachineTypesGetResource
+
+    -- * Creating a Request
+    , machineTypesGet
+    , MachineTypesGet
+
+    -- * Request Lenses
+    , mtgProject
+    , mtgZone
+    , mtgMachineType
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.machineTypes.get@ method which the
+-- 'MachineTypesGet' request conforms to.
+type MachineTypesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "machineTypes" :>
+                   Capture "machineType" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] MachineType
+
+-- | Returns the specified machine type resource.
+--
+-- /See:/ 'machineTypesGet' smart constructor.
+data MachineTypesGet = MachineTypesGet
+    { _mtgProject     :: !Text
+    , _mtgZone        :: !Text
+    , _mtgMachineType :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtgProject'
+--
+-- * 'mtgZone'
+--
+-- * 'mtgMachineType'
+machineTypesGet
+    :: Text -- ^ 'mtgProject'
+    -> Text -- ^ 'mtgZone'
+    -> Text -- ^ 'mtgMachineType'
+    -> MachineTypesGet
+machineTypesGet pMtgProject_ pMtgZone_ pMtgMachineType_ =
+    MachineTypesGet
+    { _mtgProject = pMtgProject_
+    , _mtgZone = pMtgZone_
+    , _mtgMachineType = pMtgMachineType_
+    }
+
+-- | Project ID for this request.
+mtgProject :: Lens' MachineTypesGet Text
+mtgProject
+  = lens _mtgProject (\ s a -> s{_mtgProject = a})
+
+-- | The name of the zone for this request.
+mtgZone :: Lens' MachineTypesGet Text
+mtgZone = lens _mtgZone (\ s a -> s{_mtgZone = a})
+
+-- | Name of the machine type resource to return.
+mtgMachineType :: Lens' MachineTypesGet Text
+mtgMachineType
+  = lens _mtgMachineType
+      (\ s a -> s{_mtgMachineType = a})
+
+instance GoogleRequest MachineTypesGet where
+        type Rs MachineTypesGet = MachineType
+        requestClient MachineTypesGet{..}
+          = go _mtgProject _mtgZone _mtgMachineType
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MachineTypesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/MachineTypes/List.hs b/gen/Network/Google/Resource/Compute/MachineTypes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/MachineTypes/List.hs
@@ -0,0 +1,149 @@
+{-# 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.Compute.MachineTypes.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of machine type resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.machineTypes.list@.
+module Network.Google.Resource.Compute.MachineTypes.List
+    (
+    -- * REST Resource
+      MachineTypesListResource
+
+    -- * Creating a Request
+    , machineTypesList
+    , MachineTypesList
+
+    -- * Request Lenses
+    , mtlProject
+    , mtlZone
+    , mtlFilter
+    , mtlPageToken
+    , mtlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.machineTypes.list@ method which the
+-- 'MachineTypesList' request conforms to.
+type MachineTypesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "machineTypes" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] MachineTypeList
+
+-- | Retrieves the list of machine type resources available to the specified
+-- project.
+--
+-- /See:/ 'machineTypesList' smart constructor.
+data MachineTypesList = MachineTypesList
+    { _mtlProject    :: !Text
+    , _mtlZone       :: !Text
+    , _mtlFilter     :: !(Maybe Text)
+    , _mtlPageToken  :: !(Maybe Text)
+    , _mtlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MachineTypesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mtlProject'
+--
+-- * 'mtlZone'
+--
+-- * 'mtlFilter'
+--
+-- * 'mtlPageToken'
+--
+-- * 'mtlMaxResults'
+machineTypesList
+    :: Text -- ^ 'mtlProject'
+    -> Text -- ^ 'mtlZone'
+    -> MachineTypesList
+machineTypesList pMtlProject_ pMtlZone_ =
+    MachineTypesList
+    { _mtlProject = pMtlProject_
+    , _mtlZone = pMtlZone_
+    , _mtlFilter = Nothing
+    , _mtlPageToken = Nothing
+    , _mtlMaxResults = 500
+    }
+
+-- | Project ID for this request.
+mtlProject :: Lens' MachineTypesList Text
+mtlProject
+  = lens _mtlProject (\ s a -> s{_mtlProject = a})
+
+-- | The name of the zone for this request.
+mtlZone :: Lens' MachineTypesList Text
+mtlZone = lens _mtlZone (\ s a -> s{_mtlZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+mtlFilter :: Lens' MachineTypesList (Maybe Text)
+mtlFilter
+  = lens _mtlFilter (\ s a -> s{_mtlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+mtlPageToken :: Lens' MachineTypesList (Maybe Text)
+mtlPageToken
+  = lens _mtlPageToken (\ s a -> s{_mtlPageToken = a})
+
+-- | Maximum count of results to be returned.
+mtlMaxResults :: Lens' MachineTypesList Word32
+mtlMaxResults
+  = lens _mtlMaxResults
+      (\ s a -> s{_mtlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest MachineTypesList where
+        type Rs MachineTypesList = MachineTypeList
+        requestClient MachineTypesList{..}
+          = go _mtlProject _mtlZone _mtlFilter _mtlPageToken
+              (Just _mtlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy MachineTypesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/Delete.hs b/gen/Network/Google/Resource/Compute/Networks/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/Delete.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.Networks.Delete
+-- Copyright   : (c) 2015 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 the specified network resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.delete@.
+module Network.Google.Resource.Compute.Networks.Delete
+    (
+    -- * REST Resource
+      NetworksDeleteResource
+
+    -- * Creating a Request
+    , networksDelete
+    , NetworksDelete
+
+    -- * Request Lenses
+    , ndProject
+    , ndNetwork
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.delete@ method which the
+-- 'NetworksDelete' request conforms to.
+type NetworksDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 Capture "network" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified network resource.
+--
+-- /See:/ 'networksDelete' smart constructor.
+data NetworksDelete = NetworksDelete
+    { _ndProject :: !Text
+    , _ndNetwork :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ndProject'
+--
+-- * 'ndNetwork'
+networksDelete
+    :: Text -- ^ 'ndProject'
+    -> Text -- ^ 'ndNetwork'
+    -> NetworksDelete
+networksDelete pNdProject_ pNdNetwork_ =
+    NetworksDelete
+    { _ndProject = pNdProject_
+    , _ndNetwork = pNdNetwork_
+    }
+
+-- | Project ID for this request.
+ndProject :: Lens' NetworksDelete Text
+ndProject
+  = lens _ndProject (\ s a -> s{_ndProject = a})
+
+-- | Name of the network resource to delete.
+ndNetwork :: Lens' NetworksDelete Text
+ndNetwork
+  = lens _ndNetwork (\ s a -> s{_ndNetwork = a})
+
+instance GoogleRequest NetworksDelete where
+        type Rs NetworksDelete = Operation
+        requestClient NetworksDelete{..}
+          = go _ndProject _ndNetwork (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NetworksDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/Get.hs b/gen/Network/Google/Resource/Compute/Networks/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/Get.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.Networks.Get
+-- Copyright   : (c) 2015 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 the specified network resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.get@.
+module Network.Google.Resource.Compute.Networks.Get
+    (
+    -- * REST Resource
+      NetworksGetResource
+
+    -- * Creating a Request
+    , networksGet
+    , NetworksGet
+
+    -- * Request Lenses
+    , ngProject
+    , ngNetwork
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.get@ method which the
+-- 'NetworksGet' request conforms to.
+type NetworksGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 Capture "network" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Network
+
+-- | Returns the specified network resource.
+--
+-- /See:/ 'networksGet' smart constructor.
+data NetworksGet = NetworksGet
+    { _ngProject :: !Text
+    , _ngNetwork :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ngProject'
+--
+-- * 'ngNetwork'
+networksGet
+    :: Text -- ^ 'ngProject'
+    -> Text -- ^ 'ngNetwork'
+    -> NetworksGet
+networksGet pNgProject_ pNgNetwork_ =
+    NetworksGet
+    { _ngProject = pNgProject_
+    , _ngNetwork = pNgNetwork_
+    }
+
+-- | Project ID for this request.
+ngProject :: Lens' NetworksGet Text
+ngProject
+  = lens _ngProject (\ s a -> s{_ngProject = a})
+
+-- | Name of the network resource to return.
+ngNetwork :: Lens' NetworksGet Text
+ngNetwork
+  = lens _ngNetwork (\ s a -> s{_ngNetwork = a})
+
+instance GoogleRequest NetworksGet where
+        type Rs NetworksGet = Network
+        requestClient NetworksGet{..}
+          = go _ngProject _ngNetwork (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NetworksGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/Insert.hs b/gen/Network/Google/Resource/Compute/Networks/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/Insert.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.Networks.Insert
+-- Copyright   : (c) 2015 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 network resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.insert@.
+module Network.Google.Resource.Compute.Networks.Insert
+    (
+    -- * REST Resource
+      NetworksInsertResource
+
+    -- * Creating a Request
+    , networksInsert
+    , NetworksInsert
+
+    -- * Request Lenses
+    , niProject
+    , niPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.insert@ method which the
+-- 'NetworksInsert' request conforms to.
+type NetworksInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Network :> Post '[JSON] Operation
+
+-- | Creates a network resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'networksInsert' smart constructor.
+data NetworksInsert = NetworksInsert
+    { _niProject :: !Text
+    , _niPayload :: !Network
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niProject'
+--
+-- * 'niPayload'
+networksInsert
+    :: Text -- ^ 'niProject'
+    -> Network -- ^ 'niPayload'
+    -> NetworksInsert
+networksInsert pNiProject_ pNiPayload_ =
+    NetworksInsert
+    { _niProject = pNiProject_
+    , _niPayload = pNiPayload_
+    }
+
+-- | Project ID for this request.
+niProject :: Lens' NetworksInsert Text
+niProject
+  = lens _niProject (\ s a -> s{_niProject = a})
+
+-- | Multipart request metadata.
+niPayload :: Lens' NetworksInsert Network
+niPayload
+  = lens _niPayload (\ s a -> s{_niPayload = a})
+
+instance GoogleRequest NetworksInsert where
+        type Rs NetworksInsert = Operation
+        requestClient NetworksInsert{..}
+          = go _niProject (Just AltJSON) _niPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NetworksInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Networks/List.hs b/gen/Network/Google/Resource/Compute/Networks/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Networks/List.hs
@@ -0,0 +1,134 @@
+{-# 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.Compute.Networks.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of network resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.networks.list@.
+module Network.Google.Resource.Compute.Networks.List
+    (
+    -- * REST Resource
+      NetworksListResource
+
+    -- * Creating a Request
+    , networksList
+    , NetworksList
+
+    -- * Request Lenses
+    , nlProject
+    , nlFilter
+    , nlPageToken
+    , nlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.networks.list@ method which the
+-- 'NetworksList' request conforms to.
+type NetworksListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "networks" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] NetworkList
+
+-- | Retrieves the list of network resources available to the specified
+-- project.
+--
+-- /See:/ 'networksList' smart constructor.
+data NetworksList = NetworksList
+    { _nlProject    :: !Text
+    , _nlFilter     :: !(Maybe Text)
+    , _nlPageToken  :: !(Maybe Text)
+    , _nlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworksList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nlProject'
+--
+-- * 'nlFilter'
+--
+-- * 'nlPageToken'
+--
+-- * 'nlMaxResults'
+networksList
+    :: Text -- ^ 'nlProject'
+    -> NetworksList
+networksList pNlProject_ =
+    NetworksList
+    { _nlProject = pNlProject_
+    , _nlFilter = Nothing
+    , _nlPageToken = Nothing
+    , _nlMaxResults = 500
+    }
+
+-- | Project ID for this request.
+nlProject :: Lens' NetworksList Text
+nlProject
+  = lens _nlProject (\ s a -> s{_nlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+nlFilter :: Lens' NetworksList (Maybe Text)
+nlFilter = lens _nlFilter (\ s a -> s{_nlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+nlPageToken :: Lens' NetworksList (Maybe Text)
+nlPageToken
+  = lens _nlPageToken (\ s a -> s{_nlPageToken = a})
+
+-- | Maximum count of results to be returned.
+nlMaxResults :: Lens' NetworksList Word32
+nlMaxResults
+  = lens _nlMaxResults (\ s a -> s{_nlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest NetworksList where
+        type Rs NetworksList = NetworkList
+        requestClient NetworksList{..}
+          = go _nlProject _nlFilter _nlPageToken
+              (Just _nlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy NetworksListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/Get.hs b/gen/Network/Google/Resource/Compute/Projects/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/Get.hs
@@ -0,0 +1,82 @@
+{-# 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.Compute.Projects.Get
+-- Copyright   : (c) 2015 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 the specified project resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.get@.
+module Network.Google.Resource.Compute.Projects.Get
+    (
+    -- * REST Resource
+      ProjectsGetResource
+
+    -- * Creating a Request
+    , projectsGet
+    , ProjectsGet
+
+    -- * Request Lenses
+    , pgProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.get@ method which the
+-- 'ProjectsGet' request conforms to.
+type ProjectsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             QueryParam "alt" AltJSON :> Get '[JSON] Project
+
+-- | Returns the specified project resource.
+--
+-- /See:/ 'projectsGet' smart constructor.
+newtype ProjectsGet = ProjectsGet
+    { _pgProject :: Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgProject'
+projectsGet
+    :: Text -- ^ 'pgProject'
+    -> ProjectsGet
+projectsGet pPgProject_ =
+    ProjectsGet
+    { _pgProject = pPgProject_
+    }
+
+-- | Project ID for this request.
+pgProject :: Lens' ProjectsGet Text
+pgProject
+  = lens _pgProject (\ s a -> s{_pgProject = a})
+
+instance GoogleRequest ProjectsGet where
+        type Rs ProjectsGet = Project
+        requestClient ProjectsGet{..}
+          = go _pgProject (Just AltJSON) computeService
+          where go
+                  = buildClient (Proxy :: Proxy ProjectsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs b/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/MoveDisk.hs
@@ -0,0 +1,98 @@
+{-# 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.Compute.Projects.MoveDisk
+-- Copyright   : (c) 2015 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)
+--
+-- Moves a persistent disk from one zone to another.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.moveDisk@.
+module Network.Google.Resource.Compute.Projects.MoveDisk
+    (
+    -- * REST Resource
+      ProjectsMoveDiskResource
+
+    -- * Creating a Request
+    , projectsMoveDisk
+    , ProjectsMoveDisk
+
+    -- * Request Lenses
+    , pmdProject
+    , pmdPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.moveDisk@ method which the
+-- 'ProjectsMoveDisk' request conforms to.
+type ProjectsMoveDiskResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "moveDisk" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] DiskMoveRequest :>
+                   Post '[JSON] Operation
+
+-- | Moves a persistent disk from one zone to another.
+--
+-- /See:/ 'projectsMoveDisk' smart constructor.
+data ProjectsMoveDisk = ProjectsMoveDisk
+    { _pmdProject :: !Text
+    , _pmdPayload :: !DiskMoveRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsMoveDisk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmdProject'
+--
+-- * 'pmdPayload'
+projectsMoveDisk
+    :: Text -- ^ 'pmdProject'
+    -> DiskMoveRequest -- ^ 'pmdPayload'
+    -> ProjectsMoveDisk
+projectsMoveDisk pPmdProject_ pPmdPayload_ =
+    ProjectsMoveDisk
+    { _pmdProject = pPmdProject_
+    , _pmdPayload = pPmdPayload_
+    }
+
+-- | Project ID for this request.
+pmdProject :: Lens' ProjectsMoveDisk Text
+pmdProject
+  = lens _pmdProject (\ s a -> s{_pmdProject = a})
+
+-- | Multipart request metadata.
+pmdPayload :: Lens' ProjectsMoveDisk DiskMoveRequest
+pmdPayload
+  = lens _pmdPayload (\ s a -> s{_pmdPayload = a})
+
+instance GoogleRequest ProjectsMoveDisk where
+        type Rs ProjectsMoveDisk = Operation
+        requestClient ProjectsMoveDisk{..}
+          = go _pmdProject (Just AltJSON) _pmdPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsMoveDiskResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs b/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/MoveInstance.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.Projects.MoveInstance
+-- Copyright   : (c) 2015 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)
+--
+-- Moves an instance and its attached persistent disks from one zone to
+-- another.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.moveInstance@.
+module Network.Google.Resource.Compute.Projects.MoveInstance
+    (
+    -- * REST Resource
+      ProjectsMoveInstanceResource
+
+    -- * Creating a Request
+    , projectsMoveInstance
+    , ProjectsMoveInstance
+
+    -- * Request Lenses
+    , pmiProject
+    , pmiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.moveInstance@ method which the
+-- 'ProjectsMoveInstance' request conforms to.
+type ProjectsMoveInstanceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "moveInstance" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] InstanceMoveRequest :>
+                   Post '[JSON] Operation
+
+-- | Moves an instance and its attached persistent disks from one zone to
+-- another.
+--
+-- /See:/ 'projectsMoveInstance' smart constructor.
+data ProjectsMoveInstance = ProjectsMoveInstance
+    { _pmiProject :: !Text
+    , _pmiPayload :: !InstanceMoveRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsMoveInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmiProject'
+--
+-- * 'pmiPayload'
+projectsMoveInstance
+    :: Text -- ^ 'pmiProject'
+    -> InstanceMoveRequest -- ^ 'pmiPayload'
+    -> ProjectsMoveInstance
+projectsMoveInstance pPmiProject_ pPmiPayload_ =
+    ProjectsMoveInstance
+    { _pmiProject = pPmiProject_
+    , _pmiPayload = pPmiPayload_
+    }
+
+-- | Project ID for this request.
+pmiProject :: Lens' ProjectsMoveInstance Text
+pmiProject
+  = lens _pmiProject (\ s a -> s{_pmiProject = a})
+
+-- | Multipart request metadata.
+pmiPayload :: Lens' ProjectsMoveInstance InstanceMoveRequest
+pmiPayload
+  = lens _pmiPayload (\ s a -> s{_pmiPayload = a})
+
+instance GoogleRequest ProjectsMoveInstance where
+        type Rs ProjectsMoveInstance = Operation
+        requestClient ProjectsMoveInstance{..}
+          = go _pmiProject (Just AltJSON) _pmiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsMoveInstanceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs b/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/SetCommonInstanceMetadata.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.Projects.SetCommonInstanceMetadata
+-- Copyright   : (c) 2015 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 metadata common to all instances within the specified project using
+-- the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.setCommonInstanceMetadata@.
+module Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+    (
+    -- * REST Resource
+      ProjectsSetCommonInstanceMetadataResource
+
+    -- * Creating a Request
+    , projectsSetCommonInstanceMetadata
+    , ProjectsSetCommonInstanceMetadata
+
+    -- * Request Lenses
+    , pscimProject
+    , pscimPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.setCommonInstanceMetadata@ method which the
+-- 'ProjectsSetCommonInstanceMetadata' request conforms to.
+type ProjectsSetCommonInstanceMetadataResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "setCommonInstanceMetadata" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Metadata :> Post '[JSON] Operation
+
+-- | Sets metadata common to all instances within the specified project using
+-- the data included in the request.
+--
+-- /See:/ 'projectsSetCommonInstanceMetadata' smart constructor.
+data ProjectsSetCommonInstanceMetadata = ProjectsSetCommonInstanceMetadata
+    { _pscimProject :: !Text
+    , _pscimPayload :: !Metadata
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsSetCommonInstanceMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pscimProject'
+--
+-- * 'pscimPayload'
+projectsSetCommonInstanceMetadata
+    :: Text -- ^ 'pscimProject'
+    -> Metadata -- ^ 'pscimPayload'
+    -> ProjectsSetCommonInstanceMetadata
+projectsSetCommonInstanceMetadata pPscimProject_ pPscimPayload_ =
+    ProjectsSetCommonInstanceMetadata
+    { _pscimProject = pPscimProject_
+    , _pscimPayload = pPscimPayload_
+    }
+
+-- | Project ID for this request.
+pscimProject :: Lens' ProjectsSetCommonInstanceMetadata Text
+pscimProject
+  = lens _pscimProject (\ s a -> s{_pscimProject = a})
+
+-- | Multipart request metadata.
+pscimPayload :: Lens' ProjectsSetCommonInstanceMetadata Metadata
+pscimPayload
+  = lens _pscimPayload (\ s a -> s{_pscimPayload = a})
+
+instance GoogleRequest
+         ProjectsSetCommonInstanceMetadata where
+        type Rs ProjectsSetCommonInstanceMetadata = Operation
+        requestClient ProjectsSetCommonInstanceMetadata{..}
+          = go _pscimProject (Just AltJSON) _pscimPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsSetCommonInstanceMetadataResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs b/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Projects/SetUsageExportBucket.hs
@@ -0,0 +1,103 @@
+{-# 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.Compute.Projects.SetUsageExportBucket
+-- Copyright   : (c) 2015 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)
+--
+-- Enables the usage export feature and sets the usage export bucket where
+-- reports are stored. If you provide an empty request body using this
+-- method, the usage export feature will be disabled.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.projects.setUsageExportBucket@.
+module Network.Google.Resource.Compute.Projects.SetUsageExportBucket
+    (
+    -- * REST Resource
+      ProjectsSetUsageExportBucketResource
+
+    -- * Creating a Request
+    , projectsSetUsageExportBucket
+    , ProjectsSetUsageExportBucket
+
+    -- * Request Lenses
+    , psuebProject
+    , psuebPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.projects.setUsageExportBucket@ method which the
+-- 'ProjectsSetUsageExportBucket' request conforms to.
+type ProjectsSetUsageExportBucketResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "setUsageExportBucket" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] UsageExportLocation :>
+                   Post '[JSON] Operation
+
+-- | Enables the usage export feature and sets the usage export bucket where
+-- reports are stored. If you provide an empty request body using this
+-- method, the usage export feature will be disabled.
+--
+-- /See:/ 'projectsSetUsageExportBucket' smart constructor.
+data ProjectsSetUsageExportBucket = ProjectsSetUsageExportBucket
+    { _psuebProject :: !Text
+    , _psuebPayload :: !UsageExportLocation
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsSetUsageExportBucket' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psuebProject'
+--
+-- * 'psuebPayload'
+projectsSetUsageExportBucket
+    :: Text -- ^ 'psuebProject'
+    -> UsageExportLocation -- ^ 'psuebPayload'
+    -> ProjectsSetUsageExportBucket
+projectsSetUsageExportBucket pPsuebProject_ pPsuebPayload_ =
+    ProjectsSetUsageExportBucket
+    { _psuebProject = pPsuebProject_
+    , _psuebPayload = pPsuebPayload_
+    }
+
+-- | Project ID for this request.
+psuebProject :: Lens' ProjectsSetUsageExportBucket Text
+psuebProject
+  = lens _psuebProject (\ s a -> s{_psuebProject = a})
+
+-- | Multipart request metadata.
+psuebPayload :: Lens' ProjectsSetUsageExportBucket UsageExportLocation
+psuebPayload
+  = lens _psuebPayload (\ s a -> s{_psuebPayload = a})
+
+instance GoogleRequest ProjectsSetUsageExportBucket
+         where
+        type Rs ProjectsSetUsageExportBucket = Operation
+        requestClient ProjectsSetUsageExportBucket{..}
+          = go _psuebProject (Just AltJSON) _psuebPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsSetUsageExportBucketResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs b/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionOperations/Delete.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.RegionOperations.Delete
+-- Copyright   : (c) 2015 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 the specified region-specific Operations resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionOperations.delete@.
+module Network.Google.Resource.Compute.RegionOperations.Delete
+    (
+    -- * REST Resource
+      RegionOperationsDeleteResource
+
+    -- * Creating a Request
+    , regionOperationsDelete
+    , RegionOperationsDelete
+
+    -- * Request Lenses
+    , rodProject
+    , rodOperation
+    , rodRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionOperations.delete@ method which the
+-- 'RegionOperationsDelete' request conforms to.
+type RegionOperationsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "operations" :>
+                   Capture "operation" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the specified region-specific Operations resource.
+--
+-- /See:/ 'regionOperationsDelete' smart constructor.
+data RegionOperationsDelete = RegionOperationsDelete
+    { _rodProject   :: !Text
+    , _rodOperation :: !Text
+    , _rodRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionOperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rodProject'
+--
+-- * 'rodOperation'
+--
+-- * 'rodRegion'
+regionOperationsDelete
+    :: Text -- ^ 'rodProject'
+    -> Text -- ^ 'rodOperation'
+    -> Text -- ^ 'rodRegion'
+    -> RegionOperationsDelete
+regionOperationsDelete pRodProject_ pRodOperation_ pRodRegion_ =
+    RegionOperationsDelete
+    { _rodProject = pRodProject_
+    , _rodOperation = pRodOperation_
+    , _rodRegion = pRodRegion_
+    }
+
+-- | Project ID for this request.
+rodProject :: Lens' RegionOperationsDelete Text
+rodProject
+  = lens _rodProject (\ s a -> s{_rodProject = a})
+
+-- | Name of the Operations resource to delete.
+rodOperation :: Lens' RegionOperationsDelete Text
+rodOperation
+  = lens _rodOperation (\ s a -> s{_rodOperation = a})
+
+-- | Name of the region scoping this request.
+rodRegion :: Lens' RegionOperationsDelete Text
+rodRegion
+  = lens _rodRegion (\ s a -> s{_rodRegion = a})
+
+instance GoogleRequest RegionOperationsDelete where
+        type Rs RegionOperationsDelete = ()
+        requestClient RegionOperationsDelete{..}
+          = go _rodProject _rodRegion _rodOperation
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs b/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionOperations/Get.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.RegionOperations.Get
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the specified region-specific Operations resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionOperations.get@.
+module Network.Google.Resource.Compute.RegionOperations.Get
+    (
+    -- * REST Resource
+      RegionOperationsGetResource
+
+    -- * Creating a Request
+    , regionOperationsGet
+    , RegionOperationsGet
+
+    -- * Request Lenses
+    , rogProject
+    , rogOperation
+    , rogRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionOperations.get@ method which the
+-- 'RegionOperationsGet' request conforms to.
+type RegionOperationsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "operations" :>
+                   Capture "operation" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Retrieves the specified region-specific Operations resource.
+--
+-- /See:/ 'regionOperationsGet' smart constructor.
+data RegionOperationsGet = RegionOperationsGet
+    { _rogProject   :: !Text
+    , _rogOperation :: !Text
+    , _rogRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rogProject'
+--
+-- * 'rogOperation'
+--
+-- * 'rogRegion'
+regionOperationsGet
+    :: Text -- ^ 'rogProject'
+    -> Text -- ^ 'rogOperation'
+    -> Text -- ^ 'rogRegion'
+    -> RegionOperationsGet
+regionOperationsGet pRogProject_ pRogOperation_ pRogRegion_ =
+    RegionOperationsGet
+    { _rogProject = pRogProject_
+    , _rogOperation = pRogOperation_
+    , _rogRegion = pRogRegion_
+    }
+
+-- | Project ID for this request.
+rogProject :: Lens' RegionOperationsGet Text
+rogProject
+  = lens _rogProject (\ s a -> s{_rogProject = a})
+
+-- | Name of the Operations resource to return.
+rogOperation :: Lens' RegionOperationsGet Text
+rogOperation
+  = lens _rogOperation (\ s a -> s{_rogOperation = a})
+
+-- | Name of the zone scoping this request.
+rogRegion :: Lens' RegionOperationsGet Text
+rogRegion
+  = lens _rogRegion (\ s a -> s{_rogRegion = a})
+
+instance GoogleRequest RegionOperationsGet where
+        type Rs RegionOperationsGet = Operation
+        requestClient RegionOperationsGet{..}
+          = go _rogProject _rogRegion _rogOperation
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/RegionOperations/List.hs b/gen/Network/Google/Resource/Compute/RegionOperations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/RegionOperations/List.hs
@@ -0,0 +1,149 @@
+{-# 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.Compute.RegionOperations.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of Operation resources contained within the specified
+-- region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regionOperations.list@.
+module Network.Google.Resource.Compute.RegionOperations.List
+    (
+    -- * REST Resource
+      RegionOperationsListResource
+
+    -- * Creating a Request
+    , regionOperationsList
+    , RegionOperationsList
+
+    -- * Request Lenses
+    , rolProject
+    , rolFilter
+    , rolRegion
+    , rolPageToken
+    , rolMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regionOperations.list@ method which the
+-- 'RegionOperationsList' request conforms to.
+type RegionOperationsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "operations" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] OperationList
+
+-- | Retrieves the list of Operation resources contained within the specified
+-- region.
+--
+-- /See:/ 'regionOperationsList' smart constructor.
+data RegionOperationsList = RegionOperationsList
+    { _rolProject    :: !Text
+    , _rolFilter     :: !(Maybe Text)
+    , _rolRegion     :: !Text
+    , _rolPageToken  :: !(Maybe Text)
+    , _rolMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rolProject'
+--
+-- * 'rolFilter'
+--
+-- * 'rolRegion'
+--
+-- * 'rolPageToken'
+--
+-- * 'rolMaxResults'
+regionOperationsList
+    :: Text -- ^ 'rolProject'
+    -> Text -- ^ 'rolRegion'
+    -> RegionOperationsList
+regionOperationsList pRolProject_ pRolRegion_ =
+    RegionOperationsList
+    { _rolProject = pRolProject_
+    , _rolFilter = Nothing
+    , _rolRegion = pRolRegion_
+    , _rolPageToken = Nothing
+    , _rolMaxResults = 500
+    }
+
+-- | Project ID for this request.
+rolProject :: Lens' RegionOperationsList Text
+rolProject
+  = lens _rolProject (\ s a -> s{_rolProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+rolFilter :: Lens' RegionOperationsList (Maybe Text)
+rolFilter
+  = lens _rolFilter (\ s a -> s{_rolFilter = a})
+
+-- | Name of the region scoping this request.
+rolRegion :: Lens' RegionOperationsList Text
+rolRegion
+  = lens _rolRegion (\ s a -> s{_rolRegion = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+rolPageToken :: Lens' RegionOperationsList (Maybe Text)
+rolPageToken
+  = lens _rolPageToken (\ s a -> s{_rolPageToken = a})
+
+-- | Maximum count of results to be returned.
+rolMaxResults :: Lens' RegionOperationsList Word32
+rolMaxResults
+  = lens _rolMaxResults
+      (\ s a -> s{_rolMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest RegionOperationsList where
+        type Rs RegionOperationsList = OperationList
+        requestClient RegionOperationsList{..}
+          = go _rolProject _rolRegion _rolFilter _rolPageToken
+              (Just _rolMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy RegionOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Regions/Get.hs b/gen/Network/Google/Resource/Compute/Regions/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Regions/Get.hs
@@ -0,0 +1,95 @@
+{-# 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.Compute.Regions.Get
+-- Copyright   : (c) 2015 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 the specified region resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regions.get@.
+module Network.Google.Resource.Compute.Regions.Get
+    (
+    -- * REST Resource
+      RegionsGetResource
+
+    -- * Creating a Request
+    , regionsGet
+    , RegionsGet
+
+    -- * Request Lenses
+    , rgProject
+    , rgRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regions.get@ method which the
+-- 'RegionsGet' request conforms to.
+type RegionsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Region
+
+-- | Returns the specified region resource.
+--
+-- /See:/ 'regionsGet' smart constructor.
+data RegionsGet = RegionsGet
+    { _rgProject :: !Text
+    , _rgRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rgProject'
+--
+-- * 'rgRegion'
+regionsGet
+    :: Text -- ^ 'rgProject'
+    -> Text -- ^ 'rgRegion'
+    -> RegionsGet
+regionsGet pRgProject_ pRgRegion_ =
+    RegionsGet
+    { _rgProject = pRgProject_
+    , _rgRegion = pRgRegion_
+    }
+
+-- | Project ID for this request.
+rgProject :: Lens' RegionsGet Text
+rgProject
+  = lens _rgProject (\ s a -> s{_rgProject = a})
+
+-- | Name of the region resource to return.
+rgRegion :: Lens' RegionsGet Text
+rgRegion = lens _rgRegion (\ s a -> s{_rgRegion = a})
+
+instance GoogleRequest RegionsGet where
+        type Rs RegionsGet = Region
+        requestClient RegionsGet{..}
+          = go _rgProject _rgRegion (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RegionsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Regions/List.hs b/gen/Network/Google/Resource/Compute/Regions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Regions/List.hs
@@ -0,0 +1,132 @@
+{-# 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.Compute.Regions.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of region resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.regions.list@.
+module Network.Google.Resource.Compute.Regions.List
+    (
+    -- * REST Resource
+      RegionsListResource
+
+    -- * Creating a Request
+    , regionsList
+    , RegionsList
+
+    -- * Request Lenses
+    , rProject
+    , rFilter
+    , rPageToken
+    , rMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.regions.list@ method which the
+-- 'RegionsList' request conforms to.
+type RegionsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               QueryParam "filter" Text :>
+                 QueryParam "pageToken" Text :>
+                   QueryParam "maxResults" (Textual Word32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] RegionList
+
+-- | Retrieves the list of region resources available to the specified
+-- project.
+--
+-- /See:/ 'regionsList' smart constructor.
+data RegionsList = RegionsList
+    { _rProject    :: !Text
+    , _rFilter     :: !(Maybe Text)
+    , _rPageToken  :: !(Maybe Text)
+    , _rMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegionsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rProject'
+--
+-- * 'rFilter'
+--
+-- * 'rPageToken'
+--
+-- * 'rMaxResults'
+regionsList
+    :: Text -- ^ 'rProject'
+    -> RegionsList
+regionsList pRProject_ =
+    RegionsList
+    { _rProject = pRProject_
+    , _rFilter = Nothing
+    , _rPageToken = Nothing
+    , _rMaxResults = 500
+    }
+
+-- | Project ID for this request.
+rProject :: Lens' RegionsList Text
+rProject = lens _rProject (\ s a -> s{_rProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+rFilter :: Lens' RegionsList (Maybe Text)
+rFilter = lens _rFilter (\ s a -> s{_rFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+rPageToken :: Lens' RegionsList (Maybe Text)
+rPageToken
+  = lens _rPageToken (\ s a -> s{_rPageToken = a})
+
+-- | Maximum count of results to be returned.
+rMaxResults :: Lens' RegionsList Word32
+rMaxResults
+  = lens _rMaxResults (\ s a -> s{_rMaxResults = a}) .
+      _Coerce
+
+instance GoogleRequest RegionsList where
+        type Rs RegionsList = RegionList
+        requestClient RegionsList{..}
+          = go _rProject _rFilter _rPageToken
+              (Just _rMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RegionsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Routes/Delete.hs b/gen/Network/Google/Resource/Compute/Routes/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Routes/Delete.hs
@@ -0,0 +1,96 @@
+{-# 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.Compute.Routes.Delete
+-- Copyright   : (c) 2015 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 the specified route resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routes.delete@.
+module Network.Google.Resource.Compute.Routes.Delete
+    (
+    -- * REST Resource
+      RoutesDeleteResource
+
+    -- * Creating a Request
+    , routesDelete
+    , RoutesDelete
+
+    -- * Request Lenses
+    , rdProject
+    , rdRoute
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.routes.delete@ method which the
+-- 'RoutesDelete' request conforms to.
+type RoutesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "routes" :>
+                 Capture "route" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified route resource.
+--
+-- /See:/ 'routesDelete' smart constructor.
+data RoutesDelete = RoutesDelete
+    { _rdProject :: !Text
+    , _rdRoute   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdProject'
+--
+-- * 'rdRoute'
+routesDelete
+    :: Text -- ^ 'rdProject'
+    -> Text -- ^ 'rdRoute'
+    -> RoutesDelete
+routesDelete pRdProject_ pRdRoute_ =
+    RoutesDelete
+    { _rdProject = pRdProject_
+    , _rdRoute = pRdRoute_
+    }
+
+-- | Name of the project scoping this request.
+rdProject :: Lens' RoutesDelete Text
+rdProject
+  = lens _rdProject (\ s a -> s{_rdProject = a})
+
+-- | Name of the route resource to delete.
+rdRoute :: Lens' RoutesDelete Text
+rdRoute = lens _rdRoute (\ s a -> s{_rdRoute = a})
+
+instance GoogleRequest RoutesDelete where
+        type Rs RoutesDelete = Operation
+        requestClient RoutesDelete{..}
+          = go _rdProject _rdRoute (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RoutesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Routes/Get.hs b/gen/Network/Google/Resource/Compute/Routes/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Routes/Get.hs
@@ -0,0 +1,96 @@
+{-# 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.Compute.Routes.Get
+-- Copyright   : (c) 2015 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 the specified route resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routes.get@.
+module Network.Google.Resource.Compute.Routes.Get
+    (
+    -- * REST Resource
+      RoutesGetResource
+
+    -- * Creating a Request
+    , routesGet
+    , RoutesGet
+
+    -- * Request Lenses
+    , rouProject
+    , rouRoute
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.routes.get@ method which the
+-- 'RoutesGet' request conforms to.
+type RoutesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "routes" :>
+                 Capture "route" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Route
+
+-- | Returns the specified route resource.
+--
+-- /See:/ 'routesGet' smart constructor.
+data RoutesGet = RoutesGet
+    { _rouProject :: !Text
+    , _rouRoute   :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rouProject'
+--
+-- * 'rouRoute'
+routesGet
+    :: Text -- ^ 'rouProject'
+    -> Text -- ^ 'rouRoute'
+    -> RoutesGet
+routesGet pRouProject_ pRouRoute_ =
+    RoutesGet
+    { _rouProject = pRouProject_
+    , _rouRoute = pRouRoute_
+    }
+
+-- | Name of the project scoping this request.
+rouProject :: Lens' RoutesGet Text
+rouProject
+  = lens _rouProject (\ s a -> s{_rouProject = a})
+
+-- | Name of the route resource to return.
+rouRoute :: Lens' RoutesGet Text
+rouRoute = lens _rouRoute (\ s a -> s{_rouRoute = a})
+
+instance GoogleRequest RoutesGet where
+        type Rs RoutesGet = Route
+        requestClient RoutesGet{..}
+          = go _rouProject _rouRoute (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RoutesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Routes/Insert.hs b/gen/Network/Google/Resource/Compute/Routes/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Routes/Insert.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.Routes.Insert
+-- Copyright   : (c) 2015 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 route resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routes.insert@.
+module Network.Google.Resource.Compute.Routes.Insert
+    (
+    -- * REST Resource
+      RoutesInsertResource
+
+    -- * Creating a Request
+    , routesInsert
+    , RoutesInsert
+
+    -- * Request Lenses
+    , riProject
+    , riPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.routes.insert@ method which the
+-- 'RoutesInsert' request conforms to.
+type RoutesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "routes" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Route :> Post '[JSON] Operation
+
+-- | Creates a route resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'routesInsert' smart constructor.
+data RoutesInsert = RoutesInsert
+    { _riProject :: !Text
+    , _riPayload :: !Route
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'riProject'
+--
+-- * 'riPayload'
+routesInsert
+    :: Text -- ^ 'riProject'
+    -> Route -- ^ 'riPayload'
+    -> RoutesInsert
+routesInsert pRiProject_ pRiPayload_ =
+    RoutesInsert
+    { _riProject = pRiProject_
+    , _riPayload = pRiPayload_
+    }
+
+-- | Name of the project scoping this request.
+riProject :: Lens' RoutesInsert Text
+riProject
+  = lens _riProject (\ s a -> s{_riProject = a})
+
+-- | Multipart request metadata.
+riPayload :: Lens' RoutesInsert Route
+riPayload
+  = lens _riPayload (\ s a -> s{_riPayload = a})
+
+instance GoogleRequest RoutesInsert where
+        type Rs RoutesInsert = Operation
+        requestClient RoutesInsert{..}
+          = go _riProject (Just AltJSON) _riPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RoutesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Routes/List.hs b/gen/Network/Google/Resource/Compute/Routes/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Routes/List.hs
@@ -0,0 +1,134 @@
+{-# 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.Compute.Routes.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of route resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.routes.list@.
+module Network.Google.Resource.Compute.Routes.List
+    (
+    -- * REST Resource
+      RoutesListResource
+
+    -- * Creating a Request
+    , routesList
+    , RoutesList
+
+    -- * Request Lenses
+    , rlProject
+    , rlFilter
+    , rlPageToken
+    , rlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.routes.list@ method which the
+-- 'RoutesList' request conforms to.
+type RoutesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "routes" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] RouteList
+
+-- | Retrieves the list of route resources available to the specified
+-- project.
+--
+-- /See:/ 'routesList' smart constructor.
+data RoutesList = RoutesList
+    { _rlProject    :: !Text
+    , _rlFilter     :: !(Maybe Text)
+    , _rlPageToken  :: !(Maybe Text)
+    , _rlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RoutesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlProject'
+--
+-- * 'rlFilter'
+--
+-- * 'rlPageToken'
+--
+-- * 'rlMaxResults'
+routesList
+    :: Text -- ^ 'rlProject'
+    -> RoutesList
+routesList pRlProject_ =
+    RoutesList
+    { _rlProject = pRlProject_
+    , _rlFilter = Nothing
+    , _rlPageToken = Nothing
+    , _rlMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+rlProject :: Lens' RoutesList Text
+rlProject
+  = lens _rlProject (\ s a -> s{_rlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+rlFilter :: Lens' RoutesList (Maybe Text)
+rlFilter = lens _rlFilter (\ s a -> s{_rlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+rlPageToken :: Lens' RoutesList (Maybe Text)
+rlPageToken
+  = lens _rlPageToken (\ s a -> s{_rlPageToken = a})
+
+-- | Maximum count of results to be returned.
+rlMaxResults :: Lens' RoutesList Word32
+rlMaxResults
+  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest RoutesList where
+        type Rs RoutesList = RouteList
+        requestClient RoutesList{..}
+          = go _rlProject _rlFilter _rlPageToken
+              (Just _rlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy RoutesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/Delete.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.SSLCertificates.Delete
+-- Copyright   : (c) 2015 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 the specified SslCertificate resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslCertificates.delete@.
+module Network.Google.Resource.Compute.SSLCertificates.Delete
+    (
+    -- * REST Resource
+      SSLCertificatesDeleteResource
+
+    -- * Creating a Request
+    , sslCertificatesDelete
+    , SSLCertificatesDelete
+
+    -- * Request Lenses
+    , scdProject
+    , scdSSLCertificate
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslCertificates.delete@ method which the
+-- 'SSLCertificatesDelete' request conforms to.
+type SSLCertificatesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslCertificates" :>
+                 Capture "sslCertificate" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified SslCertificate resource.
+--
+-- /See:/ 'sslCertificatesDelete' smart constructor.
+data SSLCertificatesDelete = SSLCertificatesDelete
+    { _scdProject        :: !Text
+    , _scdSSLCertificate :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificatesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scdProject'
+--
+-- * 'scdSSLCertificate'
+sslCertificatesDelete
+    :: Text -- ^ 'scdProject'
+    -> Text -- ^ 'scdSSLCertificate'
+    -> SSLCertificatesDelete
+sslCertificatesDelete pScdProject_ pScdSSLCertificate_ =
+    SSLCertificatesDelete
+    { _scdProject = pScdProject_
+    , _scdSSLCertificate = pScdSSLCertificate_
+    }
+
+-- | Name of the project scoping this request.
+scdProject :: Lens' SSLCertificatesDelete Text
+scdProject
+  = lens _scdProject (\ s a -> s{_scdProject = a})
+
+-- | Name of the SslCertificate resource to delete.
+scdSSLCertificate :: Lens' SSLCertificatesDelete Text
+scdSSLCertificate
+  = lens _scdSSLCertificate
+      (\ s a -> s{_scdSSLCertificate = a})
+
+instance GoogleRequest SSLCertificatesDelete where
+        type Rs SSLCertificatesDelete = Operation
+        requestClient SSLCertificatesDelete{..}
+          = go _scdProject _scdSSLCertificate (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLCertificatesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/Get.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.SSLCertificates.Get
+-- Copyright   : (c) 2015 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 the specified SslCertificate resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslCertificates.get@.
+module Network.Google.Resource.Compute.SSLCertificates.Get
+    (
+    -- * REST Resource
+      SSLCertificatesGetResource
+
+    -- * Creating a Request
+    , sslCertificatesGet
+    , SSLCertificatesGet
+
+    -- * Request Lenses
+    , scgProject
+    , scgSSLCertificate
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslCertificates.get@ method which the
+-- 'SSLCertificatesGet' request conforms to.
+type SSLCertificatesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslCertificates" :>
+                 Capture "sslCertificate" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] SSLCertificate
+
+-- | Returns the specified SslCertificate resource.
+--
+-- /See:/ 'sslCertificatesGet' smart constructor.
+data SSLCertificatesGet = SSLCertificatesGet
+    { _scgProject        :: !Text
+    , _scgSSLCertificate :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificatesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scgProject'
+--
+-- * 'scgSSLCertificate'
+sslCertificatesGet
+    :: Text -- ^ 'scgProject'
+    -> Text -- ^ 'scgSSLCertificate'
+    -> SSLCertificatesGet
+sslCertificatesGet pScgProject_ pScgSSLCertificate_ =
+    SSLCertificatesGet
+    { _scgProject = pScgProject_
+    , _scgSSLCertificate = pScgSSLCertificate_
+    }
+
+-- | Name of the project scoping this request.
+scgProject :: Lens' SSLCertificatesGet Text
+scgProject
+  = lens _scgProject (\ s a -> s{_scgProject = a})
+
+-- | Name of the SslCertificate resource to return.
+scgSSLCertificate :: Lens' SSLCertificatesGet Text
+scgSSLCertificate
+  = lens _scgSSLCertificate
+      (\ s a -> s{_scgSSLCertificate = a})
+
+instance GoogleRequest SSLCertificatesGet where
+        type Rs SSLCertificatesGet = SSLCertificate
+        requestClient SSLCertificatesGet{..}
+          = go _scgProject _scgSSLCertificate (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLCertificatesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/Insert.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.SSLCertificates.Insert
+-- Copyright   : (c) 2015 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 SslCertificate resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslCertificates.insert@.
+module Network.Google.Resource.Compute.SSLCertificates.Insert
+    (
+    -- * REST Resource
+      SSLCertificatesInsertResource
+
+    -- * Creating a Request
+    , sslCertificatesInsert
+    , SSLCertificatesInsert
+
+    -- * Request Lenses
+    , sciProject
+    , sciPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslCertificates.insert@ method which the
+-- 'SSLCertificatesInsert' request conforms to.
+type SSLCertificatesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslCertificates" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] SSLCertificate :>
+                     Post '[JSON] Operation
+
+-- | Creates a SslCertificate resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'sslCertificatesInsert' smart constructor.
+data SSLCertificatesInsert = SSLCertificatesInsert
+    { _sciProject :: !Text
+    , _sciPayload :: !SSLCertificate
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificatesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sciProject'
+--
+-- * 'sciPayload'
+sslCertificatesInsert
+    :: Text -- ^ 'sciProject'
+    -> SSLCertificate -- ^ 'sciPayload'
+    -> SSLCertificatesInsert
+sslCertificatesInsert pSciProject_ pSciPayload_ =
+    SSLCertificatesInsert
+    { _sciProject = pSciProject_
+    , _sciPayload = pSciPayload_
+    }
+
+-- | Name of the project scoping this request.
+sciProject :: Lens' SSLCertificatesInsert Text
+sciProject
+  = lens _sciProject (\ s a -> s{_sciProject = a})
+
+-- | Multipart request metadata.
+sciPayload :: Lens' SSLCertificatesInsert SSLCertificate
+sciPayload
+  = lens _sciPayload (\ s a -> s{_sciPayload = a})
+
+instance GoogleRequest SSLCertificatesInsert where
+        type Rs SSLCertificatesInsert = Operation
+        requestClient SSLCertificatesInsert{..}
+          = go _sciProject (Just AltJSON) _sciPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLCertificatesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs b/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/SSLCertificates/List.hs
@@ -0,0 +1,138 @@
+{-# 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.Compute.SSLCertificates.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of SslCertificate resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.sslCertificates.list@.
+module Network.Google.Resource.Compute.SSLCertificates.List
+    (
+    -- * REST Resource
+      SSLCertificatesListResource
+
+    -- * Creating a Request
+    , sslCertificatesList
+    , SSLCertificatesList
+
+    -- * Request Lenses
+    , sclProject
+    , sclFilter
+    , sclPageToken
+    , sclMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.sslCertificates.list@ method which the
+-- 'SSLCertificatesList' request conforms to.
+type SSLCertificatesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "sslCertificates" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] SSLCertificateList
+
+-- | Retrieves the list of SslCertificate resources available to the
+-- specified project.
+--
+-- /See:/ 'sslCertificatesList' smart constructor.
+data SSLCertificatesList = SSLCertificatesList
+    { _sclProject    :: !Text
+    , _sclFilter     :: !(Maybe Text)
+    , _sclPageToken  :: !(Maybe Text)
+    , _sclMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLCertificatesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sclProject'
+--
+-- * 'sclFilter'
+--
+-- * 'sclPageToken'
+--
+-- * 'sclMaxResults'
+sslCertificatesList
+    :: Text -- ^ 'sclProject'
+    -> SSLCertificatesList
+sslCertificatesList pSclProject_ =
+    SSLCertificatesList
+    { _sclProject = pSclProject_
+    , _sclFilter = Nothing
+    , _sclPageToken = Nothing
+    , _sclMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+sclProject :: Lens' SSLCertificatesList Text
+sclProject
+  = lens _sclProject (\ s a -> s{_sclProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+sclFilter :: Lens' SSLCertificatesList (Maybe Text)
+sclFilter
+  = lens _sclFilter (\ s a -> s{_sclFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+sclPageToken :: Lens' SSLCertificatesList (Maybe Text)
+sclPageToken
+  = lens _sclPageToken (\ s a -> s{_sclPageToken = a})
+
+-- | Maximum count of results to be returned.
+sclMaxResults :: Lens' SSLCertificatesList Word32
+sclMaxResults
+  = lens _sclMaxResults
+      (\ s a -> s{_sclMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest SSLCertificatesList where
+        type Rs SSLCertificatesList = SSLCertificateList
+        requestClient SSLCertificatesList{..}
+          = go _sclProject _sclFilter _sclPageToken
+              (Just _sclMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SSLCertificatesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs b/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/Delete.hs
@@ -0,0 +1,106 @@
+{-# 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.Compute.Snapshots.Delete
+-- Copyright   : (c) 2015 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 the specified Snapshot resource. Keep in mind that deleting a
+-- single snapshot might not necessarily delete all the data on that
+-- snapshot. If any data on the snapshot that is marked for deletion is
+-- needed for subsequent snapshots, the data will be moved to the next
+-- corresponding snapshot. For more information, see Deleting snaphots.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.delete@.
+module Network.Google.Resource.Compute.Snapshots.Delete
+    (
+    -- * REST Resource
+      SnapshotsDeleteResource
+
+    -- * Creating a Request
+    , snapshotsDelete
+    , SnapshotsDelete
+
+    -- * Request Lenses
+    , sdSnapshot
+    , sdProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.delete@ method which the
+-- 'SnapshotsDelete' request conforms to.
+type SnapshotsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 Capture "snapshot" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified Snapshot resource. Keep in mind that deleting a
+-- single snapshot might not necessarily delete all the data on that
+-- snapshot. If any data on the snapshot that is marked for deletion is
+-- needed for subsequent snapshots, the data will be moved to the next
+-- corresponding snapshot. For more information, see Deleting snaphots.
+--
+-- /See:/ 'snapshotsDelete' smart constructor.
+data SnapshotsDelete = SnapshotsDelete
+    { _sdSnapshot :: !Text
+    , _sdProject  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdSnapshot'
+--
+-- * 'sdProject'
+snapshotsDelete
+    :: Text -- ^ 'sdSnapshot'
+    -> Text -- ^ 'sdProject'
+    -> SnapshotsDelete
+snapshotsDelete pSdSnapshot_ pSdProject_ =
+    SnapshotsDelete
+    { _sdSnapshot = pSdSnapshot_
+    , _sdProject = pSdProject_
+    }
+
+-- | Name of the Snapshot resource to delete.
+sdSnapshot :: Lens' SnapshotsDelete Text
+sdSnapshot
+  = lens _sdSnapshot (\ s a -> s{_sdSnapshot = a})
+
+-- | Name of the project scoping this request.
+sdProject :: Lens' SnapshotsDelete Text
+sdProject
+  = lens _sdProject (\ s a -> s{_sdProject = a})
+
+instance GoogleRequest SnapshotsDelete where
+        type Rs SnapshotsDelete = Operation
+        requestClient SnapshotsDelete{..}
+          = go _sdProject _sdSnapshot (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy SnapshotsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/Get.hs b/gen/Network/Google/Resource/Compute/Snapshots/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/Get.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.Snapshots.Get
+-- Copyright   : (c) 2015 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 the specified Snapshot resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.get@.
+module Network.Google.Resource.Compute.Snapshots.Get
+    (
+    -- * REST Resource
+      SnapshotsGetResource
+
+    -- * Creating a Request
+    , snapshotsGet
+    , SnapshotsGet
+
+    -- * Request Lenses
+    , sgSnapshot
+    , sgProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.get@ method which the
+-- 'SnapshotsGet' request conforms to.
+type SnapshotsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 Capture "snapshot" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Snapshot
+
+-- | Returns the specified Snapshot resource.
+--
+-- /See:/ 'snapshotsGet' smart constructor.
+data SnapshotsGet = SnapshotsGet
+    { _sgSnapshot :: !Text
+    , _sgProject  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgSnapshot'
+--
+-- * 'sgProject'
+snapshotsGet
+    :: Text -- ^ 'sgSnapshot'
+    -> Text -- ^ 'sgProject'
+    -> SnapshotsGet
+snapshotsGet pSgSnapshot_ pSgProject_ =
+    SnapshotsGet
+    { _sgSnapshot = pSgSnapshot_
+    , _sgProject = pSgProject_
+    }
+
+-- | Name of the Snapshot resource to return.
+sgSnapshot :: Lens' SnapshotsGet Text
+sgSnapshot
+  = lens _sgSnapshot (\ s a -> s{_sgSnapshot = a})
+
+-- | Name of the project scoping this request.
+sgProject :: Lens' SnapshotsGet Text
+sgProject
+  = lens _sgProject (\ s a -> s{_sgProject = a})
+
+instance GoogleRequest SnapshotsGet where
+        type Rs SnapshotsGet = Snapshot
+        requestClient SnapshotsGet{..}
+          = go _sgProject _sgSnapshot (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy SnapshotsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Snapshots/List.hs b/gen/Network/Google/Resource/Compute/Snapshots/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Snapshots/List.hs
@@ -0,0 +1,134 @@
+{-# 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.Compute.Snapshots.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of Snapshot resources contained within the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.snapshots.list@.
+module Network.Google.Resource.Compute.Snapshots.List
+    (
+    -- * REST Resource
+      SnapshotsListResource
+
+    -- * Creating a Request
+    , snapshotsList
+    , SnapshotsList
+
+    -- * Request Lenses
+    , slProject
+    , slFilter
+    , slPageToken
+    , slMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.snapshots.list@ method which the
+-- 'SnapshotsList' request conforms to.
+type SnapshotsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "snapshots" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] SnapshotList
+
+-- | Retrieves the list of Snapshot resources contained within the specified
+-- project.
+--
+-- /See:/ 'snapshotsList' smart constructor.
+data SnapshotsList = SnapshotsList
+    { _slProject    :: !Text
+    , _slFilter     :: !(Maybe Text)
+    , _slPageToken  :: !(Maybe Text)
+    , _slMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SnapshotsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slProject'
+--
+-- * 'slFilter'
+--
+-- * 'slPageToken'
+--
+-- * 'slMaxResults'
+snapshotsList
+    :: Text -- ^ 'slProject'
+    -> SnapshotsList
+snapshotsList pSlProject_ =
+    SnapshotsList
+    { _slProject = pSlProject_
+    , _slFilter = Nothing
+    , _slPageToken = Nothing
+    , _slMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+slProject :: Lens' SnapshotsList Text
+slProject
+  = lens _slProject (\ s a -> s{_slProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+slFilter :: Lens' SnapshotsList (Maybe Text)
+slFilter = lens _slFilter (\ s a -> s{_slFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+slPageToken :: Lens' SnapshotsList (Maybe Text)
+slPageToken
+  = lens _slPageToken (\ s a -> s{_slPageToken = a})
+
+-- | Maximum count of results to be returned.
+slMaxResults :: Lens' SnapshotsList Word32
+slMaxResults
+  = lens _slMaxResults (\ s a -> s{_slMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest SnapshotsList where
+        type Rs SnapshotsList = SnapshotList
+        requestClient SnapshotsList{..}
+          = go _slProject _slFilter _slPageToken
+              (Just _slMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy SnapshotsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Delete.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.TargetHTTPProxies.Delete
+-- Copyright   : (c) 2015 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 the specified TargetHttpProxy resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpProxies.delete@.
+module Network.Google.Resource.Compute.TargetHTTPProxies.Delete
+    (
+    -- * REST Resource
+      TargetHTTPProxiesDeleteResource
+
+    -- * Creating a Request
+    , targetHTTPProxiesDelete
+    , TargetHTTPProxiesDelete
+
+    -- * Request Lenses
+    , thttppdProject
+    , thttppdTargetHTTPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpProxies.delete@ method which the
+-- 'TargetHTTPProxiesDelete' request conforms to.
+type TargetHTTPProxiesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpProxies" :>
+                 Capture "targetHttpProxy" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified TargetHttpProxy resource.
+--
+-- /See:/ 'targetHTTPProxiesDelete' smart constructor.
+data TargetHTTPProxiesDelete = TargetHTTPProxiesDelete
+    { _thttppdProject         :: !Text
+    , _thttppdTargetHTTPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxiesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttppdProject'
+--
+-- * 'thttppdTargetHTTPProxy'
+targetHTTPProxiesDelete
+    :: Text -- ^ 'thttppdProject'
+    -> Text -- ^ 'thttppdTargetHTTPProxy'
+    -> TargetHTTPProxiesDelete
+targetHTTPProxiesDelete pThttppdProject_ pThttppdTargetHTTPProxy_ =
+    TargetHTTPProxiesDelete
+    { _thttppdProject = pThttppdProject_
+    , _thttppdTargetHTTPProxy = pThttppdTargetHTTPProxy_
+    }
+
+-- | Name of the project scoping this request.
+thttppdProject :: Lens' TargetHTTPProxiesDelete Text
+thttppdProject
+  = lens _thttppdProject
+      (\ s a -> s{_thttppdProject = a})
+
+-- | Name of the TargetHttpProxy resource to delete.
+thttppdTargetHTTPProxy :: Lens' TargetHTTPProxiesDelete Text
+thttppdTargetHTTPProxy
+  = lens _thttppdTargetHTTPProxy
+      (\ s a -> s{_thttppdTargetHTTPProxy = a})
+
+instance GoogleRequest TargetHTTPProxiesDelete where
+        type Rs TargetHTTPProxiesDelete = Operation
+        requestClient TargetHTTPProxiesDelete{..}
+          = go _thttppdProject _thttppdTargetHTTPProxy
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPProxiesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Get.hs
@@ -0,0 +1,102 @@
+{-# 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.Compute.TargetHTTPProxies.Get
+-- Copyright   : (c) 2015 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 the specified TargetHttpProxy resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpProxies.get@.
+module Network.Google.Resource.Compute.TargetHTTPProxies.Get
+    (
+    -- * REST Resource
+      TargetHTTPProxiesGetResource
+
+    -- * Creating a Request
+    , targetHTTPProxiesGet
+    , TargetHTTPProxiesGet
+
+    -- * Request Lenses
+    , thttppgProject
+    , thttppgTargetHTTPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpProxies.get@ method which the
+-- 'TargetHTTPProxiesGet' request conforms to.
+type TargetHTTPProxiesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpProxies" :>
+                 Capture "targetHttpProxy" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] TargetHTTPProxy
+
+-- | Returns the specified TargetHttpProxy resource.
+--
+-- /See:/ 'targetHTTPProxiesGet' smart constructor.
+data TargetHTTPProxiesGet = TargetHTTPProxiesGet
+    { _thttppgProject         :: !Text
+    , _thttppgTargetHTTPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxiesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttppgProject'
+--
+-- * 'thttppgTargetHTTPProxy'
+targetHTTPProxiesGet
+    :: Text -- ^ 'thttppgProject'
+    -> Text -- ^ 'thttppgTargetHTTPProxy'
+    -> TargetHTTPProxiesGet
+targetHTTPProxiesGet pThttppgProject_ pThttppgTargetHTTPProxy_ =
+    TargetHTTPProxiesGet
+    { _thttppgProject = pThttppgProject_
+    , _thttppgTargetHTTPProxy = pThttppgTargetHTTPProxy_
+    }
+
+-- | Name of the project scoping this request.
+thttppgProject :: Lens' TargetHTTPProxiesGet Text
+thttppgProject
+  = lens _thttppgProject
+      (\ s a -> s{_thttppgProject = a})
+
+-- | Name of the TargetHttpProxy resource to return.
+thttppgTargetHTTPProxy :: Lens' TargetHTTPProxiesGet Text
+thttppgTargetHTTPProxy
+  = lens _thttppgTargetHTTPProxy
+      (\ s a -> s{_thttppgTargetHTTPProxy = a})
+
+instance GoogleRequest TargetHTTPProxiesGet where
+        type Rs TargetHTTPProxiesGet = TargetHTTPProxy
+        requestClient TargetHTTPProxiesGet{..}
+          = go _thttppgProject _thttppgTargetHTTPProxy
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPProxiesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/Insert.hs
@@ -0,0 +1,103 @@
+{-# 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.Compute.TargetHTTPProxies.Insert
+-- Copyright   : (c) 2015 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 TargetHttpProxy resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpProxies.insert@.
+module Network.Google.Resource.Compute.TargetHTTPProxies.Insert
+    (
+    -- * REST Resource
+      TargetHTTPProxiesInsertResource
+
+    -- * Creating a Request
+    , targetHTTPProxiesInsert
+    , TargetHTTPProxiesInsert
+
+    -- * Request Lenses
+    , thttppiProject
+    , thttppiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpProxies.insert@ method which the
+-- 'TargetHTTPProxiesInsert' request conforms to.
+type TargetHTTPProxiesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpProxies" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] TargetHTTPProxy :>
+                     Post '[JSON] Operation
+
+-- | Creates a TargetHttpProxy resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'targetHTTPProxiesInsert' smart constructor.
+data TargetHTTPProxiesInsert = TargetHTTPProxiesInsert
+    { _thttppiProject :: !Text
+    , _thttppiPayload :: !TargetHTTPProxy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxiesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttppiProject'
+--
+-- * 'thttppiPayload'
+targetHTTPProxiesInsert
+    :: Text -- ^ 'thttppiProject'
+    -> TargetHTTPProxy -- ^ 'thttppiPayload'
+    -> TargetHTTPProxiesInsert
+targetHTTPProxiesInsert pThttppiProject_ pThttppiPayload_ =
+    TargetHTTPProxiesInsert
+    { _thttppiProject = pThttppiProject_
+    , _thttppiPayload = pThttppiPayload_
+    }
+
+-- | Name of the project scoping this request.
+thttppiProject :: Lens' TargetHTTPProxiesInsert Text
+thttppiProject
+  = lens _thttppiProject
+      (\ s a -> s{_thttppiProject = a})
+
+-- | Multipart request metadata.
+thttppiPayload :: Lens' TargetHTTPProxiesInsert TargetHTTPProxy
+thttppiPayload
+  = lens _thttppiPayload
+      (\ s a -> s{_thttppiPayload = a})
+
+instance GoogleRequest TargetHTTPProxiesInsert where
+        type Rs TargetHTTPProxiesInsert = Operation
+        requestClient TargetHTTPProxiesInsert{..}
+          = go _thttppiProject (Just AltJSON) _thttppiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPProxiesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/List.hs
@@ -0,0 +1,141 @@
+{-# 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.Compute.TargetHTTPProxies.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of TargetHttpProxy resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpProxies.list@.
+module Network.Google.Resource.Compute.TargetHTTPProxies.List
+    (
+    -- * REST Resource
+      TargetHTTPProxiesListResource
+
+    -- * Creating a Request
+    , targetHTTPProxiesList
+    , TargetHTTPProxiesList
+
+    -- * Request Lenses
+    , thttpplProject
+    , thttpplFilter
+    , thttpplPageToken
+    , thttpplMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpProxies.list@ method which the
+-- 'TargetHTTPProxiesList' request conforms to.
+type TargetHTTPProxiesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpProxies" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] TargetHTTPProxyList
+
+-- | Retrieves the list of TargetHttpProxy resources available to the
+-- specified project.
+--
+-- /See:/ 'targetHTTPProxiesList' smart constructor.
+data TargetHTTPProxiesList = TargetHTTPProxiesList
+    { _thttpplProject    :: !Text
+    , _thttpplFilter     :: !(Maybe Text)
+    , _thttpplPageToken  :: !(Maybe Text)
+    , _thttpplMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxiesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttpplProject'
+--
+-- * 'thttpplFilter'
+--
+-- * 'thttpplPageToken'
+--
+-- * 'thttpplMaxResults'
+targetHTTPProxiesList
+    :: Text -- ^ 'thttpplProject'
+    -> TargetHTTPProxiesList
+targetHTTPProxiesList pThttpplProject_ =
+    TargetHTTPProxiesList
+    { _thttpplProject = pThttpplProject_
+    , _thttpplFilter = Nothing
+    , _thttpplPageToken = Nothing
+    , _thttpplMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+thttpplProject :: Lens' TargetHTTPProxiesList Text
+thttpplProject
+  = lens _thttpplProject
+      (\ s a -> s{_thttpplProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+thttpplFilter :: Lens' TargetHTTPProxiesList (Maybe Text)
+thttpplFilter
+  = lens _thttpplFilter
+      (\ s a -> s{_thttpplFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+thttpplPageToken :: Lens' TargetHTTPProxiesList (Maybe Text)
+thttpplPageToken
+  = lens _thttpplPageToken
+      (\ s a -> s{_thttpplPageToken = a})
+
+-- | Maximum count of results to be returned.
+thttpplMaxResults :: Lens' TargetHTTPProxiesList Word32
+thttpplMaxResults
+  = lens _thttpplMaxResults
+      (\ s a -> s{_thttpplMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetHTTPProxiesList where
+        type Rs TargetHTTPProxiesList = TargetHTTPProxyList
+        requestClient TargetHTTPProxiesList{..}
+          = go _thttpplProject _thttpplFilter _thttpplPageToken
+              (Just _thttpplMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPProxiesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPProxies/SetURLMap.hs
@@ -0,0 +1,117 @@
+{-# 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.Compute.TargetHTTPProxies.SetURLMap
+-- Copyright   : (c) 2015 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)
+--
+-- Changes the URL map for TargetHttpProxy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpProxies.setUrlMap@.
+module Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
+    (
+    -- * REST Resource
+      TargetHTTPProxiesSetURLMapResource
+
+    -- * Creating a Request
+    , targetHTTPProxiesSetURLMap
+    , TargetHTTPProxiesSetURLMap
+
+    -- * Request Lenses
+    , thttppsumProject
+    , thttppsumPayload
+    , thttppsumTargetHTTPProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpProxies.setUrlMap@ method which the
+-- 'TargetHTTPProxiesSetURLMap' request conforms to.
+type TargetHTTPProxiesSetURLMapResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "targetHttpProxies" :>
+               Capture "targetHttpProxy" Text :>
+                 "setUrlMap" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] URLMapReference :>
+                       Post '[JSON] Operation
+
+-- | Changes the URL map for TargetHttpProxy.
+--
+-- /See:/ 'targetHTTPProxiesSetURLMap' smart constructor.
+data TargetHTTPProxiesSetURLMap = TargetHTTPProxiesSetURLMap
+    { _thttppsumProject         :: !Text
+    , _thttppsumPayload         :: !URLMapReference
+    , _thttppsumTargetHTTPProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPProxiesSetURLMap' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thttppsumProject'
+--
+-- * 'thttppsumPayload'
+--
+-- * 'thttppsumTargetHTTPProxy'
+targetHTTPProxiesSetURLMap
+    :: Text -- ^ 'thttppsumProject'
+    -> URLMapReference -- ^ 'thttppsumPayload'
+    -> Text -- ^ 'thttppsumTargetHTTPProxy'
+    -> TargetHTTPProxiesSetURLMap
+targetHTTPProxiesSetURLMap pThttppsumProject_ pThttppsumPayload_ pThttppsumTargetHTTPProxy_ =
+    TargetHTTPProxiesSetURLMap
+    { _thttppsumProject = pThttppsumProject_
+    , _thttppsumPayload = pThttppsumPayload_
+    , _thttppsumTargetHTTPProxy = pThttppsumTargetHTTPProxy_
+    }
+
+-- | Name of the project scoping this request.
+thttppsumProject :: Lens' TargetHTTPProxiesSetURLMap Text
+thttppsumProject
+  = lens _thttppsumProject
+      (\ s a -> s{_thttppsumProject = a})
+
+-- | Multipart request metadata.
+thttppsumPayload :: Lens' TargetHTTPProxiesSetURLMap URLMapReference
+thttppsumPayload
+  = lens _thttppsumPayload
+      (\ s a -> s{_thttppsumPayload = a})
+
+-- | Name of the TargetHttpProxy resource whose URL map is to be set.
+thttppsumTargetHTTPProxy :: Lens' TargetHTTPProxiesSetURLMap Text
+thttppsumTargetHTTPProxy
+  = lens _thttppsumTargetHTTPProxy
+      (\ s a -> s{_thttppsumTargetHTTPProxy = a})
+
+instance GoogleRequest TargetHTTPProxiesSetURLMap
+         where
+        type Rs TargetHTTPProxiesSetURLMap = Operation
+        requestClient TargetHTTPProxiesSetURLMap{..}
+          = go _thttppsumProject _thttppsumTargetHTTPProxy
+              (Just AltJSON)
+              _thttppsumPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPProxiesSetURLMapResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Delete.hs
@@ -0,0 +1,100 @@
+{-# 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.Compute.TargetHTTPSProxies.Delete
+-- Copyright   : (c) 2015 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 the specified TargetHttpsProxy resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.delete@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesDeleteResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesDelete
+    , TargetHTTPSProxiesDelete
+
+    -- * Request Lenses
+    , thpdProject
+    , thpdTargetHTTPSProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.delete@ method which the
+-- 'TargetHTTPSProxiesDelete' request conforms to.
+type TargetHTTPSProxiesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpsProxies" :>
+                 Capture "targetHttpsProxy" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified TargetHttpsProxy resource.
+--
+-- /See:/ 'targetHTTPSProxiesDelete' smart constructor.
+data TargetHTTPSProxiesDelete = TargetHTTPSProxiesDelete
+    { _thpdProject          :: !Text
+    , _thpdTargetHTTPSProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpdProject'
+--
+-- * 'thpdTargetHTTPSProxy'
+targetHTTPSProxiesDelete
+    :: Text -- ^ 'thpdProject'
+    -> Text -- ^ 'thpdTargetHTTPSProxy'
+    -> TargetHTTPSProxiesDelete
+targetHTTPSProxiesDelete pThpdProject_ pThpdTargetHTTPSProxy_ =
+    TargetHTTPSProxiesDelete
+    { _thpdProject = pThpdProject_
+    , _thpdTargetHTTPSProxy = pThpdTargetHTTPSProxy_
+    }
+
+-- | Name of the project scoping this request.
+thpdProject :: Lens' TargetHTTPSProxiesDelete Text
+thpdProject
+  = lens _thpdProject (\ s a -> s{_thpdProject = a})
+
+-- | Name of the TargetHttpsProxy resource to delete.
+thpdTargetHTTPSProxy :: Lens' TargetHTTPSProxiesDelete Text
+thpdTargetHTTPSProxy
+  = lens _thpdTargetHTTPSProxy
+      (\ s a -> s{_thpdTargetHTTPSProxy = a})
+
+instance GoogleRequest TargetHTTPSProxiesDelete where
+        type Rs TargetHTTPSProxiesDelete = Operation
+        requestClient TargetHTTPSProxiesDelete{..}
+          = go _thpdProject _thpdTargetHTTPSProxy
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPSProxiesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Get.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.TargetHTTPSProxies.Get
+-- Copyright   : (c) 2015 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 the specified TargetHttpsProxy resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.get@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.Get
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesGetResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesGet
+    , TargetHTTPSProxiesGet
+
+    -- * Request Lenses
+    , thpgProject
+    , thpgTargetHTTPSProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.get@ method which the
+-- 'TargetHTTPSProxiesGet' request conforms to.
+type TargetHTTPSProxiesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpsProxies" :>
+                 Capture "targetHttpsProxy" Text :>
+                   QueryParam "alt" AltJSON :>
+                     Get '[JSON] TargetHTTPSProxy
+
+-- | Returns the specified TargetHttpsProxy resource.
+--
+-- /See:/ 'targetHTTPSProxiesGet' smart constructor.
+data TargetHTTPSProxiesGet = TargetHTTPSProxiesGet
+    { _thpgProject          :: !Text
+    , _thpgTargetHTTPSProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpgProject'
+--
+-- * 'thpgTargetHTTPSProxy'
+targetHTTPSProxiesGet
+    :: Text -- ^ 'thpgProject'
+    -> Text -- ^ 'thpgTargetHTTPSProxy'
+    -> TargetHTTPSProxiesGet
+targetHTTPSProxiesGet pThpgProject_ pThpgTargetHTTPSProxy_ =
+    TargetHTTPSProxiesGet
+    { _thpgProject = pThpgProject_
+    , _thpgTargetHTTPSProxy = pThpgTargetHTTPSProxy_
+    }
+
+-- | Name of the project scoping this request.
+thpgProject :: Lens' TargetHTTPSProxiesGet Text
+thpgProject
+  = lens _thpgProject (\ s a -> s{_thpgProject = a})
+
+-- | Name of the TargetHttpsProxy resource to return.
+thpgTargetHTTPSProxy :: Lens' TargetHTTPSProxiesGet Text
+thpgTargetHTTPSProxy
+  = lens _thpgTargetHTTPSProxy
+      (\ s a -> s{_thpgTargetHTTPSProxy = a})
+
+instance GoogleRequest TargetHTTPSProxiesGet where
+        type Rs TargetHTTPSProxiesGet = TargetHTTPSProxy
+        requestClient TargetHTTPSProxiesGet{..}
+          = go _thpgProject _thpgTargetHTTPSProxy
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPSProxiesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/Insert.hs
@@ -0,0 +1,101 @@
+{-# 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.Compute.TargetHTTPSProxies.Insert
+-- Copyright   : (c) 2015 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 TargetHttpsProxy resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.insert@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesInsertResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesInsert
+    , TargetHTTPSProxiesInsert
+
+    -- * Request Lenses
+    , thpiProject
+    , thpiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.insert@ method which the
+-- 'TargetHTTPSProxiesInsert' request conforms to.
+type TargetHTTPSProxiesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpsProxies" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] TargetHTTPSProxy :>
+                     Post '[JSON] Operation
+
+-- | Creates a TargetHttpsProxy resource in the specified project using the
+-- data included in the request.
+--
+-- /See:/ 'targetHTTPSProxiesInsert' smart constructor.
+data TargetHTTPSProxiesInsert = TargetHTTPSProxiesInsert
+    { _thpiProject :: !Text
+    , _thpiPayload :: !TargetHTTPSProxy
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpiProject'
+--
+-- * 'thpiPayload'
+targetHTTPSProxiesInsert
+    :: Text -- ^ 'thpiProject'
+    -> TargetHTTPSProxy -- ^ 'thpiPayload'
+    -> TargetHTTPSProxiesInsert
+targetHTTPSProxiesInsert pThpiProject_ pThpiPayload_ =
+    TargetHTTPSProxiesInsert
+    { _thpiProject = pThpiProject_
+    , _thpiPayload = pThpiPayload_
+    }
+
+-- | Name of the project scoping this request.
+thpiProject :: Lens' TargetHTTPSProxiesInsert Text
+thpiProject
+  = lens _thpiProject (\ s a -> s{_thpiProject = a})
+
+-- | Multipart request metadata.
+thpiPayload :: Lens' TargetHTTPSProxiesInsert TargetHTTPSProxy
+thpiPayload
+  = lens _thpiPayload (\ s a -> s{_thpiPayload = a})
+
+instance GoogleRequest TargetHTTPSProxiesInsert where
+        type Rs TargetHTTPSProxiesInsert = Operation
+        requestClient TargetHTTPSProxiesInsert{..}
+          = go _thpiProject (Just AltJSON) _thpiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPSProxiesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/List.hs
@@ -0,0 +1,139 @@
+{-# 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.Compute.TargetHTTPSProxies.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of TargetHttpsProxy resources available to the
+-- specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.list@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.List
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesListResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesList
+    , TargetHTTPSProxiesList
+
+    -- * Request Lenses
+    , thplProject
+    , thplFilter
+    , thplPageToken
+    , thplMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.list@ method which the
+-- 'TargetHTTPSProxiesList' request conforms to.
+type TargetHTTPSProxiesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "targetHttpsProxies" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] TargetHTTPSProxyList
+
+-- | Retrieves the list of TargetHttpsProxy resources available to the
+-- specified project.
+--
+-- /See:/ 'targetHTTPSProxiesList' smart constructor.
+data TargetHTTPSProxiesList = TargetHTTPSProxiesList
+    { _thplProject    :: !Text
+    , _thplFilter     :: !(Maybe Text)
+    , _thplPageToken  :: !(Maybe Text)
+    , _thplMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thplProject'
+--
+-- * 'thplFilter'
+--
+-- * 'thplPageToken'
+--
+-- * 'thplMaxResults'
+targetHTTPSProxiesList
+    :: Text -- ^ 'thplProject'
+    -> TargetHTTPSProxiesList
+targetHTTPSProxiesList pThplProject_ =
+    TargetHTTPSProxiesList
+    { _thplProject = pThplProject_
+    , _thplFilter = Nothing
+    , _thplPageToken = Nothing
+    , _thplMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+thplProject :: Lens' TargetHTTPSProxiesList Text
+thplProject
+  = lens _thplProject (\ s a -> s{_thplProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+thplFilter :: Lens' TargetHTTPSProxiesList (Maybe Text)
+thplFilter
+  = lens _thplFilter (\ s a -> s{_thplFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+thplPageToken :: Lens' TargetHTTPSProxiesList (Maybe Text)
+thplPageToken
+  = lens _thplPageToken
+      (\ s a -> s{_thplPageToken = a})
+
+-- | Maximum count of results to be returned.
+thplMaxResults :: Lens' TargetHTTPSProxiesList Word32
+thplMaxResults
+  = lens _thplMaxResults
+      (\ s a -> s{_thplMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetHTTPSProxiesList where
+        type Rs TargetHTTPSProxiesList = TargetHTTPSProxyList
+        requestClient TargetHTTPSProxiesList{..}
+          = go _thplProject _thplFilter _thplPageToken
+              (Just _thplMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPSProxiesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetSSLCertificates.hs
@@ -0,0 +1,121 @@
+{-# 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.Compute.TargetHTTPSProxies.SetSSLCertificates
+-- Copyright   : (c) 2015 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)
+--
+-- Replaces SslCertificates for TargetHttpsProxy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.setSslCertificates@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesSetSSLCertificatesResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesSetSSLCertificates
+    , TargetHTTPSProxiesSetSSLCertificates
+
+    -- * Request Lenses
+    , thpsscProject
+    , thpsscPayload
+    , thpsscTargetHTTPSProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.setSslCertificates@ method which the
+-- 'TargetHTTPSProxiesSetSSLCertificates' request conforms to.
+type TargetHTTPSProxiesSetSSLCertificatesResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "targetHttpsProxies" :>
+               Capture "targetHttpsProxy" Text :>
+                 "setSslCertificates" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON]
+                       TargetHTTPSProxiesSetSSLCertificatesRequest
+                       :> Post '[JSON] Operation
+
+-- | Replaces SslCertificates for TargetHttpsProxy.
+--
+-- /See:/ 'targetHTTPSProxiesSetSSLCertificates' smart constructor.
+data TargetHTTPSProxiesSetSSLCertificates = TargetHTTPSProxiesSetSSLCertificates
+    { _thpsscProject          :: !Text
+    , _thpsscPayload          :: !TargetHTTPSProxiesSetSSLCertificatesRequest
+    , _thpsscTargetHTTPSProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetSSLCertificates' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsscProject'
+--
+-- * 'thpsscPayload'
+--
+-- * 'thpsscTargetHTTPSProxy'
+targetHTTPSProxiesSetSSLCertificates
+    :: Text -- ^ 'thpsscProject'
+    -> TargetHTTPSProxiesSetSSLCertificatesRequest -- ^ 'thpsscPayload'
+    -> Text -- ^ 'thpsscTargetHTTPSProxy'
+    -> TargetHTTPSProxiesSetSSLCertificates
+targetHTTPSProxiesSetSSLCertificates pThpsscProject_ pThpsscPayload_ pThpsscTargetHTTPSProxy_ =
+    TargetHTTPSProxiesSetSSLCertificates
+    { _thpsscProject = pThpsscProject_
+    , _thpsscPayload = pThpsscPayload_
+    , _thpsscTargetHTTPSProxy = pThpsscTargetHTTPSProxy_
+    }
+
+-- | Name of the project scoping this request.
+thpsscProject :: Lens' TargetHTTPSProxiesSetSSLCertificates Text
+thpsscProject
+  = lens _thpsscProject
+      (\ s a -> s{_thpsscProject = a})
+
+-- | Multipart request metadata.
+thpsscPayload :: Lens' TargetHTTPSProxiesSetSSLCertificates TargetHTTPSProxiesSetSSLCertificatesRequest
+thpsscPayload
+  = lens _thpsscPayload
+      (\ s a -> s{_thpsscPayload = a})
+
+-- | Name of the TargetHttpsProxy resource whose URL map is to be set.
+thpsscTargetHTTPSProxy :: Lens' TargetHTTPSProxiesSetSSLCertificates Text
+thpsscTargetHTTPSProxy
+  = lens _thpsscTargetHTTPSProxy
+      (\ s a -> s{_thpsscTargetHTTPSProxy = a})
+
+instance GoogleRequest
+         TargetHTTPSProxiesSetSSLCertificates where
+        type Rs TargetHTTPSProxiesSetSSLCertificates =
+             Operation
+        requestClient
+          TargetHTTPSProxiesSetSSLCertificates{..}
+          = go _thpsscProject _thpsscTargetHTTPSProxy
+              (Just AltJSON)
+              _thpsscPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetHTTPSProxiesSetSSLCertificatesResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetHTTPSProxies/SetURLMap.hs
@@ -0,0 +1,117 @@
+{-# 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.Compute.TargetHTTPSProxies.SetURLMap
+-- Copyright   : (c) 2015 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)
+--
+-- Changes the URL map for TargetHttpsProxy.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetHttpsProxies.setUrlMap@.
+module Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
+    (
+    -- * REST Resource
+      TargetHTTPSProxiesSetURLMapResource
+
+    -- * Creating a Request
+    , targetHTTPSProxiesSetURLMap
+    , TargetHTTPSProxiesSetURLMap
+
+    -- * Request Lenses
+    , thpsumProject
+    , thpsumPayload
+    , thpsumTargetHTTPSProxy
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetHttpsProxies.setUrlMap@ method which the
+-- 'TargetHTTPSProxiesSetURLMap' request conforms to.
+type TargetHTTPSProxiesSetURLMapResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "targetHttpsProxies" :>
+               Capture "targetHttpsProxy" Text :>
+                 "setUrlMap" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] URLMapReference :>
+                       Post '[JSON] Operation
+
+-- | Changes the URL map for TargetHttpsProxy.
+--
+-- /See:/ 'targetHTTPSProxiesSetURLMap' smart constructor.
+data TargetHTTPSProxiesSetURLMap = TargetHTTPSProxiesSetURLMap
+    { _thpsumProject          :: !Text
+    , _thpsumPayload          :: !URLMapReference
+    , _thpsumTargetHTTPSProxy :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetHTTPSProxiesSetURLMap' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'thpsumProject'
+--
+-- * 'thpsumPayload'
+--
+-- * 'thpsumTargetHTTPSProxy'
+targetHTTPSProxiesSetURLMap
+    :: Text -- ^ 'thpsumProject'
+    -> URLMapReference -- ^ 'thpsumPayload'
+    -> Text -- ^ 'thpsumTargetHTTPSProxy'
+    -> TargetHTTPSProxiesSetURLMap
+targetHTTPSProxiesSetURLMap pThpsumProject_ pThpsumPayload_ pThpsumTargetHTTPSProxy_ =
+    TargetHTTPSProxiesSetURLMap
+    { _thpsumProject = pThpsumProject_
+    , _thpsumPayload = pThpsumPayload_
+    , _thpsumTargetHTTPSProxy = pThpsumTargetHTTPSProxy_
+    }
+
+-- | Name of the project scoping this request.
+thpsumProject :: Lens' TargetHTTPSProxiesSetURLMap Text
+thpsumProject
+  = lens _thpsumProject
+      (\ s a -> s{_thpsumProject = a})
+
+-- | Multipart request metadata.
+thpsumPayload :: Lens' TargetHTTPSProxiesSetURLMap URLMapReference
+thpsumPayload
+  = lens _thpsumPayload
+      (\ s a -> s{_thpsumPayload = a})
+
+-- | Name of the TargetHttpsProxy resource whose URL map is to be set.
+thpsumTargetHTTPSProxy :: Lens' TargetHTTPSProxiesSetURLMap Text
+thpsumTargetHTTPSProxy
+  = lens _thpsumTargetHTTPSProxy
+      (\ s a -> s{_thpsumTargetHTTPSProxy = a})
+
+instance GoogleRequest TargetHTTPSProxiesSetURLMap
+         where
+        type Rs TargetHTTPSProxiesSetURLMap = Operation
+        requestClient TargetHTTPSProxiesSetURLMap{..}
+          = go _thpsumProject _thpsumTargetHTTPSProxy
+              (Just AltJSON)
+              _thpsumPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetHTTPSProxiesSetURLMapResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs b/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/AggregatedList.hs
@@ -0,0 +1,140 @@
+{-# 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.Compute.TargetInstances.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of target instances grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetInstances.aggregatedList@.
+module Network.Google.Resource.Compute.TargetInstances.AggregatedList
+    (
+    -- * REST Resource
+      TargetInstancesAggregatedListResource
+
+    -- * Creating a Request
+    , targetInstancesAggregatedList
+    , TargetInstancesAggregatedList
+
+    -- * Request Lenses
+    , tialProject
+    , tialFilter
+    , tialPageToken
+    , tialMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetInstances.aggregatedList@ method which the
+-- 'TargetInstancesAggregatedList' request conforms to.
+type TargetInstancesAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "targetInstances" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] TargetInstanceAggregatedList
+
+-- | Retrieves the list of target instances grouped by scope.
+--
+-- /See:/ 'targetInstancesAggregatedList' smart constructor.
+data TargetInstancesAggregatedList = TargetInstancesAggregatedList
+    { _tialProject    :: !Text
+    , _tialFilter     :: !(Maybe Text)
+    , _tialPageToken  :: !(Maybe Text)
+    , _tialMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tialProject'
+--
+-- * 'tialFilter'
+--
+-- * 'tialPageToken'
+--
+-- * 'tialMaxResults'
+targetInstancesAggregatedList
+    :: Text -- ^ 'tialProject'
+    -> TargetInstancesAggregatedList
+targetInstancesAggregatedList pTialProject_ =
+    TargetInstancesAggregatedList
+    { _tialProject = pTialProject_
+    , _tialFilter = Nothing
+    , _tialPageToken = Nothing
+    , _tialMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+tialProject :: Lens' TargetInstancesAggregatedList Text
+tialProject
+  = lens _tialProject (\ s a -> s{_tialProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+tialFilter :: Lens' TargetInstancesAggregatedList (Maybe Text)
+tialFilter
+  = lens _tialFilter (\ s a -> s{_tialFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+tialPageToken :: Lens' TargetInstancesAggregatedList (Maybe Text)
+tialPageToken
+  = lens _tialPageToken
+      (\ s a -> s{_tialPageToken = a})
+
+-- | Maximum count of results to be returned.
+tialMaxResults :: Lens' TargetInstancesAggregatedList Word32
+tialMaxResults
+  = lens _tialMaxResults
+      (\ s a -> s{_tialMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetInstancesAggregatedList
+         where
+        type Rs TargetInstancesAggregatedList =
+             TargetInstanceAggregatedList
+        requestClient TargetInstancesAggregatedList{..}
+          = go _tialProject _tialFilter _tialPageToken
+              (Just _tialMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetInstancesAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs b/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/Delete.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.TargetInstances.Delete
+-- Copyright   : (c) 2015 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 the specified TargetInstance resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetInstances.delete@.
+module Network.Google.Resource.Compute.TargetInstances.Delete
+    (
+    -- * REST Resource
+      TargetInstancesDeleteResource
+
+    -- * Creating a Request
+    , targetInstancesDelete
+    , TargetInstancesDelete
+
+    -- * Request Lenses
+    , tidProject
+    , tidTargetInstance
+    , tidZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetInstances.delete@ method which the
+-- 'TargetInstancesDelete' request conforms to.
+type TargetInstancesDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "targetInstances" :>
+                   Capture "targetInstance" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified TargetInstance resource.
+--
+-- /See:/ 'targetInstancesDelete' smart constructor.
+data TargetInstancesDelete = TargetInstancesDelete
+    { _tidProject        :: !Text
+    , _tidTargetInstance :: !Text
+    , _tidZone           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tidProject'
+--
+-- * 'tidTargetInstance'
+--
+-- * 'tidZone'
+targetInstancesDelete
+    :: Text -- ^ 'tidProject'
+    -> Text -- ^ 'tidTargetInstance'
+    -> Text -- ^ 'tidZone'
+    -> TargetInstancesDelete
+targetInstancesDelete pTidProject_ pTidTargetInstance_ pTidZone_ =
+    TargetInstancesDelete
+    { _tidProject = pTidProject_
+    , _tidTargetInstance = pTidTargetInstance_
+    , _tidZone = pTidZone_
+    }
+
+-- | Name of the project scoping this request.
+tidProject :: Lens' TargetInstancesDelete Text
+tidProject
+  = lens _tidProject (\ s a -> s{_tidProject = a})
+
+-- | Name of the TargetInstance resource to delete.
+tidTargetInstance :: Lens' TargetInstancesDelete Text
+tidTargetInstance
+  = lens _tidTargetInstance
+      (\ s a -> s{_tidTargetInstance = a})
+
+-- | Name of the zone scoping this request.
+tidZone :: Lens' TargetInstancesDelete Text
+tidZone = lens _tidZone (\ s a -> s{_tidZone = a})
+
+instance GoogleRequest TargetInstancesDelete where
+        type Rs TargetInstancesDelete = Operation
+        requestClient TargetInstancesDelete{..}
+          = go _tidProject _tidZone _tidTargetInstance
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetInstancesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs b/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/Get.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.TargetInstances.Get
+-- Copyright   : (c) 2015 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 the specified TargetInstance resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetInstances.get@.
+module Network.Google.Resource.Compute.TargetInstances.Get
+    (
+    -- * REST Resource
+      TargetInstancesGetResource
+
+    -- * Creating a Request
+    , targetInstancesGet
+    , TargetInstancesGet
+
+    -- * Request Lenses
+    , tigProject
+    , tigTargetInstance
+    , tigZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetInstances.get@ method which the
+-- 'TargetInstancesGet' request conforms to.
+type TargetInstancesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "targetInstances" :>
+                   Capture "targetInstance" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] TargetInstance
+
+-- | Returns the specified TargetInstance resource.
+--
+-- /See:/ 'targetInstancesGet' smart constructor.
+data TargetInstancesGet = TargetInstancesGet
+    { _tigProject        :: !Text
+    , _tigTargetInstance :: !Text
+    , _tigZone           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tigProject'
+--
+-- * 'tigTargetInstance'
+--
+-- * 'tigZone'
+targetInstancesGet
+    :: Text -- ^ 'tigProject'
+    -> Text -- ^ 'tigTargetInstance'
+    -> Text -- ^ 'tigZone'
+    -> TargetInstancesGet
+targetInstancesGet pTigProject_ pTigTargetInstance_ pTigZone_ =
+    TargetInstancesGet
+    { _tigProject = pTigProject_
+    , _tigTargetInstance = pTigTargetInstance_
+    , _tigZone = pTigZone_
+    }
+
+-- | Name of the project scoping this request.
+tigProject :: Lens' TargetInstancesGet Text
+tigProject
+  = lens _tigProject (\ s a -> s{_tigProject = a})
+
+-- | Name of the TargetInstance resource to return.
+tigTargetInstance :: Lens' TargetInstancesGet Text
+tigTargetInstance
+  = lens _tigTargetInstance
+      (\ s a -> s{_tigTargetInstance = a})
+
+-- | Name of the zone scoping this request.
+tigZone :: Lens' TargetInstancesGet Text
+tigZone = lens _tigZone (\ s a -> s{_tigZone = a})
+
+instance GoogleRequest TargetInstancesGet where
+        type Rs TargetInstancesGet = TargetInstance
+        requestClient TargetInstancesGet{..}
+          = go _tigProject _tigZone _tigTargetInstance
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetInstancesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs b/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/Insert.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.TargetInstances.Insert
+-- Copyright   : (c) 2015 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 TargetInstance resource in the specified project and zone
+-- using the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetInstances.insert@.
+module Network.Google.Resource.Compute.TargetInstances.Insert
+    (
+    -- * REST Resource
+      TargetInstancesInsertResource
+
+    -- * Creating a Request
+    , targetInstancesInsert
+    , TargetInstancesInsert
+
+    -- * Request Lenses
+    , tiiProject
+    , tiiZone
+    , tiiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetInstances.insert@ method which the
+-- 'TargetInstancesInsert' request conforms to.
+type TargetInstancesInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "targetInstances" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetInstance :>
+                       Post '[JSON] Operation
+
+-- | Creates a TargetInstance resource in the specified project and zone
+-- using the data included in the request.
+--
+-- /See:/ 'targetInstancesInsert' smart constructor.
+data TargetInstancesInsert = TargetInstancesInsert
+    { _tiiProject :: !Text
+    , _tiiZone    :: !Text
+    , _tiiPayload :: !TargetInstance
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tiiProject'
+--
+-- * 'tiiZone'
+--
+-- * 'tiiPayload'
+targetInstancesInsert
+    :: Text -- ^ 'tiiProject'
+    -> Text -- ^ 'tiiZone'
+    -> TargetInstance -- ^ 'tiiPayload'
+    -> TargetInstancesInsert
+targetInstancesInsert pTiiProject_ pTiiZone_ pTiiPayload_ =
+    TargetInstancesInsert
+    { _tiiProject = pTiiProject_
+    , _tiiZone = pTiiZone_
+    , _tiiPayload = pTiiPayload_
+    }
+
+-- | Name of the project scoping this request.
+tiiProject :: Lens' TargetInstancesInsert Text
+tiiProject
+  = lens _tiiProject (\ s a -> s{_tiiProject = a})
+
+-- | Name of the zone scoping this request.
+tiiZone :: Lens' TargetInstancesInsert Text
+tiiZone = lens _tiiZone (\ s a -> s{_tiiZone = a})
+
+-- | Multipart request metadata.
+tiiPayload :: Lens' TargetInstancesInsert TargetInstance
+tiiPayload
+  = lens _tiiPayload (\ s a -> s{_tiiPayload = a})
+
+instance GoogleRequest TargetInstancesInsert where
+        type Rs TargetInstancesInsert = Operation
+        requestClient TargetInstancesInsert{..}
+          = go _tiiProject _tiiZone (Just AltJSON) _tiiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetInstancesInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetInstances/List.hs b/gen/Network/Google/Resource/Compute/TargetInstances/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetInstances/List.hs
@@ -0,0 +1,149 @@
+{-# 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.Compute.TargetInstances.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of TargetInstance resources available to the
+-- specified project and zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetInstances.list@.
+module Network.Google.Resource.Compute.TargetInstances.List
+    (
+    -- * REST Resource
+      TargetInstancesListResource
+
+    -- * Creating a Request
+    , targetInstancesList
+    , TargetInstancesList
+
+    -- * Request Lenses
+    , tilProject
+    , tilZone
+    , tilFilter
+    , tilPageToken
+    , tilMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetInstances.list@ method which the
+-- 'TargetInstancesList' request conforms to.
+type TargetInstancesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "targetInstances" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] TargetInstanceList
+
+-- | Retrieves the list of TargetInstance resources available to the
+-- specified project and zone.
+--
+-- /See:/ 'targetInstancesList' smart constructor.
+data TargetInstancesList = TargetInstancesList
+    { _tilProject    :: !Text
+    , _tilZone       :: !Text
+    , _tilFilter     :: !(Maybe Text)
+    , _tilPageToken  :: !(Maybe Text)
+    , _tilMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetInstancesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tilProject'
+--
+-- * 'tilZone'
+--
+-- * 'tilFilter'
+--
+-- * 'tilPageToken'
+--
+-- * 'tilMaxResults'
+targetInstancesList
+    :: Text -- ^ 'tilProject'
+    -> Text -- ^ 'tilZone'
+    -> TargetInstancesList
+targetInstancesList pTilProject_ pTilZone_ =
+    TargetInstancesList
+    { _tilProject = pTilProject_
+    , _tilZone = pTilZone_
+    , _tilFilter = Nothing
+    , _tilPageToken = Nothing
+    , _tilMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+tilProject :: Lens' TargetInstancesList Text
+tilProject
+  = lens _tilProject (\ s a -> s{_tilProject = a})
+
+-- | Name of the zone scoping this request.
+tilZone :: Lens' TargetInstancesList Text
+tilZone = lens _tilZone (\ s a -> s{_tilZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+tilFilter :: Lens' TargetInstancesList (Maybe Text)
+tilFilter
+  = lens _tilFilter (\ s a -> s{_tilFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+tilPageToken :: Lens' TargetInstancesList (Maybe Text)
+tilPageToken
+  = lens _tilPageToken (\ s a -> s{_tilPageToken = a})
+
+-- | Maximum count of results to be returned.
+tilMaxResults :: Lens' TargetInstancesList Word32
+tilMaxResults
+  = lens _tilMaxResults
+      (\ s a -> s{_tilMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetInstancesList where
+        type Rs TargetInstancesList = TargetInstanceList
+        requestClient TargetInstancesList{..}
+          = go _tilProject _tilZone _tilFilter _tilPageToken
+              (Just _tilMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetInstancesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs b/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/AddHealthCheck.hs
@@ -0,0 +1,128 @@
+{-# 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.Compute.TargetPools.AddHealthCheck
+-- Copyright   : (c) 2015 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)
+--
+-- Adds health check URL to targetPool.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.addHealthCheck@.
+module Network.Google.Resource.Compute.TargetPools.AddHealthCheck
+    (
+    -- * REST Resource
+      TargetPoolsAddHealthCheckResource
+
+    -- * Creating a Request
+    , targetPoolsAddHealthCheck
+    , TargetPoolsAddHealthCheck
+
+    -- * Request Lenses
+    , tpahcProject
+    , tpahcTargetPool
+    , tpahcPayload
+    , tpahcRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.addHealthCheck@ method which the
+-- 'TargetPoolsAddHealthCheck' request conforms to.
+type TargetPoolsAddHealthCheckResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     "addHealthCheck" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetPoolsAddHealthCheckRequest :>
+                           Post '[JSON] Operation
+
+-- | Adds health check URL to targetPool.
+--
+-- /See:/ 'targetPoolsAddHealthCheck' smart constructor.
+data TargetPoolsAddHealthCheck = TargetPoolsAddHealthCheck
+    { _tpahcProject    :: !Text
+    , _tpahcTargetPool :: !Text
+    , _tpahcPayload    :: !TargetPoolsAddHealthCheckRequest
+    , _tpahcRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAddHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpahcProject'
+--
+-- * 'tpahcTargetPool'
+--
+-- * 'tpahcPayload'
+--
+-- * 'tpahcRegion'
+targetPoolsAddHealthCheck
+    :: Text -- ^ 'tpahcProject'
+    -> Text -- ^ 'tpahcTargetPool'
+    -> TargetPoolsAddHealthCheckRequest -- ^ 'tpahcPayload'
+    -> Text -- ^ 'tpahcRegion'
+    -> TargetPoolsAddHealthCheck
+targetPoolsAddHealthCheck pTpahcProject_ pTpahcTargetPool_ pTpahcPayload_ pTpahcRegion_ =
+    TargetPoolsAddHealthCheck
+    { _tpahcProject = pTpahcProject_
+    , _tpahcTargetPool = pTpahcTargetPool_
+    , _tpahcPayload = pTpahcPayload_
+    , _tpahcRegion = pTpahcRegion_
+    }
+
+tpahcProject :: Lens' TargetPoolsAddHealthCheck Text
+tpahcProject
+  = lens _tpahcProject (\ s a -> s{_tpahcProject = a})
+
+-- | Name of the TargetPool resource to which health_check_url is to be
+-- added.
+tpahcTargetPool :: Lens' TargetPoolsAddHealthCheck Text
+tpahcTargetPool
+  = lens _tpahcTargetPool
+      (\ s a -> s{_tpahcTargetPool = a})
+
+-- | Multipart request metadata.
+tpahcPayload :: Lens' TargetPoolsAddHealthCheck TargetPoolsAddHealthCheckRequest
+tpahcPayload
+  = lens _tpahcPayload (\ s a -> s{_tpahcPayload = a})
+
+-- | Name of the region scoping this request.
+tpahcRegion :: Lens' TargetPoolsAddHealthCheck Text
+tpahcRegion
+  = lens _tpahcRegion (\ s a -> s{_tpahcRegion = a})
+
+instance GoogleRequest TargetPoolsAddHealthCheck
+         where
+        type Rs TargetPoolsAddHealthCheck = Operation
+        requestClient TargetPoolsAddHealthCheck{..}
+          = go _tpahcProject _tpahcRegion _tpahcTargetPool
+              (Just AltJSON)
+              _tpahcPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsAddHealthCheckResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs b/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/AddInstance.hs
@@ -0,0 +1,126 @@
+{-# 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.Compute.TargetPools.AddInstance
+-- Copyright   : (c) 2015 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)
+--
+-- Adds instance url to targetPool.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.addInstance@.
+module Network.Google.Resource.Compute.TargetPools.AddInstance
+    (
+    -- * REST Resource
+      TargetPoolsAddInstanceResource
+
+    -- * Creating a Request
+    , targetPoolsAddInstance
+    , TargetPoolsAddInstance
+
+    -- * Request Lenses
+    , tpaiProject
+    , tpaiTargetPool
+    , tpaiPayload
+    , tpaiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.addInstance@ method which the
+-- 'TargetPoolsAddInstance' request conforms to.
+type TargetPoolsAddInstanceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     "addInstance" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetPoolsAddInstanceRequest :>
+                           Post '[JSON] Operation
+
+-- | Adds instance url to targetPool.
+--
+-- /See:/ 'targetPoolsAddInstance' smart constructor.
+data TargetPoolsAddInstance = TargetPoolsAddInstance
+    { _tpaiProject    :: !Text
+    , _tpaiTargetPool :: !Text
+    , _tpaiPayload    :: !TargetPoolsAddInstanceRequest
+    , _tpaiRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAddInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpaiProject'
+--
+-- * 'tpaiTargetPool'
+--
+-- * 'tpaiPayload'
+--
+-- * 'tpaiRegion'
+targetPoolsAddInstance
+    :: Text -- ^ 'tpaiProject'
+    -> Text -- ^ 'tpaiTargetPool'
+    -> TargetPoolsAddInstanceRequest -- ^ 'tpaiPayload'
+    -> Text -- ^ 'tpaiRegion'
+    -> TargetPoolsAddInstance
+targetPoolsAddInstance pTpaiProject_ pTpaiTargetPool_ pTpaiPayload_ pTpaiRegion_ =
+    TargetPoolsAddInstance
+    { _tpaiProject = pTpaiProject_
+    , _tpaiTargetPool = pTpaiTargetPool_
+    , _tpaiPayload = pTpaiPayload_
+    , _tpaiRegion = pTpaiRegion_
+    }
+
+tpaiProject :: Lens' TargetPoolsAddInstance Text
+tpaiProject
+  = lens _tpaiProject (\ s a -> s{_tpaiProject = a})
+
+-- | Name of the TargetPool resource to which instance_url is to be added.
+tpaiTargetPool :: Lens' TargetPoolsAddInstance Text
+tpaiTargetPool
+  = lens _tpaiTargetPool
+      (\ s a -> s{_tpaiTargetPool = a})
+
+-- | Multipart request metadata.
+tpaiPayload :: Lens' TargetPoolsAddInstance TargetPoolsAddInstanceRequest
+tpaiPayload
+  = lens _tpaiPayload (\ s a -> s{_tpaiPayload = a})
+
+-- | Name of the region scoping this request.
+tpaiRegion :: Lens' TargetPoolsAddInstance Text
+tpaiRegion
+  = lens _tpaiRegion (\ s a -> s{_tpaiRegion = a})
+
+instance GoogleRequest TargetPoolsAddInstance where
+        type Rs TargetPoolsAddInstance = Operation
+        requestClient TargetPoolsAddInstance{..}
+          = go _tpaiProject _tpaiRegion _tpaiTargetPool
+              (Just AltJSON)
+              _tpaiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsAddInstanceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs b/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/AggregatedList.hs
@@ -0,0 +1,139 @@
+{-# 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.Compute.TargetPools.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of target pools grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.aggregatedList@.
+module Network.Google.Resource.Compute.TargetPools.AggregatedList
+    (
+    -- * REST Resource
+      TargetPoolsAggregatedListResource
+
+    -- * Creating a Request
+    , targetPoolsAggregatedList
+    , TargetPoolsAggregatedList
+
+    -- * Request Lenses
+    , tpalProject
+    , tpalFilter
+    , tpalPageToken
+    , tpalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.aggregatedList@ method which the
+-- 'TargetPoolsAggregatedList' request conforms to.
+type TargetPoolsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "targetPools" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] TargetPoolAggregatedList
+
+-- | Retrieves the list of target pools grouped by scope.
+--
+-- /See:/ 'targetPoolsAggregatedList' smart constructor.
+data TargetPoolsAggregatedList = TargetPoolsAggregatedList
+    { _tpalProject    :: !Text
+    , _tpalFilter     :: !(Maybe Text)
+    , _tpalPageToken  :: !(Maybe Text)
+    , _tpalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpalProject'
+--
+-- * 'tpalFilter'
+--
+-- * 'tpalPageToken'
+--
+-- * 'tpalMaxResults'
+targetPoolsAggregatedList
+    :: Text -- ^ 'tpalProject'
+    -> TargetPoolsAggregatedList
+targetPoolsAggregatedList pTpalProject_ =
+    TargetPoolsAggregatedList
+    { _tpalProject = pTpalProject_
+    , _tpalFilter = Nothing
+    , _tpalPageToken = Nothing
+    , _tpalMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+tpalProject :: Lens' TargetPoolsAggregatedList Text
+tpalProject
+  = lens _tpalProject (\ s a -> s{_tpalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+tpalFilter :: Lens' TargetPoolsAggregatedList (Maybe Text)
+tpalFilter
+  = lens _tpalFilter (\ s a -> s{_tpalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+tpalPageToken :: Lens' TargetPoolsAggregatedList (Maybe Text)
+tpalPageToken
+  = lens _tpalPageToken
+      (\ s a -> s{_tpalPageToken = a})
+
+-- | Maximum count of results to be returned.
+tpalMaxResults :: Lens' TargetPoolsAggregatedList Word32
+tpalMaxResults
+  = lens _tpalMaxResults
+      (\ s a -> s{_tpalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetPoolsAggregatedList
+         where
+        type Rs TargetPoolsAggregatedList =
+             TargetPoolAggregatedList
+        requestClient TargetPoolsAggregatedList{..}
+          = go _tpalProject _tpalFilter _tpalPageToken
+              (Just _tpalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs b/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/Delete.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.TargetPools.Delete
+-- Copyright   : (c) 2015 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 the specified TargetPool resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.delete@.
+module Network.Google.Resource.Compute.TargetPools.Delete
+    (
+    -- * REST Resource
+      TargetPoolsDeleteResource
+
+    -- * Creating a Request
+    , targetPoolsDelete
+    , TargetPoolsDelete
+
+    -- * Request Lenses
+    , tpdProject
+    , tpdTargetPool
+    , tpdRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.delete@ method which the
+-- 'TargetPoolsDelete' request conforms to.
+type TargetPoolsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified TargetPool resource.
+--
+-- /See:/ 'targetPoolsDelete' smart constructor.
+data TargetPoolsDelete = TargetPoolsDelete
+    { _tpdProject    :: !Text
+    , _tpdTargetPool :: !Text
+    , _tpdRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpdProject'
+--
+-- * 'tpdTargetPool'
+--
+-- * 'tpdRegion'
+targetPoolsDelete
+    :: Text -- ^ 'tpdProject'
+    -> Text -- ^ 'tpdTargetPool'
+    -> Text -- ^ 'tpdRegion'
+    -> TargetPoolsDelete
+targetPoolsDelete pTpdProject_ pTpdTargetPool_ pTpdRegion_ =
+    TargetPoolsDelete
+    { _tpdProject = pTpdProject_
+    , _tpdTargetPool = pTpdTargetPool_
+    , _tpdRegion = pTpdRegion_
+    }
+
+-- | Name of the project scoping this request.
+tpdProject :: Lens' TargetPoolsDelete Text
+tpdProject
+  = lens _tpdProject (\ s a -> s{_tpdProject = a})
+
+-- | Name of the TargetPool resource to delete.
+tpdTargetPool :: Lens' TargetPoolsDelete Text
+tpdTargetPool
+  = lens _tpdTargetPool
+      (\ s a -> s{_tpdTargetPool = a})
+
+-- | Name of the region scoping this request.
+tpdRegion :: Lens' TargetPoolsDelete Text
+tpdRegion
+  = lens _tpdRegion (\ s a -> s{_tpdRegion = a})
+
+instance GoogleRequest TargetPoolsDelete where
+        type Rs TargetPoolsDelete = Operation
+        requestClient TargetPoolsDelete{..}
+          = go _tpdProject _tpdRegion _tpdTargetPool
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/Get.hs b/gen/Network/Google/Resource/Compute/TargetPools/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/Get.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.TargetPools.Get
+-- Copyright   : (c) 2015 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 the specified TargetPool resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.get@.
+module Network.Google.Resource.Compute.TargetPools.Get
+    (
+    -- * REST Resource
+      TargetPoolsGetResource
+
+    -- * Creating a Request
+    , targetPoolsGet
+    , TargetPoolsGet
+
+    -- * Request Lenses
+    , tpgProject
+    , tpgTargetPool
+    , tpgRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.get@ method which the
+-- 'TargetPoolsGet' request conforms to.
+type TargetPoolsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] TargetPool
+
+-- | Returns the specified TargetPool resource.
+--
+-- /See:/ 'targetPoolsGet' smart constructor.
+data TargetPoolsGet = TargetPoolsGet
+    { _tpgProject    :: !Text
+    , _tpgTargetPool :: !Text
+    , _tpgRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpgProject'
+--
+-- * 'tpgTargetPool'
+--
+-- * 'tpgRegion'
+targetPoolsGet
+    :: Text -- ^ 'tpgProject'
+    -> Text -- ^ 'tpgTargetPool'
+    -> Text -- ^ 'tpgRegion'
+    -> TargetPoolsGet
+targetPoolsGet pTpgProject_ pTpgTargetPool_ pTpgRegion_ =
+    TargetPoolsGet
+    { _tpgProject = pTpgProject_
+    , _tpgTargetPool = pTpgTargetPool_
+    , _tpgRegion = pTpgRegion_
+    }
+
+-- | Name of the project scoping this request.
+tpgProject :: Lens' TargetPoolsGet Text
+tpgProject
+  = lens _tpgProject (\ s a -> s{_tpgProject = a})
+
+-- | Name of the TargetPool resource to return.
+tpgTargetPool :: Lens' TargetPoolsGet Text
+tpgTargetPool
+  = lens _tpgTargetPool
+      (\ s a -> s{_tpgTargetPool = a})
+
+-- | Name of the region scoping this request.
+tpgRegion :: Lens' TargetPoolsGet Text
+tpgRegion
+  = lens _tpgRegion (\ s a -> s{_tpgRegion = a})
+
+instance GoogleRequest TargetPoolsGet where
+        type Rs TargetPoolsGet = TargetPool
+        requestClient TargetPoolsGet{..}
+          = go _tpgProject _tpgRegion _tpgTargetPool
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy TargetPoolsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs b/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/GetHealth.hs
@@ -0,0 +1,129 @@
+{-# 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.Compute.TargetPools.GetHealth
+-- Copyright   : (c) 2015 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 most recent health check results for each IP for the given
+-- instance that is referenced by given TargetPool.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.getHealth@.
+module Network.Google.Resource.Compute.TargetPools.GetHealth
+    (
+    -- * REST Resource
+      TargetPoolsGetHealthResource
+
+    -- * Creating a Request
+    , targetPoolsGetHealth
+    , TargetPoolsGetHealth
+
+    -- * Request Lenses
+    , tpghProject
+    , tpghTargetPool
+    , tpghPayload
+    , tpghRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.getHealth@ method which the
+-- 'TargetPoolsGetHealth' request conforms to.
+type TargetPoolsGetHealthResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     "getHealth" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] InstanceReference :>
+                           Post '[JSON] TargetPoolInstanceHealth
+
+-- | Gets the most recent health check results for each IP for the given
+-- instance that is referenced by given TargetPool.
+--
+-- /See:/ 'targetPoolsGetHealth' smart constructor.
+data TargetPoolsGetHealth = TargetPoolsGetHealth
+    { _tpghProject    :: !Text
+    , _tpghTargetPool :: !Text
+    , _tpghPayload    :: !InstanceReference
+    , _tpghRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsGetHealth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpghProject'
+--
+-- * 'tpghTargetPool'
+--
+-- * 'tpghPayload'
+--
+-- * 'tpghRegion'
+targetPoolsGetHealth
+    :: Text -- ^ 'tpghProject'
+    -> Text -- ^ 'tpghTargetPool'
+    -> InstanceReference -- ^ 'tpghPayload'
+    -> Text -- ^ 'tpghRegion'
+    -> TargetPoolsGetHealth
+targetPoolsGetHealth pTpghProject_ pTpghTargetPool_ pTpghPayload_ pTpghRegion_ =
+    TargetPoolsGetHealth
+    { _tpghProject = pTpghProject_
+    , _tpghTargetPool = pTpghTargetPool_
+    , _tpghPayload = pTpghPayload_
+    , _tpghRegion = pTpghRegion_
+    }
+
+tpghProject :: Lens' TargetPoolsGetHealth Text
+tpghProject
+  = lens _tpghProject (\ s a -> s{_tpghProject = a})
+
+-- | Name of the TargetPool resource to which the queried instance belongs.
+tpghTargetPool :: Lens' TargetPoolsGetHealth Text
+tpghTargetPool
+  = lens _tpghTargetPool
+      (\ s a -> s{_tpghTargetPool = a})
+
+-- | Multipart request metadata.
+tpghPayload :: Lens' TargetPoolsGetHealth InstanceReference
+tpghPayload
+  = lens _tpghPayload (\ s a -> s{_tpghPayload = a})
+
+-- | Name of the region scoping this request.
+tpghRegion :: Lens' TargetPoolsGetHealth Text
+tpghRegion
+  = lens _tpghRegion (\ s a -> s{_tpghRegion = a})
+
+instance GoogleRequest TargetPoolsGetHealth where
+        type Rs TargetPoolsGetHealth =
+             TargetPoolInstanceHealth
+        requestClient TargetPoolsGetHealth{..}
+          = go _tpghProject _tpghRegion _tpghTargetPool
+              (Just AltJSON)
+              _tpghPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsGetHealthResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs b/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/Insert.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.TargetPools.Insert
+-- Copyright   : (c) 2015 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 TargetPool resource in the specified project and region using
+-- the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.insert@.
+module Network.Google.Resource.Compute.TargetPools.Insert
+    (
+    -- * REST Resource
+      TargetPoolsInsertResource
+
+    -- * Creating a Request
+    , targetPoolsInsert
+    , TargetPoolsInsert
+
+    -- * Request Lenses
+    , tpiProject
+    , tpiPayload
+    , tpiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.insert@ method which the
+-- 'TargetPoolsInsert' request conforms to.
+type TargetPoolsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetPool :> Post '[JSON] Operation
+
+-- | Creates a TargetPool resource in the specified project and region using
+-- the data included in the request.
+--
+-- /See:/ 'targetPoolsInsert' smart constructor.
+data TargetPoolsInsert = TargetPoolsInsert
+    { _tpiProject :: !Text
+    , _tpiPayload :: !TargetPool
+    , _tpiRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpiProject'
+--
+-- * 'tpiPayload'
+--
+-- * 'tpiRegion'
+targetPoolsInsert
+    :: Text -- ^ 'tpiProject'
+    -> TargetPool -- ^ 'tpiPayload'
+    -> Text -- ^ 'tpiRegion'
+    -> TargetPoolsInsert
+targetPoolsInsert pTpiProject_ pTpiPayload_ pTpiRegion_ =
+    TargetPoolsInsert
+    { _tpiProject = pTpiProject_
+    , _tpiPayload = pTpiPayload_
+    , _tpiRegion = pTpiRegion_
+    }
+
+-- | Name of the project scoping this request.
+tpiProject :: Lens' TargetPoolsInsert Text
+tpiProject
+  = lens _tpiProject (\ s a -> s{_tpiProject = a})
+
+-- | Multipart request metadata.
+tpiPayload :: Lens' TargetPoolsInsert TargetPool
+tpiPayload
+  = lens _tpiPayload (\ s a -> s{_tpiPayload = a})
+
+-- | Name of the region scoping this request.
+tpiRegion :: Lens' TargetPoolsInsert Text
+tpiRegion
+  = lens _tpiRegion (\ s a -> s{_tpiRegion = a})
+
+instance GoogleRequest TargetPoolsInsert where
+        type Rs TargetPoolsInsert = Operation
+        requestClient TargetPoolsInsert{..}
+          = go _tpiProject _tpiRegion (Just AltJSON)
+              _tpiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/List.hs b/gen/Network/Google/Resource/Compute/TargetPools/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/List.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Compute.TargetPools.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of TargetPool resources available to the specified
+-- project and region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.list@.
+module Network.Google.Resource.Compute.TargetPools.List
+    (
+    -- * REST Resource
+      TargetPoolsListResource
+
+    -- * Creating a Request
+    , targetPoolsList
+    , TargetPoolsList
+
+    -- * Request Lenses
+    , tplProject
+    , tplFilter
+    , tplRegion
+    , tplPageToken
+    , tplMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.list@ method which the
+-- 'TargetPoolsList' request conforms to.
+type TargetPoolsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] TargetPoolList
+
+-- | Retrieves the list of TargetPool resources available to the specified
+-- project and region.
+--
+-- /See:/ 'targetPoolsList' smart constructor.
+data TargetPoolsList = TargetPoolsList
+    { _tplProject    :: !Text
+    , _tplFilter     :: !(Maybe Text)
+    , _tplRegion     :: !Text
+    , _tplPageToken  :: !(Maybe Text)
+    , _tplMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tplProject'
+--
+-- * 'tplFilter'
+--
+-- * 'tplRegion'
+--
+-- * 'tplPageToken'
+--
+-- * 'tplMaxResults'
+targetPoolsList
+    :: Text -- ^ 'tplProject'
+    -> Text -- ^ 'tplRegion'
+    -> TargetPoolsList
+targetPoolsList pTplProject_ pTplRegion_ =
+    TargetPoolsList
+    { _tplProject = pTplProject_
+    , _tplFilter = Nothing
+    , _tplRegion = pTplRegion_
+    , _tplPageToken = Nothing
+    , _tplMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+tplProject :: Lens' TargetPoolsList Text
+tplProject
+  = lens _tplProject (\ s a -> s{_tplProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+tplFilter :: Lens' TargetPoolsList (Maybe Text)
+tplFilter
+  = lens _tplFilter (\ s a -> s{_tplFilter = a})
+
+-- | Name of the region scoping this request.
+tplRegion :: Lens' TargetPoolsList Text
+tplRegion
+  = lens _tplRegion (\ s a -> s{_tplRegion = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+tplPageToken :: Lens' TargetPoolsList (Maybe Text)
+tplPageToken
+  = lens _tplPageToken (\ s a -> s{_tplPageToken = a})
+
+-- | Maximum count of results to be returned.
+tplMaxResults :: Lens' TargetPoolsList Word32
+tplMaxResults
+  = lens _tplMaxResults
+      (\ s a -> s{_tplMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetPoolsList where
+        type Rs TargetPoolsList = TargetPoolList
+        requestClient TargetPoolsList{..}
+          = go _tplProject _tplRegion _tplFilter _tplPageToken
+              (Just _tplMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs b/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/RemoveHealthCheck.hs
@@ -0,0 +1,128 @@
+{-# 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.Compute.TargetPools.RemoveHealthCheck
+-- Copyright   : (c) 2015 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)
+--
+-- Removes health check URL from targetPool.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.removeHealthCheck@.
+module Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
+    (
+    -- * REST Resource
+      TargetPoolsRemoveHealthCheckResource
+
+    -- * Creating a Request
+    , targetPoolsRemoveHealthCheck
+    , TargetPoolsRemoveHealthCheck
+
+    -- * Request Lenses
+    , tprhcProject
+    , tprhcTargetPool
+    , tprhcPayload
+    , tprhcRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.removeHealthCheck@ method which the
+-- 'TargetPoolsRemoveHealthCheck' request conforms to.
+type TargetPoolsRemoveHealthCheckResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     "removeHealthCheck" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetPoolsRemoveHealthCheckRequest
+                           :> Post '[JSON] Operation
+
+-- | Removes health check URL from targetPool.
+--
+-- /See:/ 'targetPoolsRemoveHealthCheck' smart constructor.
+data TargetPoolsRemoveHealthCheck = TargetPoolsRemoveHealthCheck
+    { _tprhcProject    :: !Text
+    , _tprhcTargetPool :: !Text
+    , _tprhcPayload    :: !TargetPoolsRemoveHealthCheckRequest
+    , _tprhcRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsRemoveHealthCheck' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tprhcProject'
+--
+-- * 'tprhcTargetPool'
+--
+-- * 'tprhcPayload'
+--
+-- * 'tprhcRegion'
+targetPoolsRemoveHealthCheck
+    :: Text -- ^ 'tprhcProject'
+    -> Text -- ^ 'tprhcTargetPool'
+    -> TargetPoolsRemoveHealthCheckRequest -- ^ 'tprhcPayload'
+    -> Text -- ^ 'tprhcRegion'
+    -> TargetPoolsRemoveHealthCheck
+targetPoolsRemoveHealthCheck pTprhcProject_ pTprhcTargetPool_ pTprhcPayload_ pTprhcRegion_ =
+    TargetPoolsRemoveHealthCheck
+    { _tprhcProject = pTprhcProject_
+    , _tprhcTargetPool = pTprhcTargetPool_
+    , _tprhcPayload = pTprhcPayload_
+    , _tprhcRegion = pTprhcRegion_
+    }
+
+tprhcProject :: Lens' TargetPoolsRemoveHealthCheck Text
+tprhcProject
+  = lens _tprhcProject (\ s a -> s{_tprhcProject = a})
+
+-- | Name of the TargetPool resource to which health_check_url is to be
+-- removed.
+tprhcTargetPool :: Lens' TargetPoolsRemoveHealthCheck Text
+tprhcTargetPool
+  = lens _tprhcTargetPool
+      (\ s a -> s{_tprhcTargetPool = a})
+
+-- | Multipart request metadata.
+tprhcPayload :: Lens' TargetPoolsRemoveHealthCheck TargetPoolsRemoveHealthCheckRequest
+tprhcPayload
+  = lens _tprhcPayload (\ s a -> s{_tprhcPayload = a})
+
+-- | Name of the region scoping this request.
+tprhcRegion :: Lens' TargetPoolsRemoveHealthCheck Text
+tprhcRegion
+  = lens _tprhcRegion (\ s a -> s{_tprhcRegion = a})
+
+instance GoogleRequest TargetPoolsRemoveHealthCheck
+         where
+        type Rs TargetPoolsRemoveHealthCheck = Operation
+        requestClient TargetPoolsRemoveHealthCheck{..}
+          = go _tprhcProject _tprhcRegion _tprhcTargetPool
+              (Just AltJSON)
+              _tprhcPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsRemoveHealthCheckResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs b/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/RemoveInstance.hs
@@ -0,0 +1,127 @@
+{-# 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.Compute.TargetPools.RemoveInstance
+-- Copyright   : (c) 2015 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)
+--
+-- Removes instance URL from targetPool.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.removeInstance@.
+module Network.Google.Resource.Compute.TargetPools.RemoveInstance
+    (
+    -- * REST Resource
+      TargetPoolsRemoveInstanceResource
+
+    -- * Creating a Request
+    , targetPoolsRemoveInstance
+    , TargetPoolsRemoveInstance
+
+    -- * Request Lenses
+    , tpriProject
+    , tpriTargetPool
+    , tpriPayload
+    , tpriRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.removeInstance@ method which the
+-- 'TargetPoolsRemoveInstance' request conforms to.
+type TargetPoolsRemoveInstanceResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     "removeInstance" :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] TargetPoolsRemoveInstanceRequest :>
+                           Post '[JSON] Operation
+
+-- | Removes instance URL from targetPool.
+--
+-- /See:/ 'targetPoolsRemoveInstance' smart constructor.
+data TargetPoolsRemoveInstance = TargetPoolsRemoveInstance
+    { _tpriProject    :: !Text
+    , _tpriTargetPool :: !Text
+    , _tpriPayload    :: !TargetPoolsRemoveInstanceRequest
+    , _tpriRegion     :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsRemoveInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpriProject'
+--
+-- * 'tpriTargetPool'
+--
+-- * 'tpriPayload'
+--
+-- * 'tpriRegion'
+targetPoolsRemoveInstance
+    :: Text -- ^ 'tpriProject'
+    -> Text -- ^ 'tpriTargetPool'
+    -> TargetPoolsRemoveInstanceRequest -- ^ 'tpriPayload'
+    -> Text -- ^ 'tpriRegion'
+    -> TargetPoolsRemoveInstance
+targetPoolsRemoveInstance pTpriProject_ pTpriTargetPool_ pTpriPayload_ pTpriRegion_ =
+    TargetPoolsRemoveInstance
+    { _tpriProject = pTpriProject_
+    , _tpriTargetPool = pTpriTargetPool_
+    , _tpriPayload = pTpriPayload_
+    , _tpriRegion = pTpriRegion_
+    }
+
+tpriProject :: Lens' TargetPoolsRemoveInstance Text
+tpriProject
+  = lens _tpriProject (\ s a -> s{_tpriProject = a})
+
+-- | Name of the TargetPool resource to which instance_url is to be removed.
+tpriTargetPool :: Lens' TargetPoolsRemoveInstance Text
+tpriTargetPool
+  = lens _tpriTargetPool
+      (\ s a -> s{_tpriTargetPool = a})
+
+-- | Multipart request metadata.
+tpriPayload :: Lens' TargetPoolsRemoveInstance TargetPoolsRemoveInstanceRequest
+tpriPayload
+  = lens _tpriPayload (\ s a -> s{_tpriPayload = a})
+
+-- | Name of the region scoping this request.
+tpriRegion :: Lens' TargetPoolsRemoveInstance Text
+tpriRegion
+  = lens _tpriRegion (\ s a -> s{_tpriRegion = a})
+
+instance GoogleRequest TargetPoolsRemoveInstance
+         where
+        type Rs TargetPoolsRemoveInstance = Operation
+        requestClient TargetPoolsRemoveInstance{..}
+          = go _tpriProject _tpriRegion _tpriTargetPool
+              (Just AltJSON)
+              _tpriPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsRemoveInstanceResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs b/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetPools/SetBackup.hs
@@ -0,0 +1,141 @@
+{-# 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.Compute.TargetPools.SetBackup
+-- Copyright   : (c) 2015 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)
+--
+-- Changes backup pool configurations.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetPools.setBackup@.
+module Network.Google.Resource.Compute.TargetPools.SetBackup
+    (
+    -- * REST Resource
+      TargetPoolsSetBackupResource
+
+    -- * Creating a Request
+    , targetPoolsSetBackup
+    , TargetPoolsSetBackup
+
+    -- * Request Lenses
+    , tpsbProject
+    , tpsbTargetPool
+    , tpsbPayload
+    , tpsbFailoverRatio
+    , tpsbRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetPools.setBackup@ method which the
+-- 'TargetPoolsSetBackup' request conforms to.
+type TargetPoolsSetBackupResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetPools" :>
+                   Capture "targetPool" Text :>
+                     "setBackup" :>
+                       QueryParam "failoverRatio" (Textual Double) :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] TargetReference :>
+                             Post '[JSON] Operation
+
+-- | Changes backup pool configurations.
+--
+-- /See:/ 'targetPoolsSetBackup' smart constructor.
+data TargetPoolsSetBackup = TargetPoolsSetBackup
+    { _tpsbProject       :: !Text
+    , _tpsbTargetPool    :: !Text
+    , _tpsbPayload       :: !TargetReference
+    , _tpsbFailoverRatio :: !(Maybe (Textual Double))
+    , _tpsbRegion        :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetPoolsSetBackup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tpsbProject'
+--
+-- * 'tpsbTargetPool'
+--
+-- * 'tpsbPayload'
+--
+-- * 'tpsbFailoverRatio'
+--
+-- * 'tpsbRegion'
+targetPoolsSetBackup
+    :: Text -- ^ 'tpsbProject'
+    -> Text -- ^ 'tpsbTargetPool'
+    -> TargetReference -- ^ 'tpsbPayload'
+    -> Text -- ^ 'tpsbRegion'
+    -> TargetPoolsSetBackup
+targetPoolsSetBackup pTpsbProject_ pTpsbTargetPool_ pTpsbPayload_ pTpsbRegion_ =
+    TargetPoolsSetBackup
+    { _tpsbProject = pTpsbProject_
+    , _tpsbTargetPool = pTpsbTargetPool_
+    , _tpsbPayload = pTpsbPayload_
+    , _tpsbFailoverRatio = Nothing
+    , _tpsbRegion = pTpsbRegion_
+    }
+
+-- | Name of the project scoping this request.
+tpsbProject :: Lens' TargetPoolsSetBackup Text
+tpsbProject
+  = lens _tpsbProject (\ s a -> s{_tpsbProject = a})
+
+-- | Name of the TargetPool resource for which the backup is to be set.
+tpsbTargetPool :: Lens' TargetPoolsSetBackup Text
+tpsbTargetPool
+  = lens _tpsbTargetPool
+      (\ s a -> s{_tpsbTargetPool = a})
+
+-- | Multipart request metadata.
+tpsbPayload :: Lens' TargetPoolsSetBackup TargetReference
+tpsbPayload
+  = lens _tpsbPayload (\ s a -> s{_tpsbPayload = a})
+
+-- | New failoverRatio value for the containing target pool.
+tpsbFailoverRatio :: Lens' TargetPoolsSetBackup (Maybe Double)
+tpsbFailoverRatio
+  = lens _tpsbFailoverRatio
+      (\ s a -> s{_tpsbFailoverRatio = a})
+      . mapping _Coerce
+
+-- | Name of the region scoping this request.
+tpsbRegion :: Lens' TargetPoolsSetBackup Text
+tpsbRegion
+  = lens _tpsbRegion (\ s a -> s{_tpsbRegion = a})
+
+instance GoogleRequest TargetPoolsSetBackup where
+        type Rs TargetPoolsSetBackup = Operation
+        requestClient TargetPoolsSetBackup{..}
+          = go _tpsbProject _tpsbRegion _tpsbTargetPool
+              _tpsbFailoverRatio
+              (Just AltJSON)
+              _tpsbPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetPoolsSetBackupResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/AggregatedList.hs
@@ -0,0 +1,140 @@
+{-# 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.Compute.TargetVPNGateways.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of target VPN gateways grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetVpnGateways.aggregatedList@.
+module Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
+    (
+    -- * REST Resource
+      TargetVPNGatewaysAggregatedListResource
+
+    -- * Creating a Request
+    , targetVPNGatewaysAggregatedList
+    , TargetVPNGatewaysAggregatedList
+
+    -- * Request Lenses
+    , tvgalProject
+    , tvgalFilter
+    , tvgalPageToken
+    , tvgalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetVpnGateways.aggregatedList@ method which the
+-- 'TargetVPNGatewaysAggregatedList' request conforms to.
+type TargetVPNGatewaysAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "targetVpnGateways" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] TargetVPNGatewayAggregatedList
+
+-- | Retrieves the list of target VPN gateways grouped by scope.
+--
+-- /See:/ 'targetVPNGatewaysAggregatedList' smart constructor.
+data TargetVPNGatewaysAggregatedList = TargetVPNGatewaysAggregatedList
+    { _tvgalProject    :: !Text
+    , _tvgalFilter     :: !(Maybe Text)
+    , _tvgalPageToken  :: !(Maybe Text)
+    , _tvgalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgalProject'
+--
+-- * 'tvgalFilter'
+--
+-- * 'tvgalPageToken'
+--
+-- * 'tvgalMaxResults'
+targetVPNGatewaysAggregatedList
+    :: Text -- ^ 'tvgalProject'
+    -> TargetVPNGatewaysAggregatedList
+targetVPNGatewaysAggregatedList pTvgalProject_ =
+    TargetVPNGatewaysAggregatedList
+    { _tvgalProject = pTvgalProject_
+    , _tvgalFilter = Nothing
+    , _tvgalPageToken = Nothing
+    , _tvgalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+tvgalProject :: Lens' TargetVPNGatewaysAggregatedList Text
+tvgalProject
+  = lens _tvgalProject (\ s a -> s{_tvgalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+tvgalFilter :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)
+tvgalFilter
+  = lens _tvgalFilter (\ s a -> s{_tvgalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+tvgalPageToken :: Lens' TargetVPNGatewaysAggregatedList (Maybe Text)
+tvgalPageToken
+  = lens _tvgalPageToken
+      (\ s a -> s{_tvgalPageToken = a})
+
+-- | Maximum count of results to be returned.
+tvgalMaxResults :: Lens' TargetVPNGatewaysAggregatedList Word32
+tvgalMaxResults
+  = lens _tvgalMaxResults
+      (\ s a -> s{_tvgalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest
+         TargetVPNGatewaysAggregatedList where
+        type Rs TargetVPNGatewaysAggregatedList =
+             TargetVPNGatewayAggregatedList
+        requestClient TargetVPNGatewaysAggregatedList{..}
+          = go _tvgalProject _tvgalFilter _tvgalPageToken
+              (Just _tvgalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy TargetVPNGatewaysAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Delete.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.TargetVPNGateways.Delete
+-- Copyright   : (c) 2015 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 the specified TargetVpnGateway resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetVpnGateways.delete@.
+module Network.Google.Resource.Compute.TargetVPNGateways.Delete
+    (
+    -- * REST Resource
+      TargetVPNGatewaysDeleteResource
+
+    -- * Creating a Request
+    , targetVPNGatewaysDelete
+    , TargetVPNGatewaysDelete
+
+    -- * Request Lenses
+    , tvgdProject
+    , tvgdTargetVPNGateway
+    , tvgdRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetVpnGateways.delete@ method which the
+-- 'TargetVPNGatewaysDelete' request conforms to.
+type TargetVPNGatewaysDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetVpnGateways" :>
+                   Capture "targetVpnGateway" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified TargetVpnGateway resource.
+--
+-- /See:/ 'targetVPNGatewaysDelete' smart constructor.
+data TargetVPNGatewaysDelete = TargetVPNGatewaysDelete
+    { _tvgdProject          :: !Text
+    , _tvgdTargetVPNGateway :: !Text
+    , _tvgdRegion           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgdProject'
+--
+-- * 'tvgdTargetVPNGateway'
+--
+-- * 'tvgdRegion'
+targetVPNGatewaysDelete
+    :: Text -- ^ 'tvgdProject'
+    -> Text -- ^ 'tvgdTargetVPNGateway'
+    -> Text -- ^ 'tvgdRegion'
+    -> TargetVPNGatewaysDelete
+targetVPNGatewaysDelete pTvgdProject_ pTvgdTargetVPNGateway_ pTvgdRegion_ =
+    TargetVPNGatewaysDelete
+    { _tvgdProject = pTvgdProject_
+    , _tvgdTargetVPNGateway = pTvgdTargetVPNGateway_
+    , _tvgdRegion = pTvgdRegion_
+    }
+
+-- | Project ID for this request.
+tvgdProject :: Lens' TargetVPNGatewaysDelete Text
+tvgdProject
+  = lens _tvgdProject (\ s a -> s{_tvgdProject = a})
+
+-- | Name of the TargetVpnGateway resource to delete.
+tvgdTargetVPNGateway :: Lens' TargetVPNGatewaysDelete Text
+tvgdTargetVPNGateway
+  = lens _tvgdTargetVPNGateway
+      (\ s a -> s{_tvgdTargetVPNGateway = a})
+
+-- | The name of the region for this request.
+tvgdRegion :: Lens' TargetVPNGatewaysDelete Text
+tvgdRegion
+  = lens _tvgdRegion (\ s a -> s{_tvgdRegion = a})
+
+instance GoogleRequest TargetVPNGatewaysDelete where
+        type Rs TargetVPNGatewaysDelete = Operation
+        requestClient TargetVPNGatewaysDelete{..}
+          = go _tvgdProject _tvgdRegion _tvgdTargetVPNGateway
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetVPNGatewaysDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Get.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.TargetVPNGateways.Get
+-- Copyright   : (c) 2015 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 the specified TargetVpnGateway resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetVpnGateways.get@.
+module Network.Google.Resource.Compute.TargetVPNGateways.Get
+    (
+    -- * REST Resource
+      TargetVPNGatewaysGetResource
+
+    -- * Creating a Request
+    , targetVPNGatewaysGet
+    , TargetVPNGatewaysGet
+
+    -- * Request Lenses
+    , tvggProject
+    , tvggTargetVPNGateway
+    , tvggRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetVpnGateways.get@ method which the
+-- 'TargetVPNGatewaysGet' request conforms to.
+type TargetVPNGatewaysGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetVpnGateways" :>
+                   Capture "targetVpnGateway" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] TargetVPNGateway
+
+-- | Returns the specified TargetVpnGateway resource.
+--
+-- /See:/ 'targetVPNGatewaysGet' smart constructor.
+data TargetVPNGatewaysGet = TargetVPNGatewaysGet
+    { _tvggProject          :: !Text
+    , _tvggTargetVPNGateway :: !Text
+    , _tvggRegion           :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvggProject'
+--
+-- * 'tvggTargetVPNGateway'
+--
+-- * 'tvggRegion'
+targetVPNGatewaysGet
+    :: Text -- ^ 'tvggProject'
+    -> Text -- ^ 'tvggTargetVPNGateway'
+    -> Text -- ^ 'tvggRegion'
+    -> TargetVPNGatewaysGet
+targetVPNGatewaysGet pTvggProject_ pTvggTargetVPNGateway_ pTvggRegion_ =
+    TargetVPNGatewaysGet
+    { _tvggProject = pTvggProject_
+    , _tvggTargetVPNGateway = pTvggTargetVPNGateway_
+    , _tvggRegion = pTvggRegion_
+    }
+
+-- | Project ID for this request.
+tvggProject :: Lens' TargetVPNGatewaysGet Text
+tvggProject
+  = lens _tvggProject (\ s a -> s{_tvggProject = a})
+
+-- | Name of the TargetVpnGateway resource to return.
+tvggTargetVPNGateway :: Lens' TargetVPNGatewaysGet Text
+tvggTargetVPNGateway
+  = lens _tvggTargetVPNGateway
+      (\ s a -> s{_tvggTargetVPNGateway = a})
+
+-- | The name of the region for this request.
+tvggRegion :: Lens' TargetVPNGatewaysGet Text
+tvggRegion
+  = lens _tvggRegion (\ s a -> s{_tvggRegion = a})
+
+instance GoogleRequest TargetVPNGatewaysGet where
+        type Rs TargetVPNGatewaysGet = TargetVPNGateway
+        requestClient TargetVPNGatewaysGet{..}
+          = go _tvggProject _tvggRegion _tvggTargetVPNGateway
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetVPNGatewaysGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/Insert.hs
@@ -0,0 +1,114 @@
+{-# 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.Compute.TargetVPNGateways.Insert
+-- Copyright   : (c) 2015 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 TargetVpnGateway resource in the specified project and region
+-- using the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetVpnGateways.insert@.
+module Network.Google.Resource.Compute.TargetVPNGateways.Insert
+    (
+    -- * REST Resource
+      TargetVPNGatewaysInsertResource
+
+    -- * Creating a Request
+    , targetVPNGatewaysInsert
+    , TargetVPNGatewaysInsert
+
+    -- * Request Lenses
+    , tvgiProject
+    , tvgiPayload
+    , tvgiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetVpnGateways.insert@ method which the
+-- 'TargetVPNGatewaysInsert' request conforms to.
+type TargetVPNGatewaysInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetVpnGateways" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] TargetVPNGateway :>
+                       Post '[JSON] Operation
+
+-- | Creates a TargetVpnGateway resource in the specified project and region
+-- using the data included in the request.
+--
+-- /See:/ 'targetVPNGatewaysInsert' smart constructor.
+data TargetVPNGatewaysInsert = TargetVPNGatewaysInsert
+    { _tvgiProject :: !Text
+    , _tvgiPayload :: !TargetVPNGateway
+    , _tvgiRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvgiProject'
+--
+-- * 'tvgiPayload'
+--
+-- * 'tvgiRegion'
+targetVPNGatewaysInsert
+    :: Text -- ^ 'tvgiProject'
+    -> TargetVPNGateway -- ^ 'tvgiPayload'
+    -> Text -- ^ 'tvgiRegion'
+    -> TargetVPNGatewaysInsert
+targetVPNGatewaysInsert pTvgiProject_ pTvgiPayload_ pTvgiRegion_ =
+    TargetVPNGatewaysInsert
+    { _tvgiProject = pTvgiProject_
+    , _tvgiPayload = pTvgiPayload_
+    , _tvgiRegion = pTvgiRegion_
+    }
+
+-- | Project ID for this request.
+tvgiProject :: Lens' TargetVPNGatewaysInsert Text
+tvgiProject
+  = lens _tvgiProject (\ s a -> s{_tvgiProject = a})
+
+-- | Multipart request metadata.
+tvgiPayload :: Lens' TargetVPNGatewaysInsert TargetVPNGateway
+tvgiPayload
+  = lens _tvgiPayload (\ s a -> s{_tvgiPayload = a})
+
+-- | The name of the region for this request.
+tvgiRegion :: Lens' TargetVPNGatewaysInsert Text
+tvgiRegion
+  = lens _tvgiRegion (\ s a -> s{_tvgiRegion = a})
+
+instance GoogleRequest TargetVPNGatewaysInsert where
+        type Rs TargetVPNGatewaysInsert = Operation
+        requestClient TargetVPNGatewaysInsert{..}
+          = go _tvgiProject _tvgiRegion (Just AltJSON)
+              _tvgiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetVPNGatewaysInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs b/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/TargetVPNGateways/List.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.Compute.TargetVPNGateways.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of TargetVpnGateway resources available to the
+-- specified project and region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.targetVpnGateways.list@.
+module Network.Google.Resource.Compute.TargetVPNGateways.List
+    (
+    -- * REST Resource
+      TargetVPNGatewaysListResource
+
+    -- * Creating a Request
+    , targetVPNGatewaysList
+    , TargetVPNGatewaysList
+
+    -- * Request Lenses
+    , tvglProject
+    , tvglFilter
+    , tvglRegion
+    , tvglPageToken
+    , tvglMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.targetVpnGateways.list@ method which the
+-- 'TargetVPNGatewaysList' request conforms to.
+type TargetVPNGatewaysListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "targetVpnGateways" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] TargetVPNGatewayList
+
+-- | Retrieves the list of TargetVpnGateway resources available to the
+-- specified project and region.
+--
+-- /See:/ 'targetVPNGatewaysList' smart constructor.
+data TargetVPNGatewaysList = TargetVPNGatewaysList
+    { _tvglProject    :: !Text
+    , _tvglFilter     :: !(Maybe Text)
+    , _tvglRegion     :: !Text
+    , _tvglPageToken  :: !(Maybe Text)
+    , _tvglMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TargetVPNGatewaysList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tvglProject'
+--
+-- * 'tvglFilter'
+--
+-- * 'tvglRegion'
+--
+-- * 'tvglPageToken'
+--
+-- * 'tvglMaxResults'
+targetVPNGatewaysList
+    :: Text -- ^ 'tvglProject'
+    -> Text -- ^ 'tvglRegion'
+    -> TargetVPNGatewaysList
+targetVPNGatewaysList pTvglProject_ pTvglRegion_ =
+    TargetVPNGatewaysList
+    { _tvglProject = pTvglProject_
+    , _tvglFilter = Nothing
+    , _tvglRegion = pTvglRegion_
+    , _tvglPageToken = Nothing
+    , _tvglMaxResults = 500
+    }
+
+-- | Project ID for this request.
+tvglProject :: Lens' TargetVPNGatewaysList Text
+tvglProject
+  = lens _tvglProject (\ s a -> s{_tvglProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+tvglFilter :: Lens' TargetVPNGatewaysList (Maybe Text)
+tvglFilter
+  = lens _tvglFilter (\ s a -> s{_tvglFilter = a})
+
+-- | The name of the region for this request.
+tvglRegion :: Lens' TargetVPNGatewaysList Text
+tvglRegion
+  = lens _tvglRegion (\ s a -> s{_tvglRegion = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+tvglPageToken :: Lens' TargetVPNGatewaysList (Maybe Text)
+tvglPageToken
+  = lens _tvglPageToken
+      (\ s a -> s{_tvglPageToken = a})
+
+-- | Maximum count of results to be returned.
+tvglMaxResults :: Lens' TargetVPNGatewaysList Word32
+tvglMaxResults
+  = lens _tvglMaxResults
+      (\ s a -> s{_tvglMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest TargetVPNGatewaysList where
+        type Rs TargetVPNGatewaysList = TargetVPNGatewayList
+        requestClient TargetVPNGatewaysList{..}
+          = go _tvglProject _tvglRegion _tvglFilter
+              _tvglPageToken
+              (Just _tvglMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy TargetVPNGatewaysListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs b/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Delete.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.URLMaps.Delete
+-- Copyright   : (c) 2015 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 the specified UrlMap resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.delete@.
+module Network.Google.Resource.Compute.URLMaps.Delete
+    (
+    -- * REST Resource
+      URLMapsDeleteResource
+
+    -- * Creating a Request
+    , urlMapsDelete
+    , URLMapsDelete
+
+    -- * Request Lenses
+    , umdURLMap
+    , umdProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.delete@ method which the
+-- 'URLMapsDelete' request conforms to.
+type URLMapsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 Capture "urlMap" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified UrlMap resource.
+--
+-- /See:/ 'urlMapsDelete' smart constructor.
+data URLMapsDelete = URLMapsDelete
+    { _umdURLMap  :: !Text
+    , _umdProject :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umdURLMap'
+--
+-- * 'umdProject'
+urlMapsDelete
+    :: Text -- ^ 'umdURLMap'
+    -> Text -- ^ 'umdProject'
+    -> URLMapsDelete
+urlMapsDelete pUmdURLMap_ pUmdProject_ =
+    URLMapsDelete
+    { _umdURLMap = pUmdURLMap_
+    , _umdProject = pUmdProject_
+    }
+
+-- | Name of the UrlMap resource to delete.
+umdURLMap :: Lens' URLMapsDelete Text
+umdURLMap
+  = lens _umdURLMap (\ s a -> s{_umdURLMap = a})
+
+-- | Name of the project scoping this request.
+umdProject :: Lens' URLMapsDelete Text
+umdProject
+  = lens _umdProject (\ s a -> s{_umdProject = a})
+
+instance GoogleRequest URLMapsDelete where
+        type Rs URLMapsDelete = Operation
+        requestClient URLMapsDelete{..}
+          = go _umdProject _umdURLMap (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy URLMapsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Get.hs b/gen/Network/Google/Resource/Compute/URLMaps/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Get.hs
@@ -0,0 +1,97 @@
+{-# 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.Compute.URLMaps.Get
+-- Copyright   : (c) 2015 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 the specified UrlMap resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.get@.
+module Network.Google.Resource.Compute.URLMaps.Get
+    (
+    -- * REST Resource
+      URLMapsGetResource
+
+    -- * Creating a Request
+    , urlMapsGet
+    , URLMapsGet
+
+    -- * Request Lenses
+    , umgURLMap
+    , umgProject
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.get@ method which the
+-- 'URLMapsGet' request conforms to.
+type URLMapsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 Capture "urlMap" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] URLMap
+
+-- | Returns the specified UrlMap resource.
+--
+-- /See:/ 'urlMapsGet' smart constructor.
+data URLMapsGet = URLMapsGet
+    { _umgURLMap  :: !Text
+    , _umgProject :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umgURLMap'
+--
+-- * 'umgProject'
+urlMapsGet
+    :: Text -- ^ 'umgURLMap'
+    -> Text -- ^ 'umgProject'
+    -> URLMapsGet
+urlMapsGet pUmgURLMap_ pUmgProject_ =
+    URLMapsGet
+    { _umgURLMap = pUmgURLMap_
+    , _umgProject = pUmgProject_
+    }
+
+-- | Name of the UrlMap resource to return.
+umgURLMap :: Lens' URLMapsGet Text
+umgURLMap
+  = lens _umgURLMap (\ s a -> s{_umgURLMap = a})
+
+-- | Name of the project scoping this request.
+umgProject :: Lens' URLMapsGet Text
+umgProject
+  = lens _umgProject (\ s a -> s{_umgProject = a})
+
+instance GoogleRequest URLMapsGet where
+        type Rs URLMapsGet = URLMap
+        requestClient URLMapsGet{..}
+          = go _umgProject _umgURLMap (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy URLMapsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs b/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Insert.hs
@@ -0,0 +1,99 @@
+{-# 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.Compute.URLMaps.Insert
+-- Copyright   : (c) 2015 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 UrlMap resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.insert@.
+module Network.Google.Resource.Compute.URLMaps.Insert
+    (
+    -- * REST Resource
+      URLMapsInsertResource
+
+    -- * Creating a Request
+    , urlMapsInsert
+    , URLMapsInsert
+
+    -- * Request Lenses
+    , umiProject
+    , umiPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.insert@ method which the
+-- 'URLMapsInsert' request conforms to.
+type URLMapsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] URLMap :> Post '[JSON] Operation
+
+-- | Creates a UrlMap resource in the specified project using the data
+-- included in the request.
+--
+-- /See:/ 'urlMapsInsert' smart constructor.
+data URLMapsInsert = URLMapsInsert
+    { _umiProject :: !Text
+    , _umiPayload :: !URLMap
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umiProject'
+--
+-- * 'umiPayload'
+urlMapsInsert
+    :: Text -- ^ 'umiProject'
+    -> URLMap -- ^ 'umiPayload'
+    -> URLMapsInsert
+urlMapsInsert pUmiProject_ pUmiPayload_ =
+    URLMapsInsert
+    { _umiProject = pUmiProject_
+    , _umiPayload = pUmiPayload_
+    }
+
+-- | Name of the project scoping this request.
+umiProject :: Lens' URLMapsInsert Text
+umiProject
+  = lens _umiProject (\ s a -> s{_umiProject = a})
+
+-- | Multipart request metadata.
+umiPayload :: Lens' URLMapsInsert URLMap
+umiPayload
+  = lens _umiPayload (\ s a -> s{_umiPayload = a})
+
+instance GoogleRequest URLMapsInsert where
+        type Rs URLMapsInsert = Operation
+        requestClient URLMapsInsert{..}
+          = go _umiProject (Just AltJSON) _umiPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy URLMapsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/List.hs b/gen/Network/Google/Resource/Compute/URLMaps/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/List.hs
@@ -0,0 +1,136 @@
+{-# 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.Compute.URLMaps.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of UrlMap resources available to the specified
+-- project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.list@.
+module Network.Google.Resource.Compute.URLMaps.List
+    (
+    -- * REST Resource
+      URLMapsListResource
+
+    -- * Creating a Request
+    , urlMapsList
+    , URLMapsList
+
+    -- * Request Lenses
+    , umlProject
+    , umlFilter
+    , umlPageToken
+    , umlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.list@ method which the
+-- 'URLMapsList' request conforms to.
+type URLMapsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] URLMapList
+
+-- | Retrieves the list of UrlMap resources available to the specified
+-- project.
+--
+-- /See:/ 'urlMapsList' smart constructor.
+data URLMapsList = URLMapsList
+    { _umlProject    :: !Text
+    , _umlFilter     :: !(Maybe Text)
+    , _umlPageToken  :: !(Maybe Text)
+    , _umlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umlProject'
+--
+-- * 'umlFilter'
+--
+-- * 'umlPageToken'
+--
+-- * 'umlMaxResults'
+urlMapsList
+    :: Text -- ^ 'umlProject'
+    -> URLMapsList
+urlMapsList pUmlProject_ =
+    URLMapsList
+    { _umlProject = pUmlProject_
+    , _umlFilter = Nothing
+    , _umlPageToken = Nothing
+    , _umlMaxResults = 500
+    }
+
+-- | Name of the project scoping this request.
+umlProject :: Lens' URLMapsList Text
+umlProject
+  = lens _umlProject (\ s a -> s{_umlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+umlFilter :: Lens' URLMapsList (Maybe Text)
+umlFilter
+  = lens _umlFilter (\ s a -> s{_umlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+umlPageToken :: Lens' URLMapsList (Maybe Text)
+umlPageToken
+  = lens _umlPageToken (\ s a -> s{_umlPageToken = a})
+
+-- | Maximum count of results to be returned.
+umlMaxResults :: Lens' URLMapsList Word32
+umlMaxResults
+  = lens _umlMaxResults
+      (\ s a -> s{_umlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest URLMapsList where
+        type Rs URLMapsList = URLMapList
+        requestClient URLMapsList{..}
+          = go _umlProject _umlFilter _umlPageToken
+              (Just _umlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy URLMapsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs b/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Patch.hs
@@ -0,0 +1,112 @@
+{-# 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.Compute.URLMaps.Patch
+-- Copyright   : (c) 2015 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)
+--
+-- Update the entire content of the UrlMap resource. This method supports
+-- patch semantics.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.patch@.
+module Network.Google.Resource.Compute.URLMaps.Patch
+    (
+    -- * REST Resource
+      URLMapsPatchResource
+
+    -- * Creating a Request
+    , urlMapsPatch
+    , URLMapsPatch
+
+    -- * Request Lenses
+    , umpURLMap
+    , umpProject
+    , umpPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.patch@ method which the
+-- 'URLMapsPatch' request conforms to.
+type URLMapsPatchResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 Capture "urlMap" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] URLMap :> Patch '[JSON] Operation
+
+-- | Update the entire content of the UrlMap resource. This method supports
+-- patch semantics.
+--
+-- /See:/ 'urlMapsPatch' smart constructor.
+data URLMapsPatch = URLMapsPatch
+    { _umpURLMap  :: !Text
+    , _umpProject :: !Text
+    , _umpPayload :: !URLMap
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsPatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umpURLMap'
+--
+-- * 'umpProject'
+--
+-- * 'umpPayload'
+urlMapsPatch
+    :: Text -- ^ 'umpURLMap'
+    -> Text -- ^ 'umpProject'
+    -> URLMap -- ^ 'umpPayload'
+    -> URLMapsPatch
+urlMapsPatch pUmpURLMap_ pUmpProject_ pUmpPayload_ =
+    URLMapsPatch
+    { _umpURLMap = pUmpURLMap_
+    , _umpProject = pUmpProject_
+    , _umpPayload = pUmpPayload_
+    }
+
+-- | Name of the UrlMap resource to update.
+umpURLMap :: Lens' URLMapsPatch Text
+umpURLMap
+  = lens _umpURLMap (\ s a -> s{_umpURLMap = a})
+
+-- | Name of the project scoping this request.
+umpProject :: Lens' URLMapsPatch Text
+umpProject
+  = lens _umpProject (\ s a -> s{_umpProject = a})
+
+-- | Multipart request metadata.
+umpPayload :: Lens' URLMapsPatch URLMap
+umpPayload
+  = lens _umpPayload (\ s a -> s{_umpPayload = a})
+
+instance GoogleRequest URLMapsPatch where
+        type Rs URLMapsPatch = Operation
+        requestClient URLMapsPatch{..}
+          = go _umpProject _umpURLMap (Just AltJSON)
+              _umpPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy URLMapsPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Update.hs b/gen/Network/Google/Resource/Compute/URLMaps/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Update.hs
@@ -0,0 +1,110 @@
+{-# 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.Compute.URLMaps.Update
+-- Copyright   : (c) 2015 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)
+--
+-- Update the entire content of the UrlMap resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.update@.
+module Network.Google.Resource.Compute.URLMaps.Update
+    (
+    -- * REST Resource
+      URLMapsUpdateResource
+
+    -- * Creating a Request
+    , urlMapsUpdate
+    , URLMapsUpdate
+
+    -- * Request Lenses
+    , umuURLMap
+    , umuProject
+    , umuPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.update@ method which the
+-- 'URLMapsUpdate' request conforms to.
+type URLMapsUpdateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 Capture "urlMap" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] URLMap :> Put '[JSON] Operation
+
+-- | Update the entire content of the UrlMap resource.
+--
+-- /See:/ 'urlMapsUpdate' smart constructor.
+data URLMapsUpdate = URLMapsUpdate
+    { _umuURLMap  :: !Text
+    , _umuProject :: !Text
+    , _umuPayload :: !URLMap
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umuURLMap'
+--
+-- * 'umuProject'
+--
+-- * 'umuPayload'
+urlMapsUpdate
+    :: Text -- ^ 'umuURLMap'
+    -> Text -- ^ 'umuProject'
+    -> URLMap -- ^ 'umuPayload'
+    -> URLMapsUpdate
+urlMapsUpdate pUmuURLMap_ pUmuProject_ pUmuPayload_ =
+    URLMapsUpdate
+    { _umuURLMap = pUmuURLMap_
+    , _umuProject = pUmuProject_
+    , _umuPayload = pUmuPayload_
+    }
+
+-- | Name of the UrlMap resource to update.
+umuURLMap :: Lens' URLMapsUpdate Text
+umuURLMap
+  = lens _umuURLMap (\ s a -> s{_umuURLMap = a})
+
+-- | Name of the project scoping this request.
+umuProject :: Lens' URLMapsUpdate Text
+umuProject
+  = lens _umuProject (\ s a -> s{_umuProject = a})
+
+-- | Multipart request metadata.
+umuPayload :: Lens' URLMapsUpdate URLMap
+umuPayload
+  = lens _umuPayload (\ s a -> s{_umuPayload = a})
+
+instance GoogleRequest URLMapsUpdate where
+        type Rs URLMapsUpdate = Operation
+        requestClient URLMapsUpdate{..}
+          = go _umuProject _umuURLMap (Just AltJSON)
+              _umuPayload
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy URLMapsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs b/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/URLMaps/Validate.hs
@@ -0,0 +1,117 @@
+{-# 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.Compute.URLMaps.Validate
+-- Copyright   : (c) 2015 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)
+--
+-- Run static validation for the UrlMap. In particular, the tests of the
+-- provided UrlMap will be run. Calling this method does NOT create the
+-- UrlMap.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.urlMaps.validate@.
+module Network.Google.Resource.Compute.URLMaps.Validate
+    (
+    -- * REST Resource
+      URLMapsValidateResource
+
+    -- * Creating a Request
+    , urlMapsValidate
+    , URLMapsValidate
+
+    -- * Request Lenses
+    , umvURLMap
+    , umvProject
+    , umvPayload
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.urlMaps.validate@ method which the
+-- 'URLMapsValidate' request conforms to.
+type URLMapsValidateResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "global" :>
+               "urlMaps" :>
+                 Capture "urlMap" Text :>
+                   "validate" :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] URLMapsValidateRequest :>
+                         Post '[JSON] URLMapsValidateResponse
+
+-- | Run static validation for the UrlMap. In particular, the tests of the
+-- provided UrlMap will be run. Calling this method does NOT create the
+-- UrlMap.
+--
+-- /See:/ 'urlMapsValidate' smart constructor.
+data URLMapsValidate = URLMapsValidate
+    { _umvURLMap  :: !Text
+    , _umvProject :: !Text
+    , _umvPayload :: !URLMapsValidateRequest
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'URLMapsValidate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umvURLMap'
+--
+-- * 'umvProject'
+--
+-- * 'umvPayload'
+urlMapsValidate
+    :: Text -- ^ 'umvURLMap'
+    -> Text -- ^ 'umvProject'
+    -> URLMapsValidateRequest -- ^ 'umvPayload'
+    -> URLMapsValidate
+urlMapsValidate pUmvURLMap_ pUmvProject_ pUmvPayload_ =
+    URLMapsValidate
+    { _umvURLMap = pUmvURLMap_
+    , _umvProject = pUmvProject_
+    , _umvPayload = pUmvPayload_
+    }
+
+-- | Name of the UrlMap resource to be validated as.
+umvURLMap :: Lens' URLMapsValidate Text
+umvURLMap
+  = lens _umvURLMap (\ s a -> s{_umvURLMap = a})
+
+-- | Name of the project scoping this request.
+umvProject :: Lens' URLMapsValidate Text
+umvProject
+  = lens _umvProject (\ s a -> s{_umvProject = a})
+
+-- | Multipart request metadata.
+umvPayload :: Lens' URLMapsValidate URLMapsValidateRequest
+umvPayload
+  = lens _umvPayload (\ s a -> s{_umvPayload = a})
+
+instance GoogleRequest URLMapsValidate where
+        type Rs URLMapsValidate = URLMapsValidateResponse
+        requestClient URLMapsValidate{..}
+          = go _umvProject _umvURLMap (Just AltJSON)
+              _umvPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy URLMapsValidateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/AggregatedList.hs
@@ -0,0 +1,138 @@
+{-# 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.Compute.VPNTunnels.AggregatedList
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of VPN tunnels grouped by scope.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.vpnTunnels.aggregatedList@.
+module Network.Google.Resource.Compute.VPNTunnels.AggregatedList
+    (
+    -- * REST Resource
+      VPNTunnelsAggregatedListResource
+
+    -- * Creating a Request
+    , vpnTunnelsAggregatedList
+    , VPNTunnelsAggregatedList
+
+    -- * Request Lenses
+    , vtalProject
+    , vtalFilter
+    , vtalPageToken
+    , vtalMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.vpnTunnels.aggregatedList@ method which the
+-- 'VPNTunnelsAggregatedList' request conforms to.
+type VPNTunnelsAggregatedListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "aggregated" :>
+               "vpnTunnels" :>
+                 QueryParam "filter" Text :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "maxResults" (Textual Word32) :>
+                       QueryParam "alt" AltJSON :>
+                         Get '[JSON] VPNTunnelAggregatedList
+
+-- | Retrieves the list of VPN tunnels grouped by scope.
+--
+-- /See:/ 'vpnTunnelsAggregatedList' smart constructor.
+data VPNTunnelsAggregatedList = VPNTunnelsAggregatedList
+    { _vtalProject    :: !Text
+    , _vtalFilter     :: !(Maybe Text)
+    , _vtalPageToken  :: !(Maybe Text)
+    , _vtalMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsAggregatedList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtalProject'
+--
+-- * 'vtalFilter'
+--
+-- * 'vtalPageToken'
+--
+-- * 'vtalMaxResults'
+vpnTunnelsAggregatedList
+    :: Text -- ^ 'vtalProject'
+    -> VPNTunnelsAggregatedList
+vpnTunnelsAggregatedList pVtalProject_ =
+    VPNTunnelsAggregatedList
+    { _vtalProject = pVtalProject_
+    , _vtalFilter = Nothing
+    , _vtalPageToken = Nothing
+    , _vtalMaxResults = 500
+    }
+
+-- | Project ID for this request.
+vtalProject :: Lens' VPNTunnelsAggregatedList Text
+vtalProject
+  = lens _vtalProject (\ s a -> s{_vtalProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+vtalFilter :: Lens' VPNTunnelsAggregatedList (Maybe Text)
+vtalFilter
+  = lens _vtalFilter (\ s a -> s{_vtalFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+vtalPageToken :: Lens' VPNTunnelsAggregatedList (Maybe Text)
+vtalPageToken
+  = lens _vtalPageToken
+      (\ s a -> s{_vtalPageToken = a})
+
+-- | Maximum count of results to be returned.
+vtalMaxResults :: Lens' VPNTunnelsAggregatedList Word32
+vtalMaxResults
+  = lens _vtalMaxResults
+      (\ s a -> s{_vtalMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest VPNTunnelsAggregatedList where
+        type Rs VPNTunnelsAggregatedList =
+             VPNTunnelAggregatedList
+        requestClient VPNTunnelsAggregatedList{..}
+          = go _vtalProject _vtalFilter _vtalPageToken
+              (Just _vtalMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy VPNTunnelsAggregatedListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/Delete.hs
@@ -0,0 +1,111 @@
+{-# 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.Compute.VPNTunnels.Delete
+-- Copyright   : (c) 2015 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 the specified VpnTunnel resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.vpnTunnels.delete@.
+module Network.Google.Resource.Compute.VPNTunnels.Delete
+    (
+    -- * REST Resource
+      VPNTunnelsDeleteResource
+
+    -- * Creating a Request
+    , vpnTunnelsDelete
+    , VPNTunnelsDelete
+
+    -- * Request Lenses
+    , vtdProject
+    , vtdVPNTunnel
+    , vtdRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.vpnTunnels.delete@ method which the
+-- 'VPNTunnelsDelete' request conforms to.
+type VPNTunnelsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "vpnTunnels" :>
+                   Capture "vpnTunnel" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the specified VpnTunnel resource.
+--
+-- /See:/ 'vpnTunnelsDelete' smart constructor.
+data VPNTunnelsDelete = VPNTunnelsDelete
+    { _vtdProject   :: !Text
+    , _vtdVPNTunnel :: !Text
+    , _vtdRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtdProject'
+--
+-- * 'vtdVPNTunnel'
+--
+-- * 'vtdRegion'
+vpnTunnelsDelete
+    :: Text -- ^ 'vtdProject'
+    -> Text -- ^ 'vtdVPNTunnel'
+    -> Text -- ^ 'vtdRegion'
+    -> VPNTunnelsDelete
+vpnTunnelsDelete pVtdProject_ pVtdVPNTunnel_ pVtdRegion_ =
+    VPNTunnelsDelete
+    { _vtdProject = pVtdProject_
+    , _vtdVPNTunnel = pVtdVPNTunnel_
+    , _vtdRegion = pVtdRegion_
+    }
+
+-- | Project ID for this request.
+vtdProject :: Lens' VPNTunnelsDelete Text
+vtdProject
+  = lens _vtdProject (\ s a -> s{_vtdProject = a})
+
+-- | Name of the VpnTunnel resource to delete.
+vtdVPNTunnel :: Lens' VPNTunnelsDelete Text
+vtdVPNTunnel
+  = lens _vtdVPNTunnel (\ s a -> s{_vtdVPNTunnel = a})
+
+-- | The name of the region for this request.
+vtdRegion :: Lens' VPNTunnelsDelete Text
+vtdRegion
+  = lens _vtdRegion (\ s a -> s{_vtdRegion = a})
+
+instance GoogleRequest VPNTunnelsDelete where
+        type Rs VPNTunnelsDelete = Operation
+        requestClient VPNTunnelsDelete{..}
+          = go _vtdProject _vtdRegion _vtdVPNTunnel
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy VPNTunnelsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/Get.hs
@@ -0,0 +1,110 @@
+{-# 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.Compute.VPNTunnels.Get
+-- Copyright   : (c) 2015 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 the specified VpnTunnel resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.vpnTunnels.get@.
+module Network.Google.Resource.Compute.VPNTunnels.Get
+    (
+    -- * REST Resource
+      VPNTunnelsGetResource
+
+    -- * Creating a Request
+    , vpnTunnelsGet
+    , VPNTunnelsGet
+
+    -- * Request Lenses
+    , vtgProject
+    , vtgVPNTunnel
+    , vtgRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.vpnTunnels.get@ method which the
+-- 'VPNTunnelsGet' request conforms to.
+type VPNTunnelsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "vpnTunnels" :>
+                   Capture "vpnTunnel" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnel
+
+-- | Returns the specified VpnTunnel resource.
+--
+-- /See:/ 'vpnTunnelsGet' smart constructor.
+data VPNTunnelsGet = VPNTunnelsGet
+    { _vtgProject   :: !Text
+    , _vtgVPNTunnel :: !Text
+    , _vtgRegion    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtgProject'
+--
+-- * 'vtgVPNTunnel'
+--
+-- * 'vtgRegion'
+vpnTunnelsGet
+    :: Text -- ^ 'vtgProject'
+    -> Text -- ^ 'vtgVPNTunnel'
+    -> Text -- ^ 'vtgRegion'
+    -> VPNTunnelsGet
+vpnTunnelsGet pVtgProject_ pVtgVPNTunnel_ pVtgRegion_ =
+    VPNTunnelsGet
+    { _vtgProject = pVtgProject_
+    , _vtgVPNTunnel = pVtgVPNTunnel_
+    , _vtgRegion = pVtgRegion_
+    }
+
+-- | Project ID for this request.
+vtgProject :: Lens' VPNTunnelsGet Text
+vtgProject
+  = lens _vtgProject (\ s a -> s{_vtgProject = a})
+
+-- | Name of the VpnTunnel resource to return.
+vtgVPNTunnel :: Lens' VPNTunnelsGet Text
+vtgVPNTunnel
+  = lens _vtgVPNTunnel (\ s a -> s{_vtgVPNTunnel = a})
+
+-- | The name of the region for this request.
+vtgRegion :: Lens' VPNTunnelsGet Text
+vtgRegion
+  = lens _vtgRegion (\ s a -> s{_vtgRegion = a})
+
+instance GoogleRequest VPNTunnelsGet where
+        type Rs VPNTunnelsGet = VPNTunnel
+        requestClient VPNTunnelsGet{..}
+          = go _vtgProject _vtgRegion _vtgVPNTunnel
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy VPNTunnelsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/Insert.hs
@@ -0,0 +1,113 @@
+{-# 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.Compute.VPNTunnels.Insert
+-- Copyright   : (c) 2015 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 VpnTunnel resource in the specified project and region using
+-- the data included in the request.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.vpnTunnels.insert@.
+module Network.Google.Resource.Compute.VPNTunnels.Insert
+    (
+    -- * REST Resource
+      VPNTunnelsInsertResource
+
+    -- * Creating a Request
+    , vpnTunnelsInsert
+    , VPNTunnelsInsert
+
+    -- * Request Lenses
+    , vtiProject
+    , vtiPayload
+    , vtiRegion
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.vpnTunnels.insert@ method which the
+-- 'VPNTunnelsInsert' request conforms to.
+type VPNTunnelsInsertResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "vpnTunnels" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] VPNTunnel :> Post '[JSON] Operation
+
+-- | Creates a VpnTunnel resource in the specified project and region using
+-- the data included in the request.
+--
+-- /See:/ 'vpnTunnelsInsert' smart constructor.
+data VPNTunnelsInsert = VPNTunnelsInsert
+    { _vtiProject :: !Text
+    , _vtiPayload :: !VPNTunnel
+    , _vtiRegion  :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsInsert' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtiProject'
+--
+-- * 'vtiPayload'
+--
+-- * 'vtiRegion'
+vpnTunnelsInsert
+    :: Text -- ^ 'vtiProject'
+    -> VPNTunnel -- ^ 'vtiPayload'
+    -> Text -- ^ 'vtiRegion'
+    -> VPNTunnelsInsert
+vpnTunnelsInsert pVtiProject_ pVtiPayload_ pVtiRegion_ =
+    VPNTunnelsInsert
+    { _vtiProject = pVtiProject_
+    , _vtiPayload = pVtiPayload_
+    , _vtiRegion = pVtiRegion_
+    }
+
+-- | Project ID for this request.
+vtiProject :: Lens' VPNTunnelsInsert Text
+vtiProject
+  = lens _vtiProject (\ s a -> s{_vtiProject = a})
+
+-- | Multipart request metadata.
+vtiPayload :: Lens' VPNTunnelsInsert VPNTunnel
+vtiPayload
+  = lens _vtiPayload (\ s a -> s{_vtiPayload = a})
+
+-- | The name of the region for this request.
+vtiRegion :: Lens' VPNTunnelsInsert Text
+vtiRegion
+  = lens _vtiRegion (\ s a -> s{_vtiRegion = a})
+
+instance GoogleRequest VPNTunnelsInsert where
+        type Rs VPNTunnelsInsert = Operation
+        requestClient VPNTunnelsInsert{..}
+          = go _vtiProject _vtiRegion (Just AltJSON)
+              _vtiPayload
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy VPNTunnelsInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/VPNTunnels/List.hs b/gen/Network/Google/Resource/Compute/VPNTunnels/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/VPNTunnels/List.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.Compute.VPNTunnels.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of VpnTunnel resources contained in the specified
+-- project and region.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.vpnTunnels.list@.
+module Network.Google.Resource.Compute.VPNTunnels.List
+    (
+    -- * REST Resource
+      VPNTunnelsListResource
+
+    -- * Creating a Request
+    , vpnTunnelsList
+    , VPNTunnelsList
+
+    -- * Request Lenses
+    , vtlProject
+    , vtlFilter
+    , vtlRegion
+    , vtlPageToken
+    , vtlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.vpnTunnels.list@ method which the
+-- 'VPNTunnelsList' request conforms to.
+type VPNTunnelsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "regions" :>
+               Capture "region" Text :>
+                 "vpnTunnels" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] VPNTunnelList
+
+-- | Retrieves the list of VpnTunnel resources contained in the specified
+-- project and region.
+--
+-- /See:/ 'vpnTunnelsList' smart constructor.
+data VPNTunnelsList = VPNTunnelsList
+    { _vtlProject    :: !Text
+    , _vtlFilter     :: !(Maybe Text)
+    , _vtlRegion     :: !Text
+    , _vtlPageToken  :: !(Maybe Text)
+    , _vtlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VPNTunnelsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtlProject'
+--
+-- * 'vtlFilter'
+--
+-- * 'vtlRegion'
+--
+-- * 'vtlPageToken'
+--
+-- * 'vtlMaxResults'
+vpnTunnelsList
+    :: Text -- ^ 'vtlProject'
+    -> Text -- ^ 'vtlRegion'
+    -> VPNTunnelsList
+vpnTunnelsList pVtlProject_ pVtlRegion_ =
+    VPNTunnelsList
+    { _vtlProject = pVtlProject_
+    , _vtlFilter = Nothing
+    , _vtlRegion = pVtlRegion_
+    , _vtlPageToken = Nothing
+    , _vtlMaxResults = 500
+    }
+
+-- | Project ID for this request.
+vtlProject :: Lens' VPNTunnelsList Text
+vtlProject
+  = lens _vtlProject (\ s a -> s{_vtlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+vtlFilter :: Lens' VPNTunnelsList (Maybe Text)
+vtlFilter
+  = lens _vtlFilter (\ s a -> s{_vtlFilter = a})
+
+-- | The name of the region for this request.
+vtlRegion :: Lens' VPNTunnelsList Text
+vtlRegion
+  = lens _vtlRegion (\ s a -> s{_vtlRegion = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+vtlPageToken :: Lens' VPNTunnelsList (Maybe Text)
+vtlPageToken
+  = lens _vtlPageToken (\ s a -> s{_vtlPageToken = a})
+
+-- | Maximum count of results to be returned.
+vtlMaxResults :: Lens' VPNTunnelsList Word32
+vtlMaxResults
+  = lens _vtlMaxResults
+      (\ s a -> s{_vtlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest VPNTunnelsList where
+        type Rs VPNTunnelsList = VPNTunnelList
+        requestClient VPNTunnelsList{..}
+          = go _vtlProject _vtlRegion _vtlFilter _vtlPageToken
+              (Just _vtlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy VPNTunnelsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs b/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ZoneOperations/Delete.hs
@@ -0,0 +1,110 @@
+{-# 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.Compute.ZoneOperations.Delete
+-- Copyright   : (c) 2015 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 the specified zone-specific Operations resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.zoneOperations.delete@.
+module Network.Google.Resource.Compute.ZoneOperations.Delete
+    (
+    -- * REST Resource
+      ZoneOperationsDeleteResource
+
+    -- * Creating a Request
+    , zoneOperationsDelete
+    , ZoneOperationsDelete
+
+    -- * Request Lenses
+    , zodProject
+    , zodOperation
+    , zodZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.zoneOperations.delete@ method which the
+-- 'ZoneOperationsDelete' request conforms to.
+type ZoneOperationsDeleteResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "operations" :>
+                   Capture "operation" Text :>
+                     QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the specified zone-specific Operations resource.
+--
+-- /See:/ 'zoneOperationsDelete' smart constructor.
+data ZoneOperationsDelete = ZoneOperationsDelete
+    { _zodProject   :: !Text
+    , _zodOperation :: !Text
+    , _zodZone      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneOperationsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zodProject'
+--
+-- * 'zodOperation'
+--
+-- * 'zodZone'
+zoneOperationsDelete
+    :: Text -- ^ 'zodProject'
+    -> Text -- ^ 'zodOperation'
+    -> Text -- ^ 'zodZone'
+    -> ZoneOperationsDelete
+zoneOperationsDelete pZodProject_ pZodOperation_ pZodZone_ =
+    ZoneOperationsDelete
+    { _zodProject = pZodProject_
+    , _zodOperation = pZodOperation_
+    , _zodZone = pZodZone_
+    }
+
+-- | Project ID for this request.
+zodProject :: Lens' ZoneOperationsDelete Text
+zodProject
+  = lens _zodProject (\ s a -> s{_zodProject = a})
+
+-- | Name of the Operations resource to delete.
+zodOperation :: Lens' ZoneOperationsDelete Text
+zodOperation
+  = lens _zodOperation (\ s a -> s{_zodOperation = a})
+
+-- | Name of the zone scoping this request.
+zodZone :: Lens' ZoneOperationsDelete Text
+zodZone = lens _zodZone (\ s a -> s{_zodZone = a})
+
+instance GoogleRequest ZoneOperationsDelete where
+        type Rs ZoneOperationsDelete = ()
+        requestClient ZoneOperationsDelete{..}
+          = go _zodProject _zodZone _zodOperation
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ZoneOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs b/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ZoneOperations/Get.hs
@@ -0,0 +1,110 @@
+{-# 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.Compute.ZoneOperations.Get
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the specified zone-specific Operations resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.zoneOperations.get@.
+module Network.Google.Resource.Compute.ZoneOperations.Get
+    (
+    -- * REST Resource
+      ZoneOperationsGetResource
+
+    -- * Creating a Request
+    , zoneOperationsGet
+    , ZoneOperationsGet
+
+    -- * Request Lenses
+    , zogProject
+    , zogOperation
+    , zogZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.zoneOperations.get@ method which the
+-- 'ZoneOperationsGet' request conforms to.
+type ZoneOperationsGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "operations" :>
+                   Capture "operation" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Retrieves the specified zone-specific Operations resource.
+--
+-- /See:/ 'zoneOperationsGet' smart constructor.
+data ZoneOperationsGet = ZoneOperationsGet
+    { _zogProject   :: !Text
+    , _zogOperation :: !Text
+    , _zogZone      :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zogProject'
+--
+-- * 'zogOperation'
+--
+-- * 'zogZone'
+zoneOperationsGet
+    :: Text -- ^ 'zogProject'
+    -> Text -- ^ 'zogOperation'
+    -> Text -- ^ 'zogZone'
+    -> ZoneOperationsGet
+zoneOperationsGet pZogProject_ pZogOperation_ pZogZone_ =
+    ZoneOperationsGet
+    { _zogProject = pZogProject_
+    , _zogOperation = pZogOperation_
+    , _zogZone = pZogZone_
+    }
+
+-- | Project ID for this request.
+zogProject :: Lens' ZoneOperationsGet Text
+zogProject
+  = lens _zogProject (\ s a -> s{_zogProject = a})
+
+-- | Name of the Operations resource to return.
+zogOperation :: Lens' ZoneOperationsGet Text
+zogOperation
+  = lens _zogOperation (\ s a -> s{_zogOperation = a})
+
+-- | Name of the zone scoping this request.
+zogZone :: Lens' ZoneOperationsGet Text
+zogZone = lens _zogZone (\ s a -> s{_zogZone = a})
+
+instance GoogleRequest ZoneOperationsGet where
+        type Rs ZoneOperationsGet = Operation
+        requestClient ZoneOperationsGet{..}
+          = go _zogProject _zogZone _zogOperation
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ZoneOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/ZoneOperations/List.hs b/gen/Network/Google/Resource/Compute/ZoneOperations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/ZoneOperations/List.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.Compute.ZoneOperations.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of Operation resources contained within the specified
+-- zone.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.zoneOperations.list@.
+module Network.Google.Resource.Compute.ZoneOperations.List
+    (
+    -- * REST Resource
+      ZoneOperationsListResource
+
+    -- * Creating a Request
+    , zoneOperationsList
+    , ZoneOperationsList
+
+    -- * Request Lenses
+    , zolProject
+    , zolZone
+    , zolFilter
+    , zolPageToken
+    , zolMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.zoneOperations.list@ method which the
+-- 'ZoneOperationsList' request conforms to.
+type ZoneOperationsListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "operations" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] OperationList
+
+-- | Retrieves the list of Operation resources contained within the specified
+-- zone.
+--
+-- /See:/ 'zoneOperationsList' smart constructor.
+data ZoneOperationsList = ZoneOperationsList
+    { _zolProject    :: !Text
+    , _zolZone       :: !Text
+    , _zolFilter     :: !(Maybe Text)
+    , _zolPageToken  :: !(Maybe Text)
+    , _zolMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZoneOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zolProject'
+--
+-- * 'zolZone'
+--
+-- * 'zolFilter'
+--
+-- * 'zolPageToken'
+--
+-- * 'zolMaxResults'
+zoneOperationsList
+    :: Text -- ^ 'zolProject'
+    -> Text -- ^ 'zolZone'
+    -> ZoneOperationsList
+zoneOperationsList pZolProject_ pZolZone_ =
+    ZoneOperationsList
+    { _zolProject = pZolProject_
+    , _zolZone = pZolZone_
+    , _zolFilter = Nothing
+    , _zolPageToken = Nothing
+    , _zolMaxResults = 500
+    }
+
+-- | Project ID for this request.
+zolProject :: Lens' ZoneOperationsList Text
+zolProject
+  = lens _zolProject (\ s a -> s{_zolProject = a})
+
+-- | Name of the zone scoping this request.
+zolZone :: Lens' ZoneOperationsList Text
+zolZone = lens _zolZone (\ s a -> s{_zolZone = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+zolFilter :: Lens' ZoneOperationsList (Maybe Text)
+zolFilter
+  = lens _zolFilter (\ s a -> s{_zolFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+zolPageToken :: Lens' ZoneOperationsList (Maybe Text)
+zolPageToken
+  = lens _zolPageToken (\ s a -> s{_zolPageToken = a})
+
+-- | Maximum count of results to be returned.
+zolMaxResults :: Lens' ZoneOperationsList Word32
+zolMaxResults
+  = lens _zolMaxResults
+      (\ s a -> s{_zolMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ZoneOperationsList where
+        type Rs ZoneOperationsList = OperationList
+        requestClient ZoneOperationsList{..}
+          = go _zolProject _zolZone _zolFilter _zolPageToken
+              (Just _zolMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ZoneOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Zones/Get.hs b/gen/Network/Google/Resource/Compute/Zones/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Zones/Get.hs
@@ -0,0 +1,94 @@
+{-# 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.Compute.Zones.Get
+-- Copyright   : (c) 2015 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 the specified zone resource.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.zones.get@.
+module Network.Google.Resource.Compute.Zones.Get
+    (
+    -- * REST Resource
+      ZonesGetResource
+
+    -- * Creating a Request
+    , zonesGet
+    , ZonesGet
+
+    -- * Request Lenses
+    , zgProject
+    , zgZone
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.zones.get@ method which the
+-- 'ZonesGet' request conforms to.
+type ZonesGetResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] Zone
+
+-- | Returns the specified zone resource.
+--
+-- /See:/ 'zonesGet' smart constructor.
+data ZonesGet = ZonesGet
+    { _zgProject :: !Text
+    , _zgZone    :: !Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZonesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zgProject'
+--
+-- * 'zgZone'
+zonesGet
+    :: Text -- ^ 'zgProject'
+    -> Text -- ^ 'zgZone'
+    -> ZonesGet
+zonesGet pZgProject_ pZgZone_ =
+    ZonesGet
+    { _zgProject = pZgProject_
+    , _zgZone = pZgZone_
+    }
+
+-- | Project ID for this request.
+zgProject :: Lens' ZonesGet Text
+zgProject
+  = lens _zgProject (\ s a -> s{_zgProject = a})
+
+-- | Name of the zone resource to return.
+zgZone :: Lens' ZonesGet Text
+zgZone = lens _zgZone (\ s a -> s{_zgZone = a})
+
+instance GoogleRequest ZonesGet where
+        type Rs ZonesGet = Zone
+        requestClient ZonesGet{..}
+          = go _zgProject _zgZone (Just AltJSON) computeService
+          where go
+                  = buildClient (Proxy :: Proxy ZonesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Compute/Zones/List.hs b/gen/Network/Google/Resource/Compute/Zones/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Compute/Zones/List.hs
@@ -0,0 +1,131 @@
+{-# 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.Compute.Zones.List
+-- Copyright   : (c) 2015 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)
+--
+-- Retrieves the list of zone resources available to the specified project.
+--
+-- /See:/ <https://developers.google.com/compute/docs/reference/latest/ Compute Engine API Reference> for @compute.zones.list@.
+module Network.Google.Resource.Compute.Zones.List
+    (
+    -- * REST Resource
+      ZonesListResource
+
+    -- * Creating a Request
+    , zonesList
+    , ZonesList
+
+    -- * Request Lenses
+    , zlProject
+    , zlFilter
+    , zlPageToken
+    , zlMaxResults
+    ) where
+
+import           Network.Google.Compute.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @compute.zones.list@ method which the
+-- 'ZonesList' request conforms to.
+type ZonesListResource =
+     "compute" :>
+       "v1" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               QueryParam "filter" Text :>
+                 QueryParam "pageToken" Text :>
+                   QueryParam "maxResults" (Textual Word32) :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] ZoneList
+
+-- | Retrieves the list of zone resources available to the specified project.
+--
+-- /See:/ 'zonesList' smart constructor.
+data ZonesList = ZonesList
+    { _zlProject    :: !Text
+    , _zlFilter     :: !(Maybe Text)
+    , _zlPageToken  :: !(Maybe Text)
+    , _zlMaxResults :: !(Textual Word32)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ZonesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'zlProject'
+--
+-- * 'zlFilter'
+--
+-- * 'zlPageToken'
+--
+-- * 'zlMaxResults'
+zonesList
+    :: Text -- ^ 'zlProject'
+    -> ZonesList
+zonesList pZlProject_ =
+    ZonesList
+    { _zlProject = pZlProject_
+    , _zlFilter = Nothing
+    , _zlPageToken = Nothing
+    , _zlMaxResults = 500
+    }
+
+-- | Project ID for this request.
+zlProject :: Lens' ZonesList Text
+zlProject
+  = lens _zlProject (\ s a -> s{_zlProject = a})
+
+-- | Sets a filter expression for filtering listed resources, in the form
+-- filter={expression}. Your {expression} must be in the format: FIELD_NAME
+-- COMPARISON_STRING LITERAL_STRING. The FIELD_NAME is the name of the
+-- field you want to compare. Only atomic field types are supported
+-- (string, number, boolean). The COMPARISON_STRING must be either eq
+-- (equals) or ne (not equals). The LITERAL_STRING is the string value to
+-- filter to. The literal value must be valid for the type of field
+-- (string, number, boolean). For string fields, the literal value is
+-- interpreted as a regular expression using RE2 syntax. The literal value
+-- must match the entire field. For example, filter=name ne
+-- example-instance.
+zlFilter :: Lens' ZonesList (Maybe Text)
+zlFilter = lens _zlFilter (\ s a -> s{_zlFilter = a})
+
+-- | Specifies a page token to use. Use this parameter if you want to list
+-- the next page of results. Set pageToken to the nextPageToken returned by
+-- a previous list request.
+zlPageToken :: Lens' ZonesList (Maybe Text)
+zlPageToken
+  = lens _zlPageToken (\ s a -> s{_zlPageToken = a})
+
+-- | Maximum count of results to be returned.
+zlMaxResults :: Lens' ZonesList Word32
+zlMaxResults
+  = lens _zlMaxResults (\ s a -> s{_zlMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest ZonesList where
+        type Rs ZonesList = ZoneList
+        requestClient ZonesList{..}
+          = go _zlProject _zlFilter _zlPageToken
+              (Just _zlMaxResults)
+              (Just AltJSON)
+              computeService
+          where go
+                  = buildClient (Proxy :: Proxy ZonesListResource)
+                      mempty
diff --git a/gogol-compute.cabal b/gogol-compute.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-compute.cabal
@@ -0,0 +1,235 @@
+name:                  gogol-compute
+version:               0.0.1
+synopsis:              Google Compute Engine 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 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    API for the Google Compute Engine service.
+    .
+    /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 @v1@
+    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.Compute
+        , Network.Google.Compute.Types
+        , Network.Google.Resource.Compute.Addresses.AggregatedList
+        , Network.Google.Resource.Compute.Addresses.Delete
+        , Network.Google.Resource.Compute.Addresses.Get
+        , Network.Google.Resource.Compute.Addresses.Insert
+        , Network.Google.Resource.Compute.Addresses.List
+        , Network.Google.Resource.Compute.Autoscalers.AggregatedList
+        , Network.Google.Resource.Compute.Autoscalers.Delete
+        , Network.Google.Resource.Compute.Autoscalers.Get
+        , Network.Google.Resource.Compute.Autoscalers.Insert
+        , Network.Google.Resource.Compute.Autoscalers.List
+        , Network.Google.Resource.Compute.Autoscalers.Patch
+        , Network.Google.Resource.Compute.Autoscalers.Update
+        , Network.Google.Resource.Compute.BackendServices.Delete
+        , Network.Google.Resource.Compute.BackendServices.Get
+        , Network.Google.Resource.Compute.BackendServices.GetHealth
+        , Network.Google.Resource.Compute.BackendServices.Insert
+        , Network.Google.Resource.Compute.BackendServices.List
+        , Network.Google.Resource.Compute.BackendServices.Patch
+        , Network.Google.Resource.Compute.BackendServices.Update
+        , Network.Google.Resource.Compute.DiskTypes.AggregatedList
+        , Network.Google.Resource.Compute.DiskTypes.Get
+        , Network.Google.Resource.Compute.DiskTypes.List
+        , Network.Google.Resource.Compute.Disks.AggregatedList
+        , Network.Google.Resource.Compute.Disks.CreateSnapshot
+        , Network.Google.Resource.Compute.Disks.Delete
+        , Network.Google.Resource.Compute.Disks.Get
+        , Network.Google.Resource.Compute.Disks.Insert
+        , Network.Google.Resource.Compute.Disks.List
+        , Network.Google.Resource.Compute.Firewalls.Delete
+        , Network.Google.Resource.Compute.Firewalls.Get
+        , Network.Google.Resource.Compute.Firewalls.Insert
+        , Network.Google.Resource.Compute.Firewalls.List
+        , Network.Google.Resource.Compute.Firewalls.Patch
+        , Network.Google.Resource.Compute.Firewalls.Update
+        , Network.Google.Resource.Compute.ForwardingRules.AggregatedList
+        , Network.Google.Resource.Compute.ForwardingRules.Delete
+        , Network.Google.Resource.Compute.ForwardingRules.Get
+        , Network.Google.Resource.Compute.ForwardingRules.Insert
+        , Network.Google.Resource.Compute.ForwardingRules.List
+        , Network.Google.Resource.Compute.ForwardingRules.SetTarget
+        , Network.Google.Resource.Compute.GlobalAddresses.Delete
+        , Network.Google.Resource.Compute.GlobalAddresses.Get
+        , Network.Google.Resource.Compute.GlobalAddresses.Insert
+        , Network.Google.Resource.Compute.GlobalAddresses.List
+        , Network.Google.Resource.Compute.GlobalForwardingRules.Delete
+        , Network.Google.Resource.Compute.GlobalForwardingRules.Get
+        , Network.Google.Resource.Compute.GlobalForwardingRules.Insert
+        , Network.Google.Resource.Compute.GlobalForwardingRules.List
+        , Network.Google.Resource.Compute.GlobalForwardingRules.SetTarget
+        , Network.Google.Resource.Compute.GlobalOperations.AggregatedList
+        , Network.Google.Resource.Compute.GlobalOperations.Delete
+        , Network.Google.Resource.Compute.GlobalOperations.Get
+        , Network.Google.Resource.Compute.GlobalOperations.List
+        , Network.Google.Resource.Compute.HTTPHealthChecks.Delete
+        , Network.Google.Resource.Compute.HTTPHealthChecks.Get
+        , Network.Google.Resource.Compute.HTTPHealthChecks.Insert
+        , Network.Google.Resource.Compute.HTTPHealthChecks.List
+        , Network.Google.Resource.Compute.HTTPHealthChecks.Patch
+        , Network.Google.Resource.Compute.HTTPHealthChecks.Update
+        , Network.Google.Resource.Compute.HTTPSHealthChecks.Delete
+        , Network.Google.Resource.Compute.HTTPSHealthChecks.Get
+        , Network.Google.Resource.Compute.HTTPSHealthChecks.Insert
+        , Network.Google.Resource.Compute.HTTPSHealthChecks.List
+        , Network.Google.Resource.Compute.HTTPSHealthChecks.Patch
+        , Network.Google.Resource.Compute.HTTPSHealthChecks.Update
+        , Network.Google.Resource.Compute.Images.Delete
+        , Network.Google.Resource.Compute.Images.Deprecate
+        , Network.Google.Resource.Compute.Images.Get
+        , Network.Google.Resource.Compute.Images.Insert
+        , Network.Google.Resource.Compute.Images.List
+        , Network.Google.Resource.Compute.InstanceGroupManagers.AbandonInstances
+        , Network.Google.Resource.Compute.InstanceGroupManagers.AggregatedList
+        , Network.Google.Resource.Compute.InstanceGroupManagers.Delete
+        , Network.Google.Resource.Compute.InstanceGroupManagers.DeleteInstances
+        , Network.Google.Resource.Compute.InstanceGroupManagers.Get
+        , Network.Google.Resource.Compute.InstanceGroupManagers.Insert
+        , Network.Google.Resource.Compute.InstanceGroupManagers.List
+        , Network.Google.Resource.Compute.InstanceGroupManagers.ListManagedInstances
+        , Network.Google.Resource.Compute.InstanceGroupManagers.RecreateInstances
+        , Network.Google.Resource.Compute.InstanceGroupManagers.Resize
+        , Network.Google.Resource.Compute.InstanceGroupManagers.SetInstanceTemplate
+        , Network.Google.Resource.Compute.InstanceGroupManagers.SetTargetPools
+        , Network.Google.Resource.Compute.InstanceGroups.AddInstances
+        , Network.Google.Resource.Compute.InstanceGroups.AggregatedList
+        , Network.Google.Resource.Compute.InstanceGroups.Delete
+        , Network.Google.Resource.Compute.InstanceGroups.Get
+        , Network.Google.Resource.Compute.InstanceGroups.Insert
+        , Network.Google.Resource.Compute.InstanceGroups.List
+        , Network.Google.Resource.Compute.InstanceGroups.ListInstances
+        , Network.Google.Resource.Compute.InstanceGroups.RemoveInstances
+        , Network.Google.Resource.Compute.InstanceGroups.SetNamedPorts
+        , Network.Google.Resource.Compute.InstanceTemplates.Delete
+        , Network.Google.Resource.Compute.InstanceTemplates.Get
+        , Network.Google.Resource.Compute.InstanceTemplates.Insert
+        , Network.Google.Resource.Compute.InstanceTemplates.List
+        , Network.Google.Resource.Compute.Instances.AddAccessConfig
+        , Network.Google.Resource.Compute.Instances.AggregatedList
+        , Network.Google.Resource.Compute.Instances.AttachDisk
+        , Network.Google.Resource.Compute.Instances.Delete
+        , Network.Google.Resource.Compute.Instances.DeleteAccessConfig
+        , Network.Google.Resource.Compute.Instances.DetachDisk
+        , Network.Google.Resource.Compute.Instances.Get
+        , Network.Google.Resource.Compute.Instances.GetSerialPortOutput
+        , Network.Google.Resource.Compute.Instances.Insert
+        , Network.Google.Resource.Compute.Instances.List
+        , Network.Google.Resource.Compute.Instances.Reset
+        , Network.Google.Resource.Compute.Instances.SetDiskAutoDelete
+        , Network.Google.Resource.Compute.Instances.SetMetadata
+        , Network.Google.Resource.Compute.Instances.SetScheduling
+        , Network.Google.Resource.Compute.Instances.SetTags
+        , Network.Google.Resource.Compute.Instances.Start
+        , Network.Google.Resource.Compute.Instances.Stop
+        , Network.Google.Resource.Compute.Licenses.Get
+        , Network.Google.Resource.Compute.MachineTypes.AggregatedList
+        , Network.Google.Resource.Compute.MachineTypes.Get
+        , Network.Google.Resource.Compute.MachineTypes.List
+        , Network.Google.Resource.Compute.Networks.Delete
+        , Network.Google.Resource.Compute.Networks.Get
+        , Network.Google.Resource.Compute.Networks.Insert
+        , Network.Google.Resource.Compute.Networks.List
+        , Network.Google.Resource.Compute.Projects.Get
+        , Network.Google.Resource.Compute.Projects.MoveDisk
+        , Network.Google.Resource.Compute.Projects.MoveInstance
+        , Network.Google.Resource.Compute.Projects.SetCommonInstanceMetadata
+        , Network.Google.Resource.Compute.Projects.SetUsageExportBucket
+        , Network.Google.Resource.Compute.RegionOperations.Delete
+        , Network.Google.Resource.Compute.RegionOperations.Get
+        , Network.Google.Resource.Compute.RegionOperations.List
+        , Network.Google.Resource.Compute.Regions.Get
+        , Network.Google.Resource.Compute.Regions.List
+        , Network.Google.Resource.Compute.Routes.Delete
+        , Network.Google.Resource.Compute.Routes.Get
+        , Network.Google.Resource.Compute.Routes.Insert
+        , Network.Google.Resource.Compute.Routes.List
+        , Network.Google.Resource.Compute.SSLCertificates.Delete
+        , Network.Google.Resource.Compute.SSLCertificates.Get
+        , Network.Google.Resource.Compute.SSLCertificates.Insert
+        , Network.Google.Resource.Compute.SSLCertificates.List
+        , Network.Google.Resource.Compute.Snapshots.Delete
+        , Network.Google.Resource.Compute.Snapshots.Get
+        , Network.Google.Resource.Compute.Snapshots.List
+        , Network.Google.Resource.Compute.TargetHTTPProxies.Delete
+        , Network.Google.Resource.Compute.TargetHTTPProxies.Get
+        , Network.Google.Resource.Compute.TargetHTTPProxies.Insert
+        , Network.Google.Resource.Compute.TargetHTTPProxies.List
+        , Network.Google.Resource.Compute.TargetHTTPProxies.SetURLMap
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.Delete
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.Get
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.Insert
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.List
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.SetSSLCertificates
+        , Network.Google.Resource.Compute.TargetHTTPSProxies.SetURLMap
+        , Network.Google.Resource.Compute.TargetInstances.AggregatedList
+        , Network.Google.Resource.Compute.TargetInstances.Delete
+        , Network.Google.Resource.Compute.TargetInstances.Get
+        , Network.Google.Resource.Compute.TargetInstances.Insert
+        , Network.Google.Resource.Compute.TargetInstances.List
+        , Network.Google.Resource.Compute.TargetPools.AddHealthCheck
+        , Network.Google.Resource.Compute.TargetPools.AddInstance
+        , Network.Google.Resource.Compute.TargetPools.AggregatedList
+        , Network.Google.Resource.Compute.TargetPools.Delete
+        , Network.Google.Resource.Compute.TargetPools.Get
+        , Network.Google.Resource.Compute.TargetPools.GetHealth
+        , Network.Google.Resource.Compute.TargetPools.Insert
+        , Network.Google.Resource.Compute.TargetPools.List
+        , Network.Google.Resource.Compute.TargetPools.RemoveHealthCheck
+        , Network.Google.Resource.Compute.TargetPools.RemoveInstance
+        , Network.Google.Resource.Compute.TargetPools.SetBackup
+        , Network.Google.Resource.Compute.TargetVPNGateways.AggregatedList
+        , Network.Google.Resource.Compute.TargetVPNGateways.Delete
+        , Network.Google.Resource.Compute.TargetVPNGateways.Get
+        , Network.Google.Resource.Compute.TargetVPNGateways.Insert
+        , Network.Google.Resource.Compute.TargetVPNGateways.List
+        , Network.Google.Resource.Compute.URLMaps.Delete
+        , Network.Google.Resource.Compute.URLMaps.Get
+        , Network.Google.Resource.Compute.URLMaps.Insert
+        , Network.Google.Resource.Compute.URLMaps.List
+        , Network.Google.Resource.Compute.URLMaps.Patch
+        , Network.Google.Resource.Compute.URLMaps.Update
+        , Network.Google.Resource.Compute.URLMaps.Validate
+        , Network.Google.Resource.Compute.VPNTunnels.AggregatedList
+        , Network.Google.Resource.Compute.VPNTunnels.Delete
+        , Network.Google.Resource.Compute.VPNTunnels.Get
+        , Network.Google.Resource.Compute.VPNTunnels.Insert
+        , Network.Google.Resource.Compute.VPNTunnels.List
+        , Network.Google.Resource.Compute.ZoneOperations.Delete
+        , Network.Google.Resource.Compute.ZoneOperations.Get
+        , Network.Google.Resource.Compute.ZoneOperations.List
+        , Network.Google.Resource.Compute.Zones.Get
+        , Network.Google.Resource.Compute.Zones.List
+
+    other-modules:
+          Network.Google.Compute.Types.Product
+        , Network.Google.Compute.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
