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-autoscaler
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Compute Engine Autoscaler.
+
+
+## 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-autoscaler` 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/Autoscaler.hs b/gen/Network/Google/Autoscaler.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Autoscaler.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.Autoscaler
+-- 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)
+--
+-- The Google Compute Engine Autoscaler API provides autoscaling for groups
+-- of Cloud VMs.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference>
+module Network.Google.Autoscaler
+    (
+    -- * Service Configuration
+      autoscalerService
+
+    -- * API Declaration
+    , AutoscalerAPI
+
+    -- * Resources
+
+    -- ** autoscaler.autoscalers.delete
+    , module Network.Google.Resource.Autoscaler.Autoscalers.Delete
+
+    -- ** autoscaler.autoscalers.get
+    , module Network.Google.Resource.Autoscaler.Autoscalers.Get
+
+    -- ** autoscaler.autoscalers.insert
+    , module Network.Google.Resource.Autoscaler.Autoscalers.Insert
+
+    -- ** autoscaler.autoscalers.list
+    , module Network.Google.Resource.Autoscaler.Autoscalers.List
+
+    -- ** autoscaler.autoscalers.patch
+    , module Network.Google.Resource.Autoscaler.Autoscalers.Patch
+
+    -- ** autoscaler.autoscalers.update
+    , module Network.Google.Resource.Autoscaler.Autoscalers.Update
+
+    -- ** autoscaler.zoneOperations.delete
+    , module Network.Google.Resource.Autoscaler.ZoneOperations.Delete
+
+    -- ** autoscaler.zoneOperations.get
+    , module Network.Google.Resource.Autoscaler.ZoneOperations.Get
+
+    -- ** autoscaler.zoneOperations.list
+    , module Network.Google.Resource.Autoscaler.ZoneOperations.List
+
+    -- ** autoscaler.zones.list
+    , module Network.Google.Resource.Autoscaler.Zones.List
+
+    -- * Types
+
+    -- ** OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- ** DeprecationStatus
+    , DeprecationStatus
+    , deprecationStatus
+    , dsState
+    , dsDeleted
+    , dsReplacement
+    , dsObsolete
+    , dsDeprecated
+
+    -- ** AutoscalingPolicyCustomMetricUtilization
+    , AutoscalingPolicyCustomMetricUtilization
+    , autoscalingPolicyCustomMetricUtilization
+    , apcmuUtilizationTarget
+    , apcmuMetric
+    , apcmuUtilizationTargetType
+
+    -- ** OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olId
+
+    -- ** 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
+
+    -- ** AutoscalingPolicyLoadBalancingUtilization
+    , AutoscalingPolicyLoadBalancingUtilization
+    , autoscalingPolicyLoadBalancingUtilization
+    , aplbuUtilizationTarget
+
+    -- ** Zone
+    , Zone
+    , zone
+    , zStatus
+    , zMaintenanceWindows
+    , zKind
+    , zSelfLink
+    , zName
+    , zCreationTimestamp
+    , zId
+    , zRegion
+    , zDescription
+    , zDeprecated
+
+    -- ** ZoneMaintenanceWindowsItem
+    , ZoneMaintenanceWindowsItem
+    , zoneMaintenanceWindowsItem
+    , zmwiBeginTime
+    , zmwiName
+    , zmwiEndTime
+    , zmwiDescription
+
+    -- ** ZoneList
+    , ZoneList
+    , zoneList
+    , zlNextPageToken
+    , zlKind
+    , zlItems
+    , zlSelfLink
+    , zlId
+
+    -- ** AutoscalerListResponse
+    , AutoscalerListResponse
+    , autoscalerListResponse
+    , alrNextPageToken
+    , alrKind
+    , alrItems
+
+    -- ** AutoscalingPolicy
+    , AutoscalingPolicy
+    , autoscalingPolicy
+    , apCustomMetricUtilizations
+    , apMaxNumReplicas
+    , apCPUUtilization
+    , apLoadBalancingUtilization
+    , apMinNumReplicas
+    , apCoolDownPeriodSec
+
+    -- ** OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- ** Autoscaler
+    , Autoscaler
+    , autoscaler
+    , aKind
+    , aSelfLink
+    , aName
+    , aCreationTimestamp
+    , aAutoscalingPolicy
+    , aId
+    , aDescription
+    , aTarget
+
+    -- ** OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- ** AutoscalingPolicyCPUUtilization
+    , AutoscalingPolicyCPUUtilization
+    , autoscalingPolicyCPUUtilization
+    , apcuUtilizationTarget
+
+    -- ** OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.Autoscaler.Autoscalers.Delete
+import           Network.Google.Resource.Autoscaler.Autoscalers.Get
+import           Network.Google.Resource.Autoscaler.Autoscalers.Insert
+import           Network.Google.Resource.Autoscaler.Autoscalers.List
+import           Network.Google.Resource.Autoscaler.Autoscalers.Patch
+import           Network.Google.Resource.Autoscaler.Autoscalers.Update
+import           Network.Google.Resource.Autoscaler.ZoneOperations.Delete
+import           Network.Google.Resource.Autoscaler.ZoneOperations.Get
+import           Network.Google.Resource.Autoscaler.ZoneOperations.List
+import           Network.Google.Resource.Autoscaler.Zones.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Google Compute Engine Autoscaler API service.
+type AutoscalerAPI =
+     ZonesListResource :<|> AutoscalersInsertResource :<|>
+       AutoscalersListResource
+       :<|> AutoscalersPatchResource
+       :<|> AutoscalersGetResource
+       :<|> AutoscalersDeleteResource
+       :<|> AutoscalersUpdateResource
+       :<|> ZoneOperationsListResource
+       :<|> ZoneOperationsGetResource
+       :<|> ZoneOperationsDeleteResource
diff --git a/gen/Network/Google/Autoscaler/Types.hs b/gen/Network/Google/Autoscaler/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Autoscaler/Types.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Autoscaler.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.Autoscaler.Types
+    (
+    -- * Service Configuration
+      autoscalerService
+
+    -- * OAuth Scopes
+    , computeScope
+    , computeReadonlyScope
+
+    -- * OperationWarningsItemDataItem
+    , OperationWarningsItemDataItem
+    , operationWarningsItemDataItem
+    , owidiValue
+    , owidiKey
+
+    -- * DeprecationStatus
+    , DeprecationStatus
+    , deprecationStatus
+    , dsState
+    , dsDeleted
+    , dsReplacement
+    , dsObsolete
+    , dsDeprecated
+
+    -- * AutoscalingPolicyCustomMetricUtilization
+    , AutoscalingPolicyCustomMetricUtilization
+    , autoscalingPolicyCustomMetricUtilization
+    , apcmuUtilizationTarget
+    , apcmuMetric
+    , apcmuUtilizationTargetType
+
+    -- * OperationList
+    , OperationList
+    , operationList
+    , olNextPageToken
+    , olKind
+    , olItems
+    , olSelfLink
+    , olId
+
+    -- * 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
+
+    -- * AutoscalingPolicyLoadBalancingUtilization
+    , AutoscalingPolicyLoadBalancingUtilization
+    , autoscalingPolicyLoadBalancingUtilization
+    , aplbuUtilizationTarget
+
+    -- * Zone
+    , Zone
+    , zone
+    , zStatus
+    , zMaintenanceWindows
+    , zKind
+    , zSelfLink
+    , zName
+    , zCreationTimestamp
+    , zId
+    , zRegion
+    , zDescription
+    , zDeprecated
+
+    -- * ZoneMaintenanceWindowsItem
+    , ZoneMaintenanceWindowsItem
+    , zoneMaintenanceWindowsItem
+    , zmwiBeginTime
+    , zmwiName
+    , zmwiEndTime
+    , zmwiDescription
+
+    -- * ZoneList
+    , ZoneList
+    , zoneList
+    , zlNextPageToken
+    , zlKind
+    , zlItems
+    , zlSelfLink
+    , zlId
+
+    -- * AutoscalerListResponse
+    , AutoscalerListResponse
+    , autoscalerListResponse
+    , alrNextPageToken
+    , alrKind
+    , alrItems
+
+    -- * AutoscalingPolicy
+    , AutoscalingPolicy
+    , autoscalingPolicy
+    , apCustomMetricUtilizations
+    , apMaxNumReplicas
+    , apCPUUtilization
+    , apLoadBalancingUtilization
+    , apMinNumReplicas
+    , apCoolDownPeriodSec
+
+    -- * OperationError
+    , OperationError
+    , operationError
+    , oeErrors
+
+    -- * Autoscaler
+    , Autoscaler
+    , autoscaler
+    , aKind
+    , aSelfLink
+    , aName
+    , aCreationTimestamp
+    , aAutoscalingPolicy
+    , aId
+    , aDescription
+    , aTarget
+
+    -- * OperationErrorErrorsItem
+    , OperationErrorErrorsItem
+    , operationErrorErrorsItem
+    , oeeiLocation
+    , oeeiCode
+    , oeeiMessage
+
+    -- * AutoscalingPolicyCPUUtilization
+    , AutoscalingPolicyCPUUtilization
+    , autoscalingPolicyCPUUtilization
+    , apcuUtilizationTarget
+
+    -- * OperationWarningsItem
+    , OperationWarningsItem
+    , operationWarningsItem
+    , owiData
+    , owiCode
+    , owiMessage
+    ) where
+
+import           Network.Google.Autoscaler.Types.Product
+import           Network.Google.Autoscaler.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1beta2' of the Google Compute Engine Autoscaler API. This contains the host and root path used as a starting point for constructing service requests.
+autoscalerService :: Service
+autoscalerService
+  = defaultService (ServiceId "autoscaler:v1beta2")
+      "www.googleapis.com"
+
+-- | View and manage your Google Compute Engine resources
+computeScope :: OAuthScope
+computeScope = "https://www.googleapis.com/auth/compute";
+
+-- | View your Google Compute Engine resources
+computeReadonlyScope :: OAuthScope
+computeReadonlyScope = "https://www.googleapis.com/auth/compute.readonly";
diff --git a/gen/Network/Google/Autoscaler/Types/Product.hs b/gen/Network/Google/Autoscaler/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Autoscaler/Types/Product.hs
@@ -0,0 +1,1316 @@
+{-# 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.Autoscaler.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.Autoscaler.Types.Product where
+
+import           Network.Google.Autoscaler.Types.Sum
+import           Network.Google.Prelude
+
+--
+-- /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
+    }
+
+owidiValue :: Lens' OperationWarningsItemDataItem (Maybe Text)
+owidiValue
+  = lens _owidiValue (\ s a -> s{_owidiValue = a})
+
+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:/ 'deprecationStatus' smart constructor.
+data DeprecationStatus = DeprecationStatus
+    { _dsState       :: !(Maybe Text)
+    , _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
+    }
+
+dsState :: Lens' DeprecationStatus (Maybe Text)
+dsState = lens _dsState (\ s a -> s{_dsState = a})
+
+dsDeleted :: Lens' DeprecationStatus (Maybe Text)
+dsDeleted
+  = lens _dsDeleted (\ s a -> s{_dsDeleted = a})
+
+dsReplacement :: Lens' DeprecationStatus (Maybe Text)
+dsReplacement
+  = lens _dsReplacement
+      (\ s a -> s{_dsReplacement = a})
+
+dsObsolete :: Lens' DeprecationStatus (Maybe Text)
+dsObsolete
+  = lens _dsObsolete (\ s a -> s{_dsObsolete = a})
+
+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])
+
+-- | Custom utilization metric policy.
+--
+-- /See:/ 'autoscalingPolicyCustomMetricUtilization' smart constructor.
+data AutoscalingPolicyCustomMetricUtilization = AutoscalingPolicyCustomMetricUtilization
+    { _apcmuUtilizationTarget     :: !(Maybe (Textual Double))
+    , _apcmuMetric                :: !(Maybe Text)
+    , _apcmuUtilizationTargetType :: !(Maybe Text)
+    } 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 Text)
+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])
+
+--
+-- /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 = "autoscaler#operationList"
+    , _olItems = Nothing
+    , _olSelfLink = Nothing
+    , _olId = Nothing
+    }
+
+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})
+
+olItems :: Lens' OperationList [Operation]
+olItems
+  = lens _olItems (\ s a -> s{_olItems = a}) . _Default
+      . _Coerce
+
+olSelfLink :: Lens' OperationList (Maybe Text)
+olSelfLink
+  = lens _olSelfLink (\ s a -> s{_olSelfLink = a})
+
+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" .!= "autoscaler#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])
+
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation
+    { _oTargetId            :: !(Maybe (Textual Word64))
+    , _oStatus              :: !(Maybe Text)
+    , _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 = "autoscaler#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
+    }
+
+oTargetId :: Lens' Operation (Maybe Word64)
+oTargetId
+  = lens _oTargetId (\ s a -> s{_oTargetId = a}) .
+      mapping _Coerce
+
+oStatus :: Lens' Operation (Maybe Text)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+oInsertTime :: Lens' Operation (Maybe Text)
+oInsertTime
+  = lens _oInsertTime (\ s a -> s{_oInsertTime = a})
+
+oProgress :: Lens' Operation (Maybe Int32)
+oProgress
+  = lens _oProgress (\ s a -> s{_oProgress = a}) .
+      mapping _Coerce
+
+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})
+
+oError :: Lens' Operation (Maybe OperationError)
+oError = lens _oError (\ s a -> s{_oError = a})
+
+oHTTPErrorMessage :: Lens' Operation (Maybe Text)
+oHTTPErrorMessage
+  = lens _oHTTPErrorMessage
+      (\ s a -> s{_oHTTPErrorMessage = a})
+
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+oWarnings :: Lens' Operation [OperationWarningsItem]
+oWarnings
+  = lens _oWarnings (\ s a -> s{_oWarnings = a}) .
+      _Default
+      . _Coerce
+
+oHTTPErrorStatusCode :: Lens' Operation (Maybe Int32)
+oHTTPErrorStatusCode
+  = lens _oHTTPErrorStatusCode
+      (\ s a -> s{_oHTTPErrorStatusCode = a})
+      . mapping _Coerce
+
+oUser :: Lens' Operation (Maybe Text)
+oUser = lens _oUser (\ s a -> s{_oUser = a})
+
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+oCreationTimestamp :: Lens' Operation (Maybe Text)
+oCreationTimestamp
+  = lens _oCreationTimestamp
+      (\ s a -> s{_oCreationTimestamp = a})
+
+oEndTime :: Lens' Operation (Maybe Text)
+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
+
+oId :: Lens' Operation (Maybe Word64)
+oId
+  = lens _oId (\ s a -> s{_oId = a}) . mapping _Coerce
+
+oOperationType :: Lens' Operation (Maybe Text)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+oRegion :: Lens' Operation (Maybe Text)
+oRegion = lens _oRegion (\ s a -> s{_oRegion = a})
+
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+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" .!= "autoscaler#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])
+
+-- | 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:/ 'zone' smart constructor.
+data Zone = Zone
+    { _zStatus             :: !(Maybe Text)
+    , _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 = "autoscaler#zone"
+    , _zSelfLink = Nothing
+    , _zName = Nothing
+    , _zCreationTimestamp = Nothing
+    , _zId = Nothing
+    , _zRegion = Nothing
+    , _zDescription = Nothing
+    , _zDeprecated = Nothing
+    }
+
+zStatus :: Lens' Zone (Maybe Text)
+zStatus = lens _zStatus (\ s a -> s{_zStatus = a})
+
+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})
+
+zName :: Lens' Zone (Maybe Text)
+zName = lens _zName (\ s a -> s{_zName = a})
+
+zCreationTimestamp :: Lens' Zone (Maybe Text)
+zCreationTimestamp
+  = lens _zCreationTimestamp
+      (\ s a -> s{_zCreationTimestamp = a})
+
+zId :: Lens' Zone (Maybe Word64)
+zId
+  = lens _zId (\ s a -> s{_zId = a}) . mapping _Coerce
+
+zRegion :: Lens' Zone (Maybe Text)
+zRegion = lens _zRegion (\ s a -> s{_zRegion = a})
+
+zDescription :: Lens' Zone (Maybe Text)
+zDescription
+  = lens _zDescription (\ s a -> s{_zDescription = a})
+
+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" .!= "autoscaler#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:/ '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
+    }
+
+zmwiBeginTime :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiBeginTime
+  = lens _zmwiBeginTime
+      (\ s a -> s{_zmwiBeginTime = a})
+
+zmwiName :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiName = lens _zmwiName (\ s a -> s{_zmwiName = a})
+
+zmwiEndTime :: Lens' ZoneMaintenanceWindowsItem (Maybe Text)
+zmwiEndTime
+  = lens _zmwiEndTime (\ s a -> s{_zmwiEndTime = a})
+
+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:/ '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 = "autoscaler#zoneList"
+    , _zlItems = Nothing
+    , _zlSelfLink = Nothing
+    , _zlId = Nothing
+    }
+
+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})
+
+zlItems :: Lens' ZoneList [Zone]
+zlItems
+  = lens _zlItems (\ s a -> s{_zlItems = a}) . _Default
+      . _Coerce
+
+-- | Server defined URL for this resource (output only).
+zlSelfLink :: Lens' ZoneList (Maybe Text)
+zlSelfLink
+  = lens _zlSelfLink (\ s a -> s{_zlSelfLink = a})
+
+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" .!= "autoscaler#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:/ 'autoscalerListResponse' smart constructor.
+data AutoscalerListResponse = AutoscalerListResponse
+    { _alrNextPageToken :: !(Maybe Text)
+    , _alrKind          :: !Text
+    , _alrItems         :: !(Maybe [Autoscaler])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoscalerListResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'alrNextPageToken'
+--
+-- * 'alrKind'
+--
+-- * 'alrItems'
+autoscalerListResponse
+    :: AutoscalerListResponse
+autoscalerListResponse =
+    AutoscalerListResponse
+    { _alrNextPageToken = Nothing
+    , _alrKind = "compute#autoscalerList"
+    , _alrItems = Nothing
+    }
+
+-- | [Output only] A token used to continue a truncated list request.
+alrNextPageToken :: Lens' AutoscalerListResponse (Maybe Text)
+alrNextPageToken
+  = lens _alrNextPageToken
+      (\ s a -> s{_alrNextPageToken = a})
+
+-- | Type of resource.
+alrKind :: Lens' AutoscalerListResponse Text
+alrKind = lens _alrKind (\ s a -> s{_alrKind = a})
+
+-- | Autoscaler resources.
+alrItems :: Lens' AutoscalerListResponse [Autoscaler]
+alrItems
+  = lens _alrItems (\ s a -> s{_alrItems = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON AutoscalerListResponse where
+        parseJSON
+          = withObject "AutoscalerListResponse"
+              (\ o ->
+                 AutoscalerListResponse <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "compute#autoscalerList")
+                     <*> (o .:? "items" .!= mempty))
+
+instance ToJSON AutoscalerListResponse where
+        toJSON AutoscalerListResponse{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _alrNextPageToken,
+                  Just ("kind" .= _alrKind),
+                  ("items" .=) <$> _alrItems])
+
+-- | 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.
+apMaxNumReplicas :: Lens' AutoscalingPolicy (Maybe Int32)
+apMaxNumReplicas
+  = lens _apMaxNumReplicas
+      (\ s a -> s{_apMaxNumReplicas = a})
+      . mapping _Coerce
+
+-- | 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.
+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])
+
+--
+-- /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
+    }
+
+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])
+
+-- | Cloud Autoscaler resource.
+--
+-- /See:/ 'autoscaler' smart constructor.
+data Autoscaler = Autoscaler
+    { _aKind              :: !Text
+    , _aSelfLink          :: !(Maybe Text)
+    , _aName              :: !(Maybe Text)
+    , _aCreationTimestamp :: !(Maybe Text)
+    , _aAutoscalingPolicy :: !(Maybe AutoscalingPolicy)
+    , _aId                :: !(Maybe (Textual Word64))
+    , _aDescription       :: !(Maybe Text)
+    , _aTarget            :: !(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:
+--
+-- * 'aKind'
+--
+-- * 'aSelfLink'
+--
+-- * 'aName'
+--
+-- * 'aCreationTimestamp'
+--
+-- * 'aAutoscalingPolicy'
+--
+-- * 'aId'
+--
+-- * 'aDescription'
+--
+-- * 'aTarget'
+autoscaler
+    :: Autoscaler
+autoscaler =
+    Autoscaler
+    { _aKind = "compute#autoscaler"
+    , _aSelfLink = Nothing
+    , _aName = Nothing
+    , _aCreationTimestamp = Nothing
+    , _aAutoscalingPolicy = Nothing
+    , _aId = Nothing
+    , _aDescription = Nothing
+    , _aTarget = Nothing
+    }
+
+-- | Type of resource.
+aKind :: Lens' Autoscaler Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | [Output Only] A self-link to the Autoscaler configuration resource.
+aSelfLink :: Lens' Autoscaler (Maybe Text)
+aSelfLink
+  = lens _aSelfLink (\ s a -> s{_aSelfLink = a})
+
+-- | Name of the Autoscaler resource. Must be unique per project and zone.
+aName :: Lens' Autoscaler (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a})
+
+-- | [Output Only] Creation timestamp in RFC3339 text format.
+aCreationTimestamp :: Lens' Autoscaler (Maybe Text)
+aCreationTimestamp
+  = lens _aCreationTimestamp
+      (\ s a -> s{_aCreationTimestamp = a})
+
+-- | Configuration parameters for autoscaling algorithm.
+aAutoscalingPolicy :: Lens' Autoscaler (Maybe AutoscalingPolicy)
+aAutoscalingPolicy
+  = lens _aAutoscalingPolicy
+      (\ s a -> s{_aAutoscalingPolicy = a})
+
+-- | [Output Only] Unique identifier for the resource; defined by the server.
+aId :: Lens' Autoscaler (Maybe Word64)
+aId
+  = lens _aId (\ s a -> s{_aId = a}) . mapping _Coerce
+
+-- | An optional textual description of the resource provided by the client.
+aDescription :: Lens' Autoscaler (Maybe Text)
+aDescription
+  = lens _aDescription (\ s a -> s{_aDescription = a})
+
+-- | URL to the entity which will be autoscaled. Currently the only supported
+-- value is ReplicaPool?s URL. Note: it is illegal to specify multiple
+-- Autoscalers for the same target.
+aTarget :: Lens' Autoscaler (Maybe Text)
+aTarget = lens _aTarget (\ s a -> s{_aTarget = a})
+
+instance FromJSON Autoscaler where
+        parseJSON
+          = withObject "Autoscaler"
+              (\ o ->
+                 Autoscaler <$>
+                   (o .:? "kind" .!= "compute#autoscaler") <*>
+                     (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "creationTimestamp")
+                     <*> (o .:? "autoscalingPolicy")
+                     <*> (o .:? "id")
+                     <*> (o .:? "description")
+                     <*> (o .:? "target"))
+
+instance ToJSON Autoscaler where
+        toJSON Autoscaler{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _aKind),
+                  ("selfLink" .=) <$> _aSelfLink,
+                  ("name" .=) <$> _aName,
+                  ("creationTimestamp" .=) <$> _aCreationTimestamp,
+                  ("autoscalingPolicy" .=) <$> _aAutoscalingPolicy,
+                  ("id" .=) <$> _aId,
+                  ("description" .=) <$> _aDescription,
+                  ("target" .=) <$> _aTarget])
+
+--
+-- /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
+    }
+
+oeeiLocation :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiLocation
+  = lens _oeeiLocation (\ s a -> s{_oeeiLocation = a})
+
+oeeiCode :: Lens' OperationErrorErrorsItem (Maybe Text)
+oeeiCode = lens _oeeiCode (\ s a -> s{_oeeiCode = a})
+
+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])
+
+-- | 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:/ 'operationWarningsItem' smart constructor.
+data OperationWarningsItem = OperationWarningsItem
+    { _owiData    :: !(Maybe [OperationWarningsItemDataItem])
+    , _owiCode    :: !(Maybe Text)
+    , _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
+    }
+
+owiData :: Lens' OperationWarningsItem [OperationWarningsItemDataItem]
+owiData
+  = lens _owiData (\ s a -> s{_owiData = a}) . _Default
+      . _Coerce
+
+owiCode :: Lens' OperationWarningsItem (Maybe Text)
+owiCode = lens _owiCode (\ s a -> s{_owiCode = a})
+
+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])
diff --git a/gen/Network/Google/Autoscaler/Types/Sum.hs b/gen/Network/Google/Autoscaler/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Autoscaler/Types/Sum.hs
@@ -0,0 +1,19 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Autoscaler.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.Autoscaler.Types.Sum where
+
+import           Network.Google.Prelude
diff --git a/gen/Network/Google/Resource/Autoscaler/Autoscalers/Delete.hs b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/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.Autoscaler.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:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.autoscalers.delete@.
+module Network.Google.Resource.Autoscaler.Autoscalers.Delete
+    (
+    -- * REST Resource
+      AutoscalersDeleteResource
+
+    -- * Creating a Request
+    , autoscalersDelete
+    , AutoscalersDelete
+
+    -- * Request Lenses
+    , adProject
+    , adZone
+    , adAutoscaler
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.autoscalers.delete@ method which the
+-- 'AutoscalersDelete' request conforms to.
+type AutoscalersDeleteResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         "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_
+    }
+
+-- | Project ID of Autoscaler resource.
+adProject :: Lens' AutoscalersDelete Text
+adProject
+  = lens _adProject (\ s a -> s{_adProject = a})
+
+-- | Zone name of Autoscaler resource.
+adZone :: Lens' AutoscalersDelete Text
+adZone = lens _adZone (\ s a -> s{_adZone = a})
+
+-- | Name of the Autoscaler resource.
+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)
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/Autoscalers/Get.hs b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/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.Autoscaler.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)
+--
+-- Gets the specified Autoscaler resource.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.autoscalers.get@.
+module Network.Google.Resource.Autoscaler.Autoscalers.Get
+    (
+    -- * REST Resource
+      AutoscalersGetResource
+
+    -- * Creating a Request
+    , autoscalersGet
+    , AutoscalersGet
+
+    -- * Request Lenses
+    , agProject
+    , agZone
+    , agAutoscaler
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.autoscalers.get@ method which the
+-- 'AutoscalersGet' request conforms to.
+type AutoscalersGetResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   Capture "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] Autoscaler
+
+-- | Gets 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_
+    }
+
+-- | Project ID of Autoscaler resource.
+agProject :: Lens' AutoscalersGet Text
+agProject
+  = lens _agProject (\ s a -> s{_agProject = a})
+
+-- | Zone name of Autoscaler resource.
+agZone :: Lens' AutoscalersGet Text
+agZone = lens _agZone (\ s a -> s{_agZone = a})
+
+-- | Name of the Autoscaler resource.
+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)
+              autoscalerService
+          where go
+                  = buildClient (Proxy :: Proxy AutoscalersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/Autoscalers/Insert.hs b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Insert.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Insert.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.Autoscaler.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)
+--
+-- Adds new Autoscaler resource.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.autoscalers.insert@.
+module Network.Google.Resource.Autoscaler.Autoscalers.Insert
+    (
+    -- * REST Resource
+      AutoscalersInsertResource
+
+    -- * Creating a Request
+    , autoscalersInsert
+    , AutoscalersInsert
+
+    -- * Request Lenses
+    , aiProject
+    , aiZone
+    , aiPayload
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.autoscalers.insert@ method which the
+-- 'AutoscalersInsert' request conforms to.
+type AutoscalersInsertResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Autoscaler :> Post '[JSON] Operation
+
+-- | Adds new Autoscaler resource.
+--
+-- /See:/ 'autoscalersInsert' smart constructor.
+data AutoscalersInsert = AutoscalersInsert
+    { _aiProject :: !Text
+    , _aiZone    :: !Text
+    , _aiPayload :: !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:
+--
+-- * 'aiProject'
+--
+-- * 'aiZone'
+--
+-- * 'aiPayload'
+autoscalersInsert
+    :: Text -- ^ 'aiProject'
+    -> Text -- ^ 'aiZone'
+    -> Autoscaler -- ^ 'aiPayload'
+    -> AutoscalersInsert
+autoscalersInsert pAiProject_ pAiZone_ pAiPayload_ =
+    AutoscalersInsert
+    { _aiProject = pAiProject_
+    , _aiZone = pAiZone_
+    , _aiPayload = pAiPayload_
+    }
+
+-- | Project ID of Autoscaler resource.
+aiProject :: Lens' AutoscalersInsert Text
+aiProject
+  = lens _aiProject (\ s a -> s{_aiProject = a})
+
+-- | Zone name of Autoscaler resource.
+aiZone :: Lens' AutoscalersInsert Text
+aiZone = lens _aiZone (\ s a -> s{_aiZone = a})
+
+-- | Multipart request metadata.
+aiPayload :: Lens' AutoscalersInsert Autoscaler
+aiPayload
+  = lens _aiPayload (\ s a -> s{_aiPayload = a})
+
+instance GoogleRequest AutoscalersInsert where
+        type Rs AutoscalersInsert = Operation
+        requestClient AutoscalersInsert{..}
+          = go _aiProject _aiZone (Just AltJSON) _aiPayload
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersInsertResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/Autoscalers/List.hs b/gen/Network/Google/Resource/Autoscaler/Autoscalers/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/Autoscalers/List.hs
@@ -0,0 +1,130 @@
+{-# 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.Autoscaler.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)
+--
+-- Lists all Autoscaler resources in this zone.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.autoscalers.list@.
+module Network.Google.Resource.Autoscaler.Autoscalers.List
+    (
+    -- * REST Resource
+      AutoscalersListResource
+
+    -- * Creating a Request
+    , autoscalersList
+    , AutoscalersList
+
+    -- * Request Lenses
+    , alProject
+    , alZone
+    , alFilter
+    , alPageToken
+    , alMaxResults
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.autoscalers.list@ method which the
+-- 'AutoscalersList' request conforms to.
+type AutoscalersListResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   QueryParam "filter" Text :>
+                     QueryParam "pageToken" Text :>
+                       QueryParam "maxResults" (Textual Word32) :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] AutoscalerListResponse
+
+-- | Lists all Autoscaler resources in this zone.
+--
+-- /See:/ 'autoscalersList' smart constructor.
+data AutoscalersList = AutoscalersList
+    { _alProject    :: !Text
+    , _alZone       :: !Text
+    , _alFilter     :: !(Maybe Text)
+    , _alPageToken  :: !(Maybe Text)
+    , _alMaxResults :: !(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:
+--
+-- * 'alProject'
+--
+-- * 'alZone'
+--
+-- * 'alFilter'
+--
+-- * 'alPageToken'
+--
+-- * 'alMaxResults'
+autoscalersList
+    :: Text -- ^ 'alProject'
+    -> Text -- ^ 'alZone'
+    -> AutoscalersList
+autoscalersList pAlProject_ pAlZone_ =
+    AutoscalersList
+    { _alProject = pAlProject_
+    , _alZone = pAlZone_
+    , _alFilter = Nothing
+    , _alPageToken = Nothing
+    , _alMaxResults = 500
+    }
+
+-- | Project ID of Autoscaler resource.
+alProject :: Lens' AutoscalersList Text
+alProject
+  = lens _alProject (\ s a -> s{_alProject = a})
+
+-- | Zone name of Autoscaler resource.
+alZone :: Lens' AutoscalersList Text
+alZone = lens _alZone (\ s a -> s{_alZone = a})
+
+alFilter :: Lens' AutoscalersList (Maybe Text)
+alFilter = lens _alFilter (\ s a -> s{_alFilter = a})
+
+alPageToken :: Lens' AutoscalersList (Maybe Text)
+alPageToken
+  = lens _alPageToken (\ s a -> s{_alPageToken = a})
+
+alMaxResults :: Lens' AutoscalersList Word32
+alMaxResults
+  = lens _alMaxResults (\ s a -> s{_alMaxResults = a})
+      . _Coerce
+
+instance GoogleRequest AutoscalersList where
+        type Rs AutoscalersList = AutoscalerListResponse
+        requestClient AutoscalersList{..}
+          = go _alProject _alZone _alFilter _alPageToken
+              (Just _alMaxResults)
+              (Just AltJSON)
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/Autoscalers/Patch.hs b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Patch.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.Autoscaler.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)
+--
+-- Update the entire content of the Autoscaler resource. This method
+-- supports patch semantics.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.autoscalers.patch@.
+module Network.Google.Resource.Autoscaler.Autoscalers.Patch
+    (
+    -- * REST Resource
+      AutoscalersPatchResource
+
+    -- * Creating a Request
+    , autoscalersPatch
+    , AutoscalersPatch
+
+    -- * Request Lenses
+    , apProject
+    , apZone
+    , apPayload
+    , apAutoscaler
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.autoscalers.patch@ method which the
+-- 'AutoscalersPatch' request conforms to.
+type AutoscalersPatchResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   Capture "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Autoscaler :> Patch '[JSON] Operation
+
+-- | Update the entire content of the Autoscaler resource. 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_
+    }
+
+-- | Project ID of Autoscaler resource.
+apProject :: Lens' AutoscalersPatch Text
+apProject
+  = lens _apProject (\ s a -> s{_apProject = a})
+
+-- | Zone name of Autoscaler resource.
+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.
+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 _apAutoscaler (Just AltJSON)
+              _apPayload
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersPatchResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/Autoscalers/Update.hs b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/Autoscalers/Update.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.Autoscaler.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)
+--
+-- Update the entire content of the Autoscaler resource.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.autoscalers.update@.
+module Network.Google.Resource.Autoscaler.Autoscalers.Update
+    (
+    -- * REST Resource
+      AutoscalersUpdateResource
+
+    -- * Creating a Request
+    , autoscalersUpdate
+    , AutoscalersUpdate
+
+    -- * Request Lenses
+    , auProject
+    , auZone
+    , auPayload
+    , auAutoscaler
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.autoscalers.update@ method which the
+-- 'AutoscalersUpdate' request conforms to.
+type AutoscalersUpdateResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         "projects" :>
+           Capture "project" Text :>
+             "zones" :>
+               Capture "zone" Text :>
+                 "autoscalers" :>
+                   Capture "autoscaler" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Autoscaler :> Put '[JSON] Operation
+
+-- | Update the entire content of the Autoscaler resource.
+--
+-- /See:/ 'autoscalersUpdate' smart constructor.
+data AutoscalersUpdate = AutoscalersUpdate
+    { _auProject    :: !Text
+    , _auZone       :: !Text
+    , _auPayload    :: !Autoscaler
+    , _auAutoscaler :: !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'
+    -> Text -- ^ 'auAutoscaler'
+    -> AutoscalersUpdate
+autoscalersUpdate pAuProject_ pAuZone_ pAuPayload_ pAuAutoscaler_ =
+    AutoscalersUpdate
+    { _auProject = pAuProject_
+    , _auZone = pAuZone_
+    , _auPayload = pAuPayload_
+    , _auAutoscaler = pAuAutoscaler_
+    }
+
+-- | Project ID of Autoscaler resource.
+auProject :: Lens' AutoscalersUpdate Text
+auProject
+  = lens _auProject (\ s a -> s{_auProject = a})
+
+-- | Zone name of Autoscaler resource.
+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.
+auAutoscaler :: Lens' AutoscalersUpdate 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
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy AutoscalersUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/ZoneOperations/Delete.hs b/gen/Network/Google/Resource/Autoscaler/ZoneOperations/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/ZoneOperations/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.Autoscaler.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 operation resource.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.zoneOperations.delete@.
+module Network.Google.Resource.Autoscaler.ZoneOperations.Delete
+    (
+    -- * REST Resource
+      ZoneOperationsDeleteResource
+
+    -- * Creating a Request
+    , zoneOperationsDelete
+    , ZoneOperationsDelete
+
+    -- * Request Lenses
+    , zodProject
+    , zodOperation
+    , zodZone
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.zoneOperations.delete@ method which the
+-- 'ZoneOperationsDelete' request conforms to.
+type ZoneOperationsDeleteResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         Capture "project" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "operations" :>
+                 Capture "operation" Text :>
+                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Deletes the specified zone-specific operation 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_
+    }
+
+zodProject :: Lens' ZoneOperationsDelete Text
+zodProject
+  = lens _zodProject (\ s a -> s{_zodProject = a})
+
+zodOperation :: Lens' ZoneOperationsDelete Text
+zodOperation
+  = lens _zodOperation (\ s a -> s{_zodOperation = a})
+
+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)
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ZoneOperationsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/ZoneOperations/Get.hs b/gen/Network/Google/Resource/Autoscaler/ZoneOperations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/ZoneOperations/Get.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.Autoscaler.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 operation resource.
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.zoneOperations.get@.
+module Network.Google.Resource.Autoscaler.ZoneOperations.Get
+    (
+    -- * REST Resource
+      ZoneOperationsGetResource
+
+    -- * Creating a Request
+    , zoneOperationsGet
+    , ZoneOperationsGet
+
+    -- * Request Lenses
+    , zogProject
+    , zogOperation
+    , zogZone
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.zoneOperations.get@ method which the
+-- 'ZoneOperationsGet' request conforms to.
+type ZoneOperationsGetResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         Capture "project" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "operations" :>
+                 Capture "operation" Text :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Retrieves the specified zone-specific operation 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_
+    }
+
+zogProject :: Lens' ZoneOperationsGet Text
+zogProject
+  = lens _zogProject (\ s a -> s{_zogProject = a})
+
+zogOperation :: Lens' ZoneOperationsGet Text
+zogOperation
+  = lens _zogOperation (\ s a -> s{_zogOperation = a})
+
+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)
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ZoneOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/ZoneOperations/List.hs b/gen/Network/Google/Resource/Autoscaler/ZoneOperations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/ZoneOperations/List.hs
@@ -0,0 +1,130 @@
+{-# 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.Autoscaler.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:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.zoneOperations.list@.
+module Network.Google.Resource.Autoscaler.ZoneOperations.List
+    (
+    -- * REST Resource
+      ZoneOperationsListResource
+
+    -- * Creating a Request
+    , zoneOperationsList
+    , ZoneOperationsList
+
+    -- * Request Lenses
+    , zolProject
+    , zolZone
+    , zolFilter
+    , zolPageToken
+    , zolMaxResults
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.zoneOperations.list@ method which the
+-- 'ZoneOperationsList' request conforms to.
+type ZoneOperationsListResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         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
+    }
+
+zolProject :: Lens' ZoneOperationsList Text
+zolProject
+  = lens _zolProject (\ s a -> s{_zolProject = a})
+
+zolZone :: Lens' ZoneOperationsList Text
+zolZone = lens _zolZone (\ s a -> s{_zolZone = a})
+
+zolFilter :: Lens' ZoneOperationsList (Maybe Text)
+zolFilter
+  = lens _zolFilter (\ s a -> s{_zolFilter = a})
+
+zolPageToken :: Lens' ZoneOperationsList (Maybe Text)
+zolPageToken
+  = lens _zolPageToken (\ s a -> s{_zolPageToken = a})
+
+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)
+              autoscalerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ZoneOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Autoscaler/Zones/List.hs b/gen/Network/Google/Resource/Autoscaler/Zones/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Autoscaler/Zones/List.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.Autoscaler.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)
+--
+-- -- |
+--
+-- /See:/ <http://developers.google.com/compute/docs/autoscaler Google Compute Engine Autoscaler API Reference> for @autoscaler.zones.list@.
+module Network.Google.Resource.Autoscaler.Zones.List
+    (
+    -- * REST Resource
+      ZonesListResource
+
+    -- * Creating a Request
+    , zonesList
+    , ZonesList
+
+    -- * Request Lenses
+    , zlProject
+    , zlFilter
+    , zlPageToken
+    , zlMaxResults
+    ) where
+
+import           Network.Google.Autoscaler.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @autoscaler.zones.list@ method which the
+-- 'ZonesList' request conforms to.
+type ZonesListResource =
+     "autoscaler" :>
+       "v1beta2" :>
+         Capture "project" Text :>
+           "zones" :>
+             QueryParam "filter" Text :>
+               QueryParam "pageToken" Text :>
+                 QueryParam "maxResults" (Textual Word32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] ZoneList
+
+-- |
+--
+-- /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
+    }
+
+zlProject :: Lens' ZonesList Text
+zlProject
+  = lens _zlProject (\ s a -> s{_zlProject = a})
+
+zlFilter :: Lens' ZonesList (Maybe Text)
+zlFilter = lens _zlFilter (\ s a -> s{_zlFilter = a})
+
+zlPageToken :: Lens' ZonesList (Maybe Text)
+zlPageToken
+  = lens _zlPageToken (\ s a -> s{_zlPageToken = a})
+
+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)
+              autoscalerService
+          where go
+                  = buildClient (Proxy :: Proxy ZonesListResource)
+                      mempty
diff --git a/gogol-autoscaler.cabal b/gogol-autoscaler.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-autoscaler.cabal
@@ -0,0 +1,60 @@
+name:                  gogol-autoscaler
+version:               0.0.1
+synopsis:              Google Compute Engine Autoscaler 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:
+    The Google Compute Engine Autoscaler API provides autoscaling for groups
+    of Cloud VMs.
+    .
+    /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 @v1beta2@
+    of the API.
+    .
+    Labels:
+    .
+    * Limited Availability
+
+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.Autoscaler
+        , Network.Google.Autoscaler.Types
+        , Network.Google.Resource.Autoscaler.Autoscalers.Delete
+        , Network.Google.Resource.Autoscaler.Autoscalers.Get
+        , Network.Google.Resource.Autoscaler.Autoscalers.Insert
+        , Network.Google.Resource.Autoscaler.Autoscalers.List
+        , Network.Google.Resource.Autoscaler.Autoscalers.Patch
+        , Network.Google.Resource.Autoscaler.Autoscalers.Update
+        , Network.Google.Resource.Autoscaler.ZoneOperations.Delete
+        , Network.Google.Resource.Autoscaler.ZoneOperations.Get
+        , Network.Google.Resource.Autoscaler.ZoneOperations.List
+        , Network.Google.Resource.Autoscaler.Zones.List
+
+    other-modules:
+          Network.Google.Autoscaler.Types.Product
+        , Network.Google.Autoscaler.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
