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-container
+
+* [Version](#version)
+* [Description](#description)
+* [Contribute](#contribute)
+* [Licence](#licence)
+
+
+## Version
+
+`0.0.1`
+
+
+## Description
+
+A client library for the Google Container Engine.
+
+
+## Contribute
+
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+
+> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+
+
+## Licence
+
+`gogol-container` 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/Container.hs b/gen/Network/Google/Container.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Container.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DataKinds         #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE TypeOperators     #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- |
+-- Module      : Network.Google.Container
+-- 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 Container Engine API is used for building and managing
+-- container based applications, powered by the open source Kubernetes
+-- technology.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference>
+module Network.Google.Container
+    (
+    -- * Service Configuration
+      containerService
+
+    -- * API Declaration
+    , ContainerAPI
+
+    -- * Resources
+
+    -- ** container.projects.zones.clusters.create
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Create
+
+    -- ** container.projects.zones.clusters.delete
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
+
+    -- ** container.projects.zones.clusters.get
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Get
+
+    -- ** container.projects.zones.clusters.list
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.List
+
+    -- ** container.projects.zones.clusters.update
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Update
+
+    -- ** container.projects.zones.getServerconfig
+    , module Network.Google.Resource.Container.Projects.Zones.GetServerConfig
+
+    -- ** container.projects.zones.operations.get
+    , module Network.Google.Resource.Container.Projects.Zones.Operations.Get
+
+    -- ** container.projects.zones.operations.list
+    , module Network.Google.Resource.Container.Projects.Zones.Operations.List
+
+    -- * Types
+
+    -- ** ListOperationsResponse
+    , ListOperationsResponse
+    , listOperationsResponse
+    , lorOperations
+
+    -- ** CreateClusterRequest
+    , CreateClusterRequest
+    , createClusterRequest
+    , ccrCluster
+
+    -- ** Cluster
+    , Cluster
+    , cluster
+    , cStatus
+    , cNodeConfig
+    , cNodeIPv4CIdRSize
+    , cClusterIPv4CIdR
+    , cInitialNodeCount
+    , cCurrentNodeVersion
+    , cNetwork
+    , cInitialClusterVersion
+    , cZone
+    , cServicesIPv4CIdR
+    , cMasterAuth
+    , cSelfLink
+    , cName
+    , cCurrentMasterVersion
+    , cStatusMessage
+    , cEndpoint
+    , cLoggingService
+    , cDescription
+    , cInstanceGroupURLs
+    , cMonitoringService
+    , cCreateTime
+
+    -- ** UpdateClusterRequest
+    , UpdateClusterRequest
+    , updateClusterRequest
+    , ucrUpdate
+
+    -- ** NodeConfig
+    , NodeConfig
+    , nodeConfig
+    , ncDiskSizeGb
+    , ncOAuthScopes
+    , ncMachineType
+
+    -- ** Operation
+    , Operation
+    , operation
+    , oStatus
+    , oZone
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oOperationType
+    , oTargetLink
+
+    -- ** MasterAuth
+    , MasterAuth
+    , masterAuth
+    , maClientKey
+    , maUsername
+    , maClientCertificate
+    , maPassword
+    , maClusterCaCertificate
+
+    -- ** ServerConfig
+    , ServerConfig
+    , serverConfig
+    , scValidNodeVersions
+    , scDefaultClusterVersion
+
+    -- ** ListClustersResponse
+    , ListClustersResponse
+    , listClustersResponse
+    , lcrClusters
+
+    -- ** ClusterUpdate
+    , ClusterUpdate
+    , clusterUpdate
+    , cuDesiredNodeVersion
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Create
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Get
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.List
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Update
+import           Network.Google.Resource.Container.Projects.Zones.GetServerConfig
+import           Network.Google.Resource.Container.Projects.Zones.Operations.Get
+import           Network.Google.Resource.Container.Projects.Zones.Operations.List
+
+{- $resources
+TODO
+-}
+
+-- | Represents the entirety of the methods and resources available for the Google Container Engine API service.
+type ContainerAPI =
+     ProjectsZonesOperationsListResource :<|>
+       ProjectsZonesOperationsGetResource
+       :<|> ProjectsZonesClustersListResource
+       :<|> ProjectsZonesClustersGetResource
+       :<|> ProjectsZonesClustersCreateResource
+       :<|> ProjectsZonesClustersDeleteResource
+       :<|> ProjectsZonesClustersUpdateResource
+       :<|> ProjectsZonesGetServerConfigResource
diff --git a/gen/Network/Google/Container/Types.hs b/gen/Network/Google/Container/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Container/Types.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Network.Google.Container.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.Container.Types
+    (
+    -- * Service Configuration
+      containerService
+
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
+    -- * ListOperationsResponse
+    , ListOperationsResponse
+    , listOperationsResponse
+    , lorOperations
+
+    -- * CreateClusterRequest
+    , CreateClusterRequest
+    , createClusterRequest
+    , ccrCluster
+
+    -- * Cluster
+    , Cluster
+    , cluster
+    , cStatus
+    , cNodeConfig
+    , cNodeIPv4CIdRSize
+    , cClusterIPv4CIdR
+    , cInitialNodeCount
+    , cCurrentNodeVersion
+    , cNetwork
+    , cInitialClusterVersion
+    , cZone
+    , cServicesIPv4CIdR
+    , cMasterAuth
+    , cSelfLink
+    , cName
+    , cCurrentMasterVersion
+    , cStatusMessage
+    , cEndpoint
+    , cLoggingService
+    , cDescription
+    , cInstanceGroupURLs
+    , cMonitoringService
+    , cCreateTime
+
+    -- * UpdateClusterRequest
+    , UpdateClusterRequest
+    , updateClusterRequest
+    , ucrUpdate
+
+    -- * NodeConfig
+    , NodeConfig
+    , nodeConfig
+    , ncDiskSizeGb
+    , ncOAuthScopes
+    , ncMachineType
+
+    -- * Operation
+    , Operation
+    , operation
+    , oStatus
+    , oZone
+    , oSelfLink
+    , oName
+    , oStatusMessage
+    , oOperationType
+    , oTargetLink
+
+    -- * MasterAuth
+    , MasterAuth
+    , masterAuth
+    , maClientKey
+    , maUsername
+    , maClientCertificate
+    , maPassword
+    , maClusterCaCertificate
+
+    -- * ServerConfig
+    , ServerConfig
+    , serverConfig
+    , scValidNodeVersions
+    , scDefaultClusterVersion
+
+    -- * ListClustersResponse
+    , ListClustersResponse
+    , listClustersResponse
+    , lcrClusters
+
+    -- * ClusterUpdate
+    , ClusterUpdate
+    , clusterUpdate
+    , cuDesiredNodeVersion
+    ) where
+
+import           Network.Google.Container.Types.Product
+import           Network.Google.Container.Types.Sum
+import           Network.Google.Prelude
+
+-- | Default request referring to version 'v1' of the Google Container Engine API. This contains the host and root path used as a starting point for constructing service requests.
+containerService :: Service
+containerService
+  = defaultService (ServiceId "container:v1")
+      "container.googleapis.com"
+
+-- | View and manage your data across Google Cloud Platform services
+cloudPlatformScope :: OAuthScope
+cloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform";
diff --git a/gen/Network/Google/Container/Types/Product.hs b/gen/Network/Google/Container/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Container/Types/Product.hs
@@ -0,0 +1,832 @@
+{-# 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.Container.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.Container.Types.Product where
+
+import           Network.Google.Container.Types.Sum
+import           Network.Google.Prelude
+
+-- | ListOperationsResponse is the result of ListOperationsRequest.
+--
+-- /See:/ 'listOperationsResponse' smart constructor.
+newtype ListOperationsResponse = ListOperationsResponse
+    { _lorOperations :: Maybe [Operation]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lorOperations'
+listOperationsResponse
+    :: ListOperationsResponse
+listOperationsResponse =
+    ListOperationsResponse
+    { _lorOperations = Nothing
+    }
+
+-- | A list of operations in the project in the specified zone.
+lorOperations :: Lens' ListOperationsResponse [Operation]
+lorOperations
+  = lens _lorOperations
+      (\ s a -> s{_lorOperations = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListOperationsResponse where
+        parseJSON
+          = withObject "ListOperationsResponse"
+              (\ o ->
+                 ListOperationsResponse <$>
+                   (o .:? "operations" .!= mempty))
+
+instance ToJSON ListOperationsResponse where
+        toJSON ListOperationsResponse{..}
+          = object
+              (catMaybes [("operations" .=) <$> _lorOperations])
+
+-- | CreateClusterRequest creates a cluster.
+--
+-- /See:/ 'createClusterRequest' smart constructor.
+newtype CreateClusterRequest = CreateClusterRequest
+    { _ccrCluster :: Maybe Cluster
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrCluster'
+createClusterRequest
+    :: CreateClusterRequest
+createClusterRequest =
+    CreateClusterRequest
+    { _ccrCluster = Nothing
+    }
+
+-- | A [cluster
+-- resource](\/container-engine\/reference\/rest\/v1\/projects.zones.clusters)
+ccrCluster :: Lens' CreateClusterRequest (Maybe Cluster)
+ccrCluster
+  = lens _ccrCluster (\ s a -> s{_ccrCluster = a})
+
+instance FromJSON CreateClusterRequest where
+        parseJSON
+          = withObject "CreateClusterRequest"
+              (\ o -> CreateClusterRequest <$> (o .:? "cluster"))
+
+instance ToJSON CreateClusterRequest where
+        toJSON CreateClusterRequest{..}
+          = object (catMaybes [("cluster" .=) <$> _ccrCluster])
+
+-- | A Google Container Engine cluster.
+--
+-- /See:/ 'cluster' smart constructor.
+data Cluster = Cluster
+    { _cStatus                :: !(Maybe Text)
+    , _cNodeConfig            :: !(Maybe NodeConfig)
+    , _cNodeIPv4CIdRSize      :: !(Maybe (Textual Int32))
+    , _cClusterIPv4CIdR       :: !(Maybe Text)
+    , _cInitialNodeCount      :: !(Maybe (Textual Int32))
+    , _cCurrentNodeVersion    :: !(Maybe Text)
+    , _cNetwork               :: !(Maybe Text)
+    , _cInitialClusterVersion :: !(Maybe Text)
+    , _cZone                  :: !(Maybe Text)
+    , _cServicesIPv4CIdR      :: !(Maybe Text)
+    , _cMasterAuth            :: !(Maybe MasterAuth)
+    , _cSelfLink              :: !(Maybe Text)
+    , _cName                  :: !(Maybe Text)
+    , _cCurrentMasterVersion  :: !(Maybe Text)
+    , _cStatusMessage         :: !(Maybe Text)
+    , _cEndpoint              :: !(Maybe Text)
+    , _cLoggingService        :: !(Maybe Text)
+    , _cDescription           :: !(Maybe Text)
+    , _cInstanceGroupURLs     :: !(Maybe [Text])
+    , _cMonitoringService     :: !(Maybe Text)
+    , _cCreateTime            :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Cluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cStatus'
+--
+-- * 'cNodeConfig'
+--
+-- * 'cNodeIPv4CIdRSize'
+--
+-- * 'cClusterIPv4CIdR'
+--
+-- * 'cInitialNodeCount'
+--
+-- * 'cCurrentNodeVersion'
+--
+-- * 'cNetwork'
+--
+-- * 'cInitialClusterVersion'
+--
+-- * 'cZone'
+--
+-- * 'cServicesIPv4CIdR'
+--
+-- * 'cMasterAuth'
+--
+-- * 'cSelfLink'
+--
+-- * 'cName'
+--
+-- * 'cCurrentMasterVersion'
+--
+-- * 'cStatusMessage'
+--
+-- * 'cEndpoint'
+--
+-- * 'cLoggingService'
+--
+-- * 'cDescription'
+--
+-- * 'cInstanceGroupURLs'
+--
+-- * 'cMonitoringService'
+--
+-- * 'cCreateTime'
+cluster
+    :: Cluster
+cluster =
+    Cluster
+    { _cStatus = Nothing
+    , _cNodeConfig = Nothing
+    , _cNodeIPv4CIdRSize = Nothing
+    , _cClusterIPv4CIdR = Nothing
+    , _cInitialNodeCount = Nothing
+    , _cCurrentNodeVersion = Nothing
+    , _cNetwork = Nothing
+    , _cInitialClusterVersion = Nothing
+    , _cZone = Nothing
+    , _cServicesIPv4CIdR = Nothing
+    , _cMasterAuth = Nothing
+    , _cSelfLink = Nothing
+    , _cName = Nothing
+    , _cCurrentMasterVersion = Nothing
+    , _cStatusMessage = Nothing
+    , _cEndpoint = Nothing
+    , _cLoggingService = Nothing
+    , _cDescription = Nothing
+    , _cInstanceGroupURLs = Nothing
+    , _cMonitoringService = Nothing
+    , _cCreateTime = Nothing
+    }
+
+-- | [Output only] The current status of this cluster.
+cStatus :: Lens' Cluster (Maybe Text)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
+
+-- | Parameters used in creating the cluster\'s nodes. See the descriptions
+-- of the child properties of \`nodeConfig\`. If unspecified, the defaults
+-- for all child properties are used.
+cNodeConfig :: Lens' Cluster (Maybe NodeConfig)
+cNodeConfig
+  = lens _cNodeConfig (\ s a -> s{_cNodeConfig = a})
+
+-- | [Output only] The size of the address space on each node for hosting
+-- containers. This is provisioned from within the container_ipv4_cidr
+-- range.
+cNodeIPv4CIdRSize :: Lens' Cluster (Maybe Int32)
+cNodeIPv4CIdRSize
+  = lens _cNodeIPv4CIdRSize
+      (\ s a -> s{_cNodeIPv4CIdRSize = a})
+      . mapping _Coerce
+
+-- | The IP address range of the container pods in this cluster, in
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`). Leave blank to have one automatically
+-- chosen or specify a \`\/14\` block in \`10.0.0.0\/8\`.
+cClusterIPv4CIdR :: Lens' Cluster (Maybe Text)
+cClusterIPv4CIdR
+  = lens _cClusterIPv4CIdR
+      (\ s a -> s{_cClusterIPv4CIdR = a})
+
+-- | The number of nodes to create in this cluster. You must ensure that your
+-- Compute Engine [resource quota](\/compute\/docs\/resource-quotas) is
+-- sufficient for this number of instances. You must also have available
+-- firewall and routes quota.
+cInitialNodeCount :: Lens' Cluster (Maybe Int32)
+cInitialNodeCount
+  = lens _cInitialNodeCount
+      (\ s a -> s{_cInitialNodeCount = a})
+      . mapping _Coerce
+
+-- | [Output only] The current version of the node software components. If
+-- they are currently at different versions because they\'re in the process
+-- of being upgraded, this reflects the minimum version of any of them.
+cCurrentNodeVersion :: Lens' Cluster (Maybe Text)
+cCurrentNodeVersion
+  = lens _cCurrentNodeVersion
+      (\ s a -> s{_cCurrentNodeVersion = a})
+
+-- | The name of the Google Compute Engine
+-- [network](\/compute\/docs\/networking#networks_1) to which the cluster
+-- is connected. If left unspecified, the \"default\" network will be used.
+cNetwork :: Lens' Cluster (Maybe Text)
+cNetwork = lens _cNetwork (\ s a -> s{_cNetwork = a})
+
+-- | [Output only] The software version of Kubernetes master and kubelets
+-- used in the cluster when it was first created. The version can be
+-- upgraded over time.
+cInitialClusterVersion :: Lens' Cluster (Maybe Text)
+cInitialClusterVersion
+  = lens _cInitialClusterVersion
+      (\ s a -> s{_cInitialClusterVersion = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+cZone :: Lens' Cluster (Maybe Text)
+cZone = lens _cZone (\ s a -> s{_cZone = a})
+
+-- | [Output only] The IP address range of the Kubernetes services in this
+-- cluster, in
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`1.2.3.4\/29\`). Service addresses are typically put in
+-- the last \/16 from the container CIDR.
+cServicesIPv4CIdR :: Lens' Cluster (Maybe Text)
+cServicesIPv4CIdR
+  = lens _cServicesIPv4CIdR
+      (\ s a -> s{_cServicesIPv4CIdR = a})
+
+-- | The authentication information for accessing the master.
+cMasterAuth :: Lens' Cluster (Maybe MasterAuth)
+cMasterAuth
+  = lens _cMasterAuth (\ s a -> s{_cMasterAuth = a})
+
+-- | [Output only] Server-defined URL for the resource.
+cSelfLink :: Lens' Cluster (Maybe Text)
+cSelfLink
+  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
+
+-- | The name of this cluster. The name must be unique within this project
+-- and zone, and can be up to 40 characters with the following
+-- restrictions: * Lowercase letters, numbers, and hyphens only. * Must
+-- start with a letter. * Must end with a number or a letter.
+cName :: Lens' Cluster (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | [Output only] The current software version of the master endpoint.
+cCurrentMasterVersion :: Lens' Cluster (Maybe Text)
+cCurrentMasterVersion
+  = lens _cCurrentMasterVersion
+      (\ s a -> s{_cCurrentMasterVersion = a})
+
+-- | [Output only] Additional information about the current status of this
+-- cluster, if available.
+cStatusMessage :: Lens' Cluster (Maybe Text)
+cStatusMessage
+  = lens _cStatusMessage
+      (\ s a -> s{_cStatusMessage = a})
+
+-- | [Output only] The IP address of this cluster\'s Kubernetes master
+-- endpoint. The endpoint can be accessed from the internet at
+-- \`https:\/\/username:password\'endpoint\/\`. See the \`masterAuth\`
+-- property of this resource for username and password information.
+cEndpoint :: Lens' Cluster (Maybe Text)
+cEndpoint
+  = lens _cEndpoint (\ s a -> s{_cEndpoint = a})
+
+-- | The logging service that the cluster should write logs to. Currently
+-- available options: * \"logging.googleapis.com\" - the Google Cloud
+-- Logging service * \"none\" - no logs will be exported from the cluster *
+-- \"\" - default value; the default is \"logging.googleapis.com\"
+cLoggingService :: Lens' Cluster (Maybe Text)
+cLoggingService
+  = lens _cLoggingService
+      (\ s a -> s{_cLoggingService = a})
+
+-- | An optional description of this cluster.
+cDescription :: Lens' Cluster (Maybe Text)
+cDescription
+  = lens _cDescription (\ s a -> s{_cDescription = a})
+
+-- | [Output only] The resource URLs of [instance
+-- groups](\/compute\/docs\/instance-groups\/) associated with this
+-- cluster.
+cInstanceGroupURLs :: Lens' Cluster [Text]
+cInstanceGroupURLs
+  = lens _cInstanceGroupURLs
+      (\ s a -> s{_cInstanceGroupURLs = a})
+      . _Default
+      . _Coerce
+
+-- | The monitoring service that the cluster should write metrics to.
+-- Currently available options: * \"monitoring.googleapis.com\" - the
+-- Google Cloud Monitoring service * \"none\" - no metrics will be exported
+-- from the cluster * \"\" - default value; the default is
+-- \"monitoring.googleapis.com\"
+cMonitoringService :: Lens' Cluster (Maybe Text)
+cMonitoringService
+  = lens _cMonitoringService
+      (\ s a -> s{_cMonitoringService = a})
+
+-- | [Output only] The time the cluster was created, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+cCreateTime :: Lens' Cluster (Maybe Text)
+cCreateTime
+  = lens _cCreateTime (\ s a -> s{_cCreateTime = a})
+
+instance FromJSON Cluster where
+        parseJSON
+          = withObject "Cluster"
+              (\ o ->
+                 Cluster <$>
+                   (o .:? "status") <*> (o .:? "nodeConfig") <*>
+                     (o .:? "nodeIpv4CidrSize")
+                     <*> (o .:? "clusterIpv4Cidr")
+                     <*> (o .:? "initialNodeCount")
+                     <*> (o .:? "currentNodeVersion")
+                     <*> (o .:? "network")
+                     <*> (o .:? "initialClusterVersion")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "servicesIpv4Cidr")
+                     <*> (o .:? "masterAuth")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "currentMasterVersion")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "endpoint")
+                     <*> (o .:? "loggingService")
+                     <*> (o .:? "description")
+                     <*> (o .:? "instanceGroupUrls" .!= mempty)
+                     <*> (o .:? "monitoringService")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON Cluster where
+        toJSON Cluster{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _cStatus,
+                  ("nodeConfig" .=) <$> _cNodeConfig,
+                  ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
+                  ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
+                  ("initialNodeCount" .=) <$> _cInitialNodeCount,
+                  ("currentNodeVersion" .=) <$> _cCurrentNodeVersion,
+                  ("network" .=) <$> _cNetwork,
+                  ("initialClusterVersion" .=) <$>
+                    _cInitialClusterVersion,
+                  ("zone" .=) <$> _cZone,
+                  ("servicesIpv4Cidr" .=) <$> _cServicesIPv4CIdR,
+                  ("masterAuth" .=) <$> _cMasterAuth,
+                  ("selfLink" .=) <$> _cSelfLink,
+                  ("name" .=) <$> _cName,
+                  ("currentMasterVersion" .=) <$>
+                    _cCurrentMasterVersion,
+                  ("statusMessage" .=) <$> _cStatusMessage,
+                  ("endpoint" .=) <$> _cEndpoint,
+                  ("loggingService" .=) <$> _cLoggingService,
+                  ("description" .=) <$> _cDescription,
+                  ("instanceGroupUrls" .=) <$> _cInstanceGroupURLs,
+                  ("monitoringService" .=) <$> _cMonitoringService,
+                  ("createTime" .=) <$> _cCreateTime])
+
+-- | UpdateClusterRequest updates a cluster.
+--
+-- /See:/ 'updateClusterRequest' smart constructor.
+newtype UpdateClusterRequest = UpdateClusterRequest
+    { _ucrUpdate :: Maybe ClusterUpdate
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucrUpdate'
+updateClusterRequest
+    :: UpdateClusterRequest
+updateClusterRequest =
+    UpdateClusterRequest
+    { _ucrUpdate = Nothing
+    }
+
+-- | A description of the update.
+ucrUpdate :: Lens' UpdateClusterRequest (Maybe ClusterUpdate)
+ucrUpdate
+  = lens _ucrUpdate (\ s a -> s{_ucrUpdate = a})
+
+instance FromJSON UpdateClusterRequest where
+        parseJSON
+          = withObject "UpdateClusterRequest"
+              (\ o -> UpdateClusterRequest <$> (o .:? "update"))
+
+instance ToJSON UpdateClusterRequest where
+        toJSON UpdateClusterRequest{..}
+          = object (catMaybes [("update" .=) <$> _ucrUpdate])
+
+-- | Per-node parameters.
+--
+-- /See:/ 'nodeConfig' smart constructor.
+data NodeConfig = NodeConfig
+    { _ncDiskSizeGb  :: !(Maybe (Textual Int32))
+    , _ncOAuthScopes :: !(Maybe [Text])
+    , _ncMachineType :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncDiskSizeGb'
+--
+-- * 'ncOAuthScopes'
+--
+-- * 'ncMachineType'
+nodeConfig
+    :: NodeConfig
+nodeConfig =
+    NodeConfig
+    { _ncDiskSizeGb = Nothing
+    , _ncOAuthScopes = Nothing
+    , _ncMachineType = Nothing
+    }
+
+-- | Size of the disk attached to each node, specified in GB. The smallest
+-- allowed disk size is 10GB. If unspecified, the default disk size is
+-- 100GB.
+ncDiskSizeGb :: Lens' NodeConfig (Maybe Int32)
+ncDiskSizeGb
+  = lens _ncDiskSizeGb (\ s a -> s{_ncDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | The set of Google API scopes to be made available on all of the node VMs
+-- under the \"default\" service account. The following scopes are
+-- recommended, but not required, and by default are not included: *
+-- \`https:\/\/www.googleapis.com\/auth\/compute\` is required for mounting
+-- persistent storage on your nodes. *
+-- \`https:\/\/www.googleapis.com\/auth\/devstorage.read_only\` is required
+-- for communicating with *gcr.io*. If unspecified, no scopes are added.
+ncOAuthScopes :: Lens' NodeConfig [Text]
+ncOAuthScopes
+  = lens _ncOAuthScopes
+      (\ s a -> s{_ncOAuthScopes = a})
+      . _Default
+      . _Coerce
+
+-- | The name of a Google Compute Engine [machine
+-- type](\/compute\/docs\/machine-types) (e.g. \`n1-standard-1\`). If
+-- unspecified, the default machine type is \`n1-standard-1\`.
+ncMachineType :: Lens' NodeConfig (Maybe Text)
+ncMachineType
+  = lens _ncMachineType
+      (\ s a -> s{_ncMachineType = a})
+
+instance FromJSON NodeConfig where
+        parseJSON
+          = withObject "NodeConfig"
+              (\ o ->
+                 NodeConfig <$>
+                   (o .:? "diskSizeGb") <*>
+                     (o .:? "oauthScopes" .!= mempty)
+                     <*> (o .:? "machineType"))
+
+instance ToJSON NodeConfig where
+        toJSON NodeConfig{..}
+          = object
+              (catMaybes
+                 [("diskSizeGb" .=) <$> _ncDiskSizeGb,
+                  ("oauthScopes" .=) <$> _ncOAuthScopes,
+                  ("machineType" .=) <$> _ncMachineType])
+
+-- | Defines the operation resource. All fields are output only.
+--
+-- /See:/ 'operation' smart constructor.
+data Operation = Operation
+    { _oStatus        :: !(Maybe Text)
+    , _oZone          :: !(Maybe Text)
+    , _oSelfLink      :: !(Maybe Text)
+    , _oName          :: !(Maybe Text)
+    , _oStatusMessage :: !(Maybe Text)
+    , _oOperationType :: !(Maybe Text)
+    , _oTargetLink    :: !(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:
+--
+-- * 'oStatus'
+--
+-- * 'oZone'
+--
+-- * 'oSelfLink'
+--
+-- * 'oName'
+--
+-- * 'oStatusMessage'
+--
+-- * 'oOperationType'
+--
+-- * 'oTargetLink'
+operation
+    :: Operation
+operation =
+    Operation
+    { _oStatus = Nothing
+    , _oZone = Nothing
+    , _oSelfLink = Nothing
+    , _oName = Nothing
+    , _oStatusMessage = Nothing
+    , _oOperationType = Nothing
+    , _oTargetLink = Nothing
+    }
+
+-- | The current status of the operation.
+oStatus :: Lens' Operation (Maybe Text)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the operation is
+-- taking place.
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+-- | Server-defined URL for the resource.
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+-- | The server-assigned ID for the operation.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | If an error has occurred, a textual description of the error.
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+-- | The operation type.
+oOperationType :: Lens' Operation (Maybe Text)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+-- | Server-defined URL for the target of the operation.
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+instance FromJSON Operation where
+        parseJSON
+          = withObject "Operation"
+              (\ o ->
+                 Operation <$>
+                   (o .:? "status") <*> (o .:? "zone") <*>
+                     (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "targetLink"))
+
+instance ToJSON Operation where
+        toJSON Operation{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _oStatus, ("zone" .=) <$> _oZone,
+                  ("selfLink" .=) <$> _oSelfLink,
+                  ("name" .=) <$> _oName,
+                  ("statusMessage" .=) <$> _oStatusMessage,
+                  ("operationType" .=) <$> _oOperationType,
+                  ("targetLink" .=) <$> _oTargetLink])
+
+-- | The authentication information for accessing the master endpoint.
+-- Authentication can be done using HTTP basic auth or using client
+-- certificates.
+--
+-- /See:/ 'masterAuth' smart constructor.
+data MasterAuth = MasterAuth
+    { _maClientKey            :: !(Maybe Text)
+    , _maUsername             :: !(Maybe Text)
+    , _maClientCertificate    :: !(Maybe Text)
+    , _maPassword             :: !(Maybe Text)
+    , _maClusterCaCertificate :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MasterAuth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'maClientKey'
+--
+-- * 'maUsername'
+--
+-- * 'maClientCertificate'
+--
+-- * 'maPassword'
+--
+-- * 'maClusterCaCertificate'
+masterAuth
+    :: MasterAuth
+masterAuth =
+    MasterAuth
+    { _maClientKey = Nothing
+    , _maUsername = Nothing
+    , _maClientCertificate = Nothing
+    , _maPassword = Nothing
+    , _maClusterCaCertificate = Nothing
+    }
+
+-- | [Output only] Base64 encoded private key used by clients to authenticate
+-- to the cluster endpoint.
+maClientKey :: Lens' MasterAuth (Maybe Text)
+maClientKey
+  = lens _maClientKey (\ s a -> s{_maClientKey = a})
+
+-- | The username to use for HTTP basic authentication when accessing the
+-- Kubernetes master endpoint.
+maUsername :: Lens' MasterAuth (Maybe Text)
+maUsername
+  = lens _maUsername (\ s a -> s{_maUsername = a})
+
+-- | [Output only] Base64 encoded public certificate used by clients to
+-- authenticate to the cluster endpoint.
+maClientCertificate :: Lens' MasterAuth (Maybe Text)
+maClientCertificate
+  = lens _maClientCertificate
+      (\ s a -> s{_maClientCertificate = a})
+
+-- | The password to use for HTTP basic authentication when accessing the
+-- Kubernetes master endpoint. Because the master endpoint is open to the
+-- internet, you should create a strong password.
+maPassword :: Lens' MasterAuth (Maybe Text)
+maPassword
+  = lens _maPassword (\ s a -> s{_maPassword = a})
+
+-- | [Output only] Base64 encoded public certificate that is the root of
+-- trust for the cluster.
+maClusterCaCertificate :: Lens' MasterAuth (Maybe Text)
+maClusterCaCertificate
+  = lens _maClusterCaCertificate
+      (\ s a -> s{_maClusterCaCertificate = a})
+
+instance FromJSON MasterAuth where
+        parseJSON
+          = withObject "MasterAuth"
+              (\ o ->
+                 MasterAuth <$>
+                   (o .:? "clientKey") <*> (o .:? "username") <*>
+                     (o .:? "clientCertificate")
+                     <*> (o .:? "password")
+                     <*> (o .:? "clusterCaCertificate"))
+
+instance ToJSON MasterAuth where
+        toJSON MasterAuth{..}
+          = object
+              (catMaybes
+                 [("clientKey" .=) <$> _maClientKey,
+                  ("username" .=) <$> _maUsername,
+                  ("clientCertificate" .=) <$> _maClientCertificate,
+                  ("password" .=) <$> _maPassword,
+                  ("clusterCaCertificate" .=) <$>
+                    _maClusterCaCertificate])
+
+-- | Container Engine Server configuration.
+--
+-- /See:/ 'serverConfig' smart constructor.
+data ServerConfig = ServerConfig
+    { _scValidNodeVersions     :: !(Maybe [Text])
+    , _scDefaultClusterVersion :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServerConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scValidNodeVersions'
+--
+-- * 'scDefaultClusterVersion'
+serverConfig
+    :: ServerConfig
+serverConfig =
+    ServerConfig
+    { _scValidNodeVersions = Nothing
+    , _scDefaultClusterVersion = Nothing
+    }
+
+-- | List of valid node upgrade target versions.
+scValidNodeVersions :: Lens' ServerConfig [Text]
+scValidNodeVersions
+  = lens _scValidNodeVersions
+      (\ s a -> s{_scValidNodeVersions = a})
+      . _Default
+      . _Coerce
+
+-- | What version this server deploys by default.
+scDefaultClusterVersion :: Lens' ServerConfig (Maybe Text)
+scDefaultClusterVersion
+  = lens _scDefaultClusterVersion
+      (\ s a -> s{_scDefaultClusterVersion = a})
+
+instance FromJSON ServerConfig where
+        parseJSON
+          = withObject "ServerConfig"
+              (\ o ->
+                 ServerConfig <$>
+                   (o .:? "validNodeVersions" .!= mempty) <*>
+                     (o .:? "defaultClusterVersion"))
+
+instance ToJSON ServerConfig where
+        toJSON ServerConfig{..}
+          = object
+              (catMaybes
+                 [("validNodeVersions" .=) <$> _scValidNodeVersions,
+                  ("defaultClusterVersion" .=) <$>
+                    _scDefaultClusterVersion])
+
+-- | ListClustersResponse is the result of ListClustersRequest.
+--
+-- /See:/ 'listClustersResponse' smart constructor.
+newtype ListClustersResponse = ListClustersResponse
+    { _lcrClusters :: Maybe [Cluster]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcrClusters'
+listClustersResponse
+    :: ListClustersResponse
+listClustersResponse =
+    ListClustersResponse
+    { _lcrClusters = Nothing
+    }
+
+-- | A list of clusters in the project in the specified zone, or across all
+-- ones.
+lcrClusters :: Lens' ListClustersResponse [Cluster]
+lcrClusters
+  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ListClustersResponse where
+        parseJSON
+          = withObject "ListClustersResponse"
+              (\ o ->
+                 ListClustersResponse <$>
+                   (o .:? "clusters" .!= mempty))
+
+instance ToJSON ListClustersResponse where
+        toJSON ListClustersResponse{..}
+          = object
+              (catMaybes [("clusters" .=) <$> _lcrClusters])
+
+-- | ClusterUpdate describes an update to the cluster.
+--
+-- /See:/ 'clusterUpdate' smart constructor.
+newtype ClusterUpdate = ClusterUpdate
+    { _cuDesiredNodeVersion :: Maybe Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClusterUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cuDesiredNodeVersion'
+clusterUpdate
+    :: ClusterUpdate
+clusterUpdate =
+    ClusterUpdate
+    { _cuDesiredNodeVersion = Nothing
+    }
+
+-- | The Kubernetes version to change the nodes to (typically an upgrade).
+-- Use \"-\" to upgrade to the latest version supported by the server.
+cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredNodeVersion
+  = lens _cuDesiredNodeVersion
+      (\ s a -> s{_cuDesiredNodeVersion = a})
+
+instance FromJSON ClusterUpdate where
+        parseJSON
+          = withObject "ClusterUpdate"
+              (\ o ->
+                 ClusterUpdate <$> (o .:? "desiredNodeVersion"))
+
+instance ToJSON ClusterUpdate where
+        toJSON ClusterUpdate{..}
+          = object
+              (catMaybes
+                 [("desiredNodeVersion" .=) <$>
+                    _cuDesiredNodeVersion])
diff --git a/gen/Network/Google/Container/Types/Sum.hs b/gen/Network/Google/Container/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Container/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.Container.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.Container.Types.Sum where
+
+import           Network.Google.Prelude
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
@@ -0,0 +1,217 @@
+{-# 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.Container.Projects.Zones.Clusters.Create
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a cluster, consisting of the specified number and type of Google
+-- Compute Engine instances, plus a Kubernetes master endpoint. By default,
+-- the cluster is created in the project\'s [default
+-- network](\/compute\/docs\/networking#networks_1). One firewall is added
+-- for the cluster. After cluster creation, the cluster creates routes for
+-- each node to allow the containers on that node to communicate with all
+-- other instances in the cluster. Finally, an entry is added to the
+-- project\'s global metadata indicating which CIDR range is being used by
+-- the cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.create@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Create
+    (
+    -- * REST Resource
+      ProjectsZonesClustersCreateResource
+
+    -- * Creating a Request
+    , projectsZonesClustersCreate
+    , ProjectsZonesClustersCreate
+
+    -- * Request Lenses
+    , pzccXgafv
+    , pzccUploadProtocol
+    , pzccPp
+    , pzccAccessToken
+    , pzccUploadType
+    , pzccZone
+    , pzccPayload
+    , pzccBearerToken
+    , pzccProjectId
+    , pzccCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.create@ method which the
+-- 'ProjectsZonesClustersCreate' request conforms to.
+type ProjectsZonesClustersCreateResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 QueryParam "$.xgafv" Text :>
+                   QueryParam "upload_protocol" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] CreateClusterRequest :>
+                                   Post '[JSON] Operation
+
+-- | Creates a cluster, consisting of the specified number and type of Google
+-- Compute Engine instances, plus a Kubernetes master endpoint. By default,
+-- the cluster is created in the project\'s [default
+-- network](\/compute\/docs\/networking#networks_1). One firewall is added
+-- for the cluster. After cluster creation, the cluster creates routes for
+-- each node to allow the containers on that node to communicate with all
+-- other instances in the cluster. Finally, an entry is added to the
+-- project\'s global metadata indicating which CIDR range is being used by
+-- the cluster.
+--
+-- /See:/ 'projectsZonesClustersCreate' smart constructor.
+data ProjectsZonesClustersCreate = ProjectsZonesClustersCreate
+    { _pzccXgafv          :: !(Maybe Text)
+    , _pzccUploadProtocol :: !(Maybe Text)
+    , _pzccPp             :: !Bool
+    , _pzccAccessToken    :: !(Maybe Text)
+    , _pzccUploadType     :: !(Maybe Text)
+    , _pzccZone           :: !Text
+    , _pzccPayload        :: !CreateClusterRequest
+    , _pzccBearerToken    :: !(Maybe Text)
+    , _pzccProjectId      :: !Text
+    , _pzccCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzccXgafv'
+--
+-- * 'pzccUploadProtocol'
+--
+-- * 'pzccPp'
+--
+-- * 'pzccAccessToken'
+--
+-- * 'pzccUploadType'
+--
+-- * 'pzccZone'
+--
+-- * 'pzccPayload'
+--
+-- * 'pzccBearerToken'
+--
+-- * 'pzccProjectId'
+--
+-- * 'pzccCallback'
+projectsZonesClustersCreate
+    :: Text -- ^ 'pzccZone'
+    -> CreateClusterRequest -- ^ 'pzccPayload'
+    -> Text -- ^ 'pzccProjectId'
+    -> ProjectsZonesClustersCreate
+projectsZonesClustersCreate pPzccZone_ pPzccPayload_ pPzccProjectId_ =
+    ProjectsZonesClustersCreate
+    { _pzccXgafv = Nothing
+    , _pzccUploadProtocol = Nothing
+    , _pzccPp = True
+    , _pzccAccessToken = Nothing
+    , _pzccUploadType = Nothing
+    , _pzccZone = pPzccZone_
+    , _pzccPayload = pPzccPayload_
+    , _pzccBearerToken = Nothing
+    , _pzccProjectId = pPzccProjectId_
+    , _pzccCallback = Nothing
+    }
+
+-- | V1 error format.
+pzccXgafv :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccXgafv
+  = lens _pzccXgafv (\ s a -> s{_pzccXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzccUploadProtocol :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccUploadProtocol
+  = lens _pzccUploadProtocol
+      (\ s a -> s{_pzccUploadProtocol = a})
+
+-- | Pretty-print response.
+pzccPp :: Lens' ProjectsZonesClustersCreate Bool
+pzccPp = lens _pzccPp (\ s a -> s{_pzccPp = a})
+
+-- | OAuth access token.
+pzccAccessToken :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccAccessToken
+  = lens _pzccAccessToken
+      (\ s a -> s{_pzccAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzccUploadType :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccUploadType
+  = lens _pzccUploadType
+      (\ s a -> s{_pzccUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzccZone :: Lens' ProjectsZonesClustersCreate Text
+pzccZone = lens _pzccZone (\ s a -> s{_pzccZone = a})
+
+-- | Multipart request metadata.
+pzccPayload :: Lens' ProjectsZonesClustersCreate CreateClusterRequest
+pzccPayload
+  = lens _pzccPayload (\ s a -> s{_pzccPayload = a})
+
+-- | OAuth bearer token.
+pzccBearerToken :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccBearerToken
+  = lens _pzccBearerToken
+      (\ s a -> s{_pzccBearerToken = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzccProjectId :: Lens' ProjectsZonesClustersCreate Text
+pzccProjectId
+  = lens _pzccProjectId
+      (\ s a -> s{_pzccProjectId = a})
+
+-- | JSONP
+pzccCallback :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccCallback
+  = lens _pzccCallback (\ s a -> s{_pzccCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersCreate
+         where
+        type Rs ProjectsZonesClustersCreate = Operation
+        requestClient ProjectsZonesClustersCreate{..}
+          = go _pzccProjectId _pzccZone _pzccXgafv
+              _pzccUploadProtocol
+              (Just _pzccPp)
+              _pzccAccessToken
+              _pzccUploadType
+              _pzccBearerToken
+              _pzccCallback
+              (Just AltJSON)
+              _pzccPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
@@ -0,0 +1,206 @@
+{-# 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.Container.Projects.Zones.Clusters.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 cluster, including the Kubernetes endpoint and all worker
+-- nodes. Firewalls and routes that were configured during cluster creation
+-- are also deleted.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.delete@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
+    (
+    -- * REST Resource
+      ProjectsZonesClustersDeleteResource
+
+    -- * Creating a Request
+    , projectsZonesClustersDelete
+    , ProjectsZonesClustersDelete
+
+    -- * Request Lenses
+    , pzcdXgafv
+    , pzcdUploadProtocol
+    , pzcdPp
+    , pzcdAccessToken
+    , pzcdUploadType
+    , pzcdZone
+    , pzcdBearerToken
+    , pzcdClusterId
+    , pzcdProjectId
+    , pzcdCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.delete@ method which the
+-- 'ProjectsZonesClustersDelete' request conforms to.
+type ProjectsZonesClustersDeleteResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "pp" Bool :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "bearer_token" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   Delete '[JSON] Operation
+
+-- | Deletes the cluster, including the Kubernetes endpoint and all worker
+-- nodes. Firewalls and routes that were configured during cluster creation
+-- are also deleted.
+--
+-- /See:/ 'projectsZonesClustersDelete' smart constructor.
+data ProjectsZonesClustersDelete = ProjectsZonesClustersDelete
+    { _pzcdXgafv          :: !(Maybe Text)
+    , _pzcdUploadProtocol :: !(Maybe Text)
+    , _pzcdPp             :: !Bool
+    , _pzcdAccessToken    :: !(Maybe Text)
+    , _pzcdUploadType     :: !(Maybe Text)
+    , _pzcdZone           :: !Text
+    , _pzcdBearerToken    :: !(Maybe Text)
+    , _pzcdClusterId      :: !Text
+    , _pzcdProjectId      :: !Text
+    , _pzcdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcdXgafv'
+--
+-- * 'pzcdUploadProtocol'
+--
+-- * 'pzcdPp'
+--
+-- * 'pzcdAccessToken'
+--
+-- * 'pzcdUploadType'
+--
+-- * 'pzcdZone'
+--
+-- * 'pzcdBearerToken'
+--
+-- * 'pzcdClusterId'
+--
+-- * 'pzcdProjectId'
+--
+-- * 'pzcdCallback'
+projectsZonesClustersDelete
+    :: Text -- ^ 'pzcdZone'
+    -> Text -- ^ 'pzcdClusterId'
+    -> Text -- ^ 'pzcdProjectId'
+    -> ProjectsZonesClustersDelete
+projectsZonesClustersDelete pPzcdZone_ pPzcdClusterId_ pPzcdProjectId_ =
+    ProjectsZonesClustersDelete
+    { _pzcdXgafv = Nothing
+    , _pzcdUploadProtocol = Nothing
+    , _pzcdPp = True
+    , _pzcdAccessToken = Nothing
+    , _pzcdUploadType = Nothing
+    , _pzcdZone = pPzcdZone_
+    , _pzcdBearerToken = Nothing
+    , _pzcdClusterId = pPzcdClusterId_
+    , _pzcdProjectId = pPzcdProjectId_
+    , _pzcdCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcdXgafv :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdXgafv
+  = lens _pzcdXgafv (\ s a -> s{_pzcdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcdUploadProtocol :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdUploadProtocol
+  = lens _pzcdUploadProtocol
+      (\ s a -> s{_pzcdUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcdPp :: Lens' ProjectsZonesClustersDelete Bool
+pzcdPp = lens _pzcdPp (\ s a -> s{_pzcdPp = a})
+
+-- | OAuth access token.
+pzcdAccessToken :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdAccessToken
+  = lens _pzcdAccessToken
+      (\ s a -> s{_pzcdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcdUploadType :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdUploadType
+  = lens _pzcdUploadType
+      (\ s a -> s{_pzcdUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcdZone :: Lens' ProjectsZonesClustersDelete Text
+pzcdZone = lens _pzcdZone (\ s a -> s{_pzcdZone = a})
+
+-- | OAuth bearer token.
+pzcdBearerToken :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdBearerToken
+  = lens _pzcdBearerToken
+      (\ s a -> s{_pzcdBearerToken = a})
+
+-- | The name of the cluster to delete.
+pzcdClusterId :: Lens' ProjectsZonesClustersDelete Text
+pzcdClusterId
+  = lens _pzcdClusterId
+      (\ s a -> s{_pzcdClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcdProjectId :: Lens' ProjectsZonesClustersDelete Text
+pzcdProjectId
+  = lens _pzcdProjectId
+      (\ s a -> s{_pzcdProjectId = a})
+
+-- | JSONP
+pzcdCallback :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdCallback
+  = lens _pzcdCallback (\ s a -> s{_pzcdCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersDelete
+         where
+        type Rs ProjectsZonesClustersDelete = Operation
+        requestClient ProjectsZonesClustersDelete{..}
+          = go _pzcdProjectId _pzcdZone _pzcdClusterId
+              _pzcdXgafv
+              _pzcdUploadProtocol
+              (Just _pzcdPp)
+              _pzcdAccessToken
+              _pzcdUploadType
+              _pzcdBearerToken
+              _pzcdCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
@@ -0,0 +1,200 @@
+{-# 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.Container.Projects.Zones.Clusters.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 a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.get@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Get
+    (
+    -- * REST Resource
+      ProjectsZonesClustersGetResource
+
+    -- * Creating a Request
+    , projectsZonesClustersGet
+    , ProjectsZonesClustersGet
+
+    -- * Request Lenses
+    , pzcgXgafv
+    , pzcgUploadProtocol
+    , pzcgPp
+    , pzcgAccessToken
+    , pzcgUploadType
+    , pzcgZone
+    , pzcgBearerToken
+    , pzcgClusterId
+    , pzcgProjectId
+    , pzcgCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.get@ method which the
+-- 'ProjectsZonesClustersGet' request conforms to.
+type ProjectsZonesClustersGetResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "pp" Bool :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "bearer_token" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :> Get '[JSON] Cluster
+
+-- | Gets a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersGet' smart constructor.
+data ProjectsZonesClustersGet = ProjectsZonesClustersGet
+    { _pzcgXgafv          :: !(Maybe Text)
+    , _pzcgUploadProtocol :: !(Maybe Text)
+    , _pzcgPp             :: !Bool
+    , _pzcgAccessToken    :: !(Maybe Text)
+    , _pzcgUploadType     :: !(Maybe Text)
+    , _pzcgZone           :: !Text
+    , _pzcgBearerToken    :: !(Maybe Text)
+    , _pzcgClusterId      :: !Text
+    , _pzcgProjectId      :: !Text
+    , _pzcgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcgXgafv'
+--
+-- * 'pzcgUploadProtocol'
+--
+-- * 'pzcgPp'
+--
+-- * 'pzcgAccessToken'
+--
+-- * 'pzcgUploadType'
+--
+-- * 'pzcgZone'
+--
+-- * 'pzcgBearerToken'
+--
+-- * 'pzcgClusterId'
+--
+-- * 'pzcgProjectId'
+--
+-- * 'pzcgCallback'
+projectsZonesClustersGet
+    :: Text -- ^ 'pzcgZone'
+    -> Text -- ^ 'pzcgClusterId'
+    -> Text -- ^ 'pzcgProjectId'
+    -> ProjectsZonesClustersGet
+projectsZonesClustersGet pPzcgZone_ pPzcgClusterId_ pPzcgProjectId_ =
+    ProjectsZonesClustersGet
+    { _pzcgXgafv = Nothing
+    , _pzcgUploadProtocol = Nothing
+    , _pzcgPp = True
+    , _pzcgAccessToken = Nothing
+    , _pzcgUploadType = Nothing
+    , _pzcgZone = pPzcgZone_
+    , _pzcgBearerToken = Nothing
+    , _pzcgClusterId = pPzcgClusterId_
+    , _pzcgProjectId = pPzcgProjectId_
+    , _pzcgCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcgXgafv :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgXgafv
+  = lens _pzcgXgafv (\ s a -> s{_pzcgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcgUploadProtocol :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgUploadProtocol
+  = lens _pzcgUploadProtocol
+      (\ s a -> s{_pzcgUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcgPp :: Lens' ProjectsZonesClustersGet Bool
+pzcgPp = lens _pzcgPp (\ s a -> s{_pzcgPp = a})
+
+-- | OAuth access token.
+pzcgAccessToken :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgAccessToken
+  = lens _pzcgAccessToken
+      (\ s a -> s{_pzcgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcgUploadType :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgUploadType
+  = lens _pzcgUploadType
+      (\ s a -> s{_pzcgUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcgZone :: Lens' ProjectsZonesClustersGet Text
+pzcgZone = lens _pzcgZone (\ s a -> s{_pzcgZone = a})
+
+-- | OAuth bearer token.
+pzcgBearerToken :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgBearerToken
+  = lens _pzcgBearerToken
+      (\ s a -> s{_pzcgBearerToken = a})
+
+-- | The name of the cluster to retrieve.
+pzcgClusterId :: Lens' ProjectsZonesClustersGet Text
+pzcgClusterId
+  = lens _pzcgClusterId
+      (\ s a -> s{_pzcgClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcgProjectId :: Lens' ProjectsZonesClustersGet Text
+pzcgProjectId
+  = lens _pzcgProjectId
+      (\ s a -> s{_pzcgProjectId = a})
+
+-- | JSONP
+pzcgCallback :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgCallback
+  = lens _pzcgCallback (\ s a -> s{_pzcgCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersGet where
+        type Rs ProjectsZonesClustersGet = Cluster
+        requestClient ProjectsZonesClustersGet{..}
+          = go _pzcgProjectId _pzcgZone _pzcgClusterId
+              _pzcgXgafv
+              _pzcgUploadProtocol
+              (Just _pzcgPp)
+              _pzcgAccessToken
+              _pzcgUploadType
+              _pzcgBearerToken
+              _pzcgCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.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 clusters owned by a project in either the specified zone or
+-- all zones.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.list@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.List
+    (
+    -- * REST Resource
+      ProjectsZonesClustersListResource
+
+    -- * Creating a Request
+    , projectsZonesClustersList
+    , ProjectsZonesClustersList
+
+    -- * Request Lenses
+    , pzclXgafv
+    , pzclUploadProtocol
+    , pzclPp
+    , pzclAccessToken
+    , pzclUploadType
+    , pzclZone
+    , pzclBearerToken
+    , pzclProjectId
+    , pzclCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.list@ method which the
+-- 'ProjectsZonesClustersList' request conforms to.
+type ProjectsZonesClustersListResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 QueryParam "$.xgafv" Text :>
+                   QueryParam "upload_protocol" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 Get '[JSON] ListClustersResponse
+
+-- | Lists all clusters owned by a project in either the specified zone or
+-- all zones.
+--
+-- /See:/ 'projectsZonesClustersList' smart constructor.
+data ProjectsZonesClustersList = ProjectsZonesClustersList
+    { _pzclXgafv          :: !(Maybe Text)
+    , _pzclUploadProtocol :: !(Maybe Text)
+    , _pzclPp             :: !Bool
+    , _pzclAccessToken    :: !(Maybe Text)
+    , _pzclUploadType     :: !(Maybe Text)
+    , _pzclZone           :: !Text
+    , _pzclBearerToken    :: !(Maybe Text)
+    , _pzclProjectId      :: !Text
+    , _pzclCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzclXgafv'
+--
+-- * 'pzclUploadProtocol'
+--
+-- * 'pzclPp'
+--
+-- * 'pzclAccessToken'
+--
+-- * 'pzclUploadType'
+--
+-- * 'pzclZone'
+--
+-- * 'pzclBearerToken'
+--
+-- * 'pzclProjectId'
+--
+-- * 'pzclCallback'
+projectsZonesClustersList
+    :: Text -- ^ 'pzclZone'
+    -> Text -- ^ 'pzclProjectId'
+    -> ProjectsZonesClustersList
+projectsZonesClustersList pPzclZone_ pPzclProjectId_ =
+    ProjectsZonesClustersList
+    { _pzclXgafv = Nothing
+    , _pzclUploadProtocol = Nothing
+    , _pzclPp = True
+    , _pzclAccessToken = Nothing
+    , _pzclUploadType = Nothing
+    , _pzclZone = pPzclZone_
+    , _pzclBearerToken = Nothing
+    , _pzclProjectId = pPzclProjectId_
+    , _pzclCallback = Nothing
+    }
+
+-- | V1 error format.
+pzclXgafv :: Lens' ProjectsZonesClustersList (Maybe Text)
+pzclXgafv
+  = lens _pzclXgafv (\ s a -> s{_pzclXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzclUploadProtocol :: Lens' ProjectsZonesClustersList (Maybe Text)
+pzclUploadProtocol
+  = lens _pzclUploadProtocol
+      (\ s a -> s{_pzclUploadProtocol = a})
+
+-- | Pretty-print response.
+pzclPp :: Lens' ProjectsZonesClustersList Bool
+pzclPp = lens _pzclPp (\ s a -> s{_pzclPp = a})
+
+-- | OAuth access token.
+pzclAccessToken :: Lens' ProjectsZonesClustersList (Maybe Text)
+pzclAccessToken
+  = lens _pzclAccessToken
+      (\ s a -> s{_pzclAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzclUploadType :: Lens' ProjectsZonesClustersList (Maybe Text)
+pzclUploadType
+  = lens _pzclUploadType
+      (\ s a -> s{_pzclUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides,
+-- or \"-\" for all zones.
+pzclZone :: Lens' ProjectsZonesClustersList Text
+pzclZone = lens _pzclZone (\ s a -> s{_pzclZone = a})
+
+-- | OAuth bearer token.
+pzclBearerToken :: Lens' ProjectsZonesClustersList (Maybe Text)
+pzclBearerToken
+  = lens _pzclBearerToken
+      (\ s a -> s{_pzclBearerToken = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzclProjectId :: Lens' ProjectsZonesClustersList Text
+pzclProjectId
+  = lens _pzclProjectId
+      (\ s a -> s{_pzclProjectId = a})
+
+-- | JSONP
+pzclCallback :: Lens' ProjectsZonesClustersList (Maybe Text)
+pzclCallback
+  = lens _pzclCallback (\ s a -> s{_pzclCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersList
+         where
+        type Rs ProjectsZonesClustersList =
+             ListClustersResponse
+        requestClient ProjectsZonesClustersList{..}
+          = go _pzclProjectId _pzclZone _pzclXgafv
+              _pzclUploadProtocol
+              (Just _pzclPp)
+              _pzclAccessToken
+              _pzclUploadType
+              _pzclBearerToken
+              _pzclCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
@@ -0,0 +1,215 @@
+{-# 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.Container.Projects.Zones.Clusters.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 settings of a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.update@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Update
+    (
+    -- * REST Resource
+      ProjectsZonesClustersUpdateResource
+
+    -- * Creating a Request
+    , projectsZonesClustersUpdate
+    , ProjectsZonesClustersUpdate
+
+    -- * Request Lenses
+    , pzcuXgafv
+    , pzcuUploadProtocol
+    , pzcuPp
+    , pzcuAccessToken
+    , pzcuUploadType
+    , pzcuZone
+    , pzcuPayload
+    , pzcuBearerToken
+    , pzcuClusterId
+    , pzcuProjectId
+    , pzcuCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.update@ method which the
+-- 'ProjectsZonesClustersUpdate' request conforms to.
+type ProjectsZonesClustersUpdateResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "pp" Bool :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "bearer_token" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   ReqBody '[JSON] UpdateClusterRequest :>
+                                     Put '[JSON] Operation
+
+-- | Update settings of a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersUpdate' smart constructor.
+data ProjectsZonesClustersUpdate = ProjectsZonesClustersUpdate
+    { _pzcuXgafv          :: !(Maybe Text)
+    , _pzcuUploadProtocol :: !(Maybe Text)
+    , _pzcuPp             :: !Bool
+    , _pzcuAccessToken    :: !(Maybe Text)
+    , _pzcuUploadType     :: !(Maybe Text)
+    , _pzcuZone           :: !Text
+    , _pzcuPayload        :: !UpdateClusterRequest
+    , _pzcuBearerToken    :: !(Maybe Text)
+    , _pzcuClusterId      :: !Text
+    , _pzcuProjectId      :: !Text
+    , _pzcuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcuXgafv'
+--
+-- * 'pzcuUploadProtocol'
+--
+-- * 'pzcuPp'
+--
+-- * 'pzcuAccessToken'
+--
+-- * 'pzcuUploadType'
+--
+-- * 'pzcuZone'
+--
+-- * 'pzcuPayload'
+--
+-- * 'pzcuBearerToken'
+--
+-- * 'pzcuClusterId'
+--
+-- * 'pzcuProjectId'
+--
+-- * 'pzcuCallback'
+projectsZonesClustersUpdate
+    :: Text -- ^ 'pzcuZone'
+    -> UpdateClusterRequest -- ^ 'pzcuPayload'
+    -> Text -- ^ 'pzcuClusterId'
+    -> Text -- ^ 'pzcuProjectId'
+    -> ProjectsZonesClustersUpdate
+projectsZonesClustersUpdate pPzcuZone_ pPzcuPayload_ pPzcuClusterId_ pPzcuProjectId_ =
+    ProjectsZonesClustersUpdate
+    { _pzcuXgafv = Nothing
+    , _pzcuUploadProtocol = Nothing
+    , _pzcuPp = True
+    , _pzcuAccessToken = Nothing
+    , _pzcuUploadType = Nothing
+    , _pzcuZone = pPzcuZone_
+    , _pzcuPayload = pPzcuPayload_
+    , _pzcuBearerToken = Nothing
+    , _pzcuClusterId = pPzcuClusterId_
+    , _pzcuProjectId = pPzcuProjectId_
+    , _pzcuCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcuXgafv :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuXgafv
+  = lens _pzcuXgafv (\ s a -> s{_pzcuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcuUploadProtocol :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuUploadProtocol
+  = lens _pzcuUploadProtocol
+      (\ s a -> s{_pzcuUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcuPp :: Lens' ProjectsZonesClustersUpdate Bool
+pzcuPp = lens _pzcuPp (\ s a -> s{_pzcuPp = a})
+
+-- | OAuth access token.
+pzcuAccessToken :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuAccessToken
+  = lens _pzcuAccessToken
+      (\ s a -> s{_pzcuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcuUploadType :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuUploadType
+  = lens _pzcuUploadType
+      (\ s a -> s{_pzcuUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcuZone :: Lens' ProjectsZonesClustersUpdate Text
+pzcuZone = lens _pzcuZone (\ s a -> s{_pzcuZone = a})
+
+-- | Multipart request metadata.
+pzcuPayload :: Lens' ProjectsZonesClustersUpdate UpdateClusterRequest
+pzcuPayload
+  = lens _pzcuPayload (\ s a -> s{_pzcuPayload = a})
+
+-- | OAuth bearer token.
+pzcuBearerToken :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuBearerToken
+  = lens _pzcuBearerToken
+      (\ s a -> s{_pzcuBearerToken = a})
+
+-- | The name of the cluster to upgrade.
+pzcuClusterId :: Lens' ProjectsZonesClustersUpdate Text
+pzcuClusterId
+  = lens _pzcuClusterId
+      (\ s a -> s{_pzcuClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcuProjectId :: Lens' ProjectsZonesClustersUpdate Text
+pzcuProjectId
+  = lens _pzcuProjectId
+      (\ s a -> s{_pzcuProjectId = a})
+
+-- | JSONP
+pzcuCallback :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuCallback
+  = lens _pzcuCallback (\ s a -> s{_pzcuCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersUpdate
+         where
+        type Rs ProjectsZonesClustersUpdate = Operation
+        requestClient ProjectsZonesClustersUpdate{..}
+          = go _pzcuProjectId _pzcuZone _pzcuClusterId
+              _pzcuXgafv
+              _pzcuUploadProtocol
+              (Just _pzcuPp)
+              _pzcuAccessToken
+              _pzcuUploadType
+              _pzcuBearerToken
+              _pzcuCallback
+              (Just AltJSON)
+              _pzcuPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs b/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
@@ -0,0 +1,191 @@
+{-# 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.Container.Projects.Zones.GetServerConfig
+-- Copyright   : (c) 2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns configuration info about the Container Engine service.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.getServerconfig@.
+module Network.Google.Resource.Container.Projects.Zones.GetServerConfig
+    (
+    -- * REST Resource
+      ProjectsZonesGetServerConfigResource
+
+    -- * Creating a Request
+    , projectsZonesGetServerConfig
+    , ProjectsZonesGetServerConfig
+
+    -- * Request Lenses
+    , pzgscXgafv
+    , pzgscUploadProtocol
+    , pzgscPp
+    , pzgscAccessToken
+    , pzgscUploadType
+    , pzgscZone
+    , pzgscBearerToken
+    , pzgscProjectId
+    , pzgscCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.getServerconfig@ method which the
+-- 'ProjectsZonesGetServerConfig' request conforms to.
+type ProjectsZonesGetServerConfigResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "serverconfig" :>
+                 QueryParam "$.xgafv" Text :>
+                   QueryParam "upload_protocol" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 Get '[JSON] ServerConfig
+
+-- | Returns configuration info about the Container Engine service.
+--
+-- /See:/ 'projectsZonesGetServerConfig' smart constructor.
+data ProjectsZonesGetServerConfig = ProjectsZonesGetServerConfig
+    { _pzgscXgafv          :: !(Maybe Text)
+    , _pzgscUploadProtocol :: !(Maybe Text)
+    , _pzgscPp             :: !Bool
+    , _pzgscAccessToken    :: !(Maybe Text)
+    , _pzgscUploadType     :: !(Maybe Text)
+    , _pzgscZone           :: !Text
+    , _pzgscBearerToken    :: !(Maybe Text)
+    , _pzgscProjectId      :: !Text
+    , _pzgscCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesGetServerConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzgscXgafv'
+--
+-- * 'pzgscUploadProtocol'
+--
+-- * 'pzgscPp'
+--
+-- * 'pzgscAccessToken'
+--
+-- * 'pzgscUploadType'
+--
+-- * 'pzgscZone'
+--
+-- * 'pzgscBearerToken'
+--
+-- * 'pzgscProjectId'
+--
+-- * 'pzgscCallback'
+projectsZonesGetServerConfig
+    :: Text -- ^ 'pzgscZone'
+    -> Text -- ^ 'pzgscProjectId'
+    -> ProjectsZonesGetServerConfig
+projectsZonesGetServerConfig pPzgscZone_ pPzgscProjectId_ =
+    ProjectsZonesGetServerConfig
+    { _pzgscXgafv = Nothing
+    , _pzgscUploadProtocol = Nothing
+    , _pzgscPp = True
+    , _pzgscAccessToken = Nothing
+    , _pzgscUploadType = Nothing
+    , _pzgscZone = pPzgscZone_
+    , _pzgscBearerToken = Nothing
+    , _pzgscProjectId = pPzgscProjectId_
+    , _pzgscCallback = Nothing
+    }
+
+-- | V1 error format.
+pzgscXgafv :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscXgafv
+  = lens _pzgscXgafv (\ s a -> s{_pzgscXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzgscUploadProtocol :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscUploadProtocol
+  = lens _pzgscUploadProtocol
+      (\ s a -> s{_pzgscUploadProtocol = a})
+
+-- | Pretty-print response.
+pzgscPp :: Lens' ProjectsZonesGetServerConfig Bool
+pzgscPp = lens _pzgscPp (\ s a -> s{_pzgscPp = a})
+
+-- | OAuth access token.
+pzgscAccessToken :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscAccessToken
+  = lens _pzgscAccessToken
+      (\ s a -> s{_pzgscAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzgscUploadType :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscUploadType
+  = lens _pzgscUploadType
+      (\ s a -> s{_pzgscUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) to return operations for, or
+-- \"-\" for all zones.
+pzgscZone :: Lens' ProjectsZonesGetServerConfig Text
+pzgscZone
+  = lens _pzgscZone (\ s a -> s{_pzgscZone = a})
+
+-- | OAuth bearer token.
+pzgscBearerToken :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscBearerToken
+  = lens _pzgscBearerToken
+      (\ s a -> s{_pzgscBearerToken = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzgscProjectId :: Lens' ProjectsZonesGetServerConfig Text
+pzgscProjectId
+  = lens _pzgscProjectId
+      (\ s a -> s{_pzgscProjectId = a})
+
+-- | JSONP
+pzgscCallback :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscCallback
+  = lens _pzgscCallback
+      (\ s a -> s{_pzgscCallback = a})
+
+instance GoogleRequest ProjectsZonesGetServerConfig
+         where
+        type Rs ProjectsZonesGetServerConfig = ServerConfig
+        requestClient ProjectsZonesGetServerConfig{..}
+          = go _pzgscProjectId _pzgscZone _pzgscXgafv
+              _pzgscUploadProtocol
+              (Just _pzgscPp)
+              _pzgscAccessToken
+              _pzgscUploadType
+              _pzgscBearerToken
+              _pzgscCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesGetServerConfigResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
@@ -0,0 +1,202 @@
+{-# 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.Container.Projects.Zones.Operations.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 operation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.operations.get@.
+module Network.Google.Resource.Container.Projects.Zones.Operations.Get
+    (
+    -- * REST Resource
+      ProjectsZonesOperationsGetResource
+
+    -- * Creating a Request
+    , projectsZonesOperationsGet
+    , ProjectsZonesOperationsGet
+
+    -- * Request Lenses
+    , pzogXgafv
+    , pzogUploadProtocol
+    , pzogPp
+    , pzogAccessToken
+    , pzogUploadType
+    , pzogZone
+    , pzogBearerToken
+    , pzogProjectId
+    , pzogOperationId
+    , pzogCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.operations.get@ method which the
+-- 'ProjectsZonesOperationsGet' request conforms to.
+type ProjectsZonesOperationsGetResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "operations" :>
+                 Capture "operationId" Text :>
+                   QueryParam "$.xgafv" Text :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "pp" Bool :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "bearer_token" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   Get '[JSON] Operation
+
+-- | Gets the specified operation.
+--
+-- /See:/ 'projectsZonesOperationsGet' smart constructor.
+data ProjectsZonesOperationsGet = ProjectsZonesOperationsGet
+    { _pzogXgafv          :: !(Maybe Text)
+    , _pzogUploadProtocol :: !(Maybe Text)
+    , _pzogPp             :: !Bool
+    , _pzogAccessToken    :: !(Maybe Text)
+    , _pzogUploadType     :: !(Maybe Text)
+    , _pzogZone           :: !Text
+    , _pzogBearerToken    :: !(Maybe Text)
+    , _pzogProjectId      :: !Text
+    , _pzogOperationId    :: !Text
+    , _pzogCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzogXgafv'
+--
+-- * 'pzogUploadProtocol'
+--
+-- * 'pzogPp'
+--
+-- * 'pzogAccessToken'
+--
+-- * 'pzogUploadType'
+--
+-- * 'pzogZone'
+--
+-- * 'pzogBearerToken'
+--
+-- * 'pzogProjectId'
+--
+-- * 'pzogOperationId'
+--
+-- * 'pzogCallback'
+projectsZonesOperationsGet
+    :: Text -- ^ 'pzogZone'
+    -> Text -- ^ 'pzogProjectId'
+    -> Text -- ^ 'pzogOperationId'
+    -> ProjectsZonesOperationsGet
+projectsZonesOperationsGet pPzogZone_ pPzogProjectId_ pPzogOperationId_ =
+    ProjectsZonesOperationsGet
+    { _pzogXgafv = Nothing
+    , _pzogUploadProtocol = Nothing
+    , _pzogPp = True
+    , _pzogAccessToken = Nothing
+    , _pzogUploadType = Nothing
+    , _pzogZone = pPzogZone_
+    , _pzogBearerToken = Nothing
+    , _pzogProjectId = pPzogProjectId_
+    , _pzogOperationId = pPzogOperationId_
+    , _pzogCallback = Nothing
+    }
+
+-- | V1 error format.
+pzogXgafv :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogXgafv
+  = lens _pzogXgafv (\ s a -> s{_pzogXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzogUploadProtocol :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogUploadProtocol
+  = lens _pzogUploadProtocol
+      (\ s a -> s{_pzogUploadProtocol = a})
+
+-- | Pretty-print response.
+pzogPp :: Lens' ProjectsZonesOperationsGet Bool
+pzogPp = lens _pzogPp (\ s a -> s{_pzogPp = a})
+
+-- | OAuth access token.
+pzogAccessToken :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogAccessToken
+  = lens _pzogAccessToken
+      (\ s a -> s{_pzogAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzogUploadType :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogUploadType
+  = lens _pzogUploadType
+      (\ s a -> s{_pzogUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzogZone :: Lens' ProjectsZonesOperationsGet Text
+pzogZone = lens _pzogZone (\ s a -> s{_pzogZone = a})
+
+-- | OAuth bearer token.
+pzogBearerToken :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogBearerToken
+  = lens _pzogBearerToken
+      (\ s a -> s{_pzogBearerToken = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzogProjectId :: Lens' ProjectsZonesOperationsGet Text
+pzogProjectId
+  = lens _pzogProjectId
+      (\ s a -> s{_pzogProjectId = a})
+
+-- | The server-assigned \`name\` of the operation.
+pzogOperationId :: Lens' ProjectsZonesOperationsGet Text
+pzogOperationId
+  = lens _pzogOperationId
+      (\ s a -> s{_pzogOperationId = a})
+
+-- | JSONP
+pzogCallback :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogCallback
+  = lens _pzogCallback (\ s a -> s{_pzogCallback = a})
+
+instance GoogleRequest ProjectsZonesOperationsGet
+         where
+        type Rs ProjectsZonesOperationsGet = Operation
+        requestClient ProjectsZonesOperationsGet{..}
+          = go _pzogProjectId _pzogZone _pzogOperationId
+              _pzogXgafv
+              _pzogUploadProtocol
+              (Just _pzogPp)
+              _pzogAccessToken
+              _pzogUploadType
+              _pzogBearerToken
+              _pzogCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
@@ -0,0 +1,190 @@
+{-# 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.Container.Projects.Zones.Operations.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 operations in a project in a specific zone or all zones.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.operations.list@.
+module Network.Google.Resource.Container.Projects.Zones.Operations.List
+    (
+    -- * REST Resource
+      ProjectsZonesOperationsListResource
+
+    -- * Creating a Request
+    , projectsZonesOperationsList
+    , ProjectsZonesOperationsList
+
+    -- * Request Lenses
+    , pzolXgafv
+    , pzolUploadProtocol
+    , pzolPp
+    , pzolAccessToken
+    , pzolUploadType
+    , pzolZone
+    , pzolBearerToken
+    , pzolProjectId
+    , pzolCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.operations.list@ method which the
+-- 'ProjectsZonesOperationsList' request conforms to.
+type ProjectsZonesOperationsListResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "operations" :>
+                 QueryParam "$.xgafv" Text :>
+                   QueryParam "upload_protocol" Text :>
+                     QueryParam "pp" Bool :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "bearer_token" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 Get '[JSON] ListOperationsResponse
+
+-- | Lists all operations in a project in a specific zone or all zones.
+--
+-- /See:/ 'projectsZonesOperationsList' smart constructor.
+data ProjectsZonesOperationsList = ProjectsZonesOperationsList
+    { _pzolXgafv          :: !(Maybe Text)
+    , _pzolUploadProtocol :: !(Maybe Text)
+    , _pzolPp             :: !Bool
+    , _pzolAccessToken    :: !(Maybe Text)
+    , _pzolUploadType     :: !(Maybe Text)
+    , _pzolZone           :: !Text
+    , _pzolBearerToken    :: !(Maybe Text)
+    , _pzolProjectId      :: !Text
+    , _pzolCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzolXgafv'
+--
+-- * 'pzolUploadProtocol'
+--
+-- * 'pzolPp'
+--
+-- * 'pzolAccessToken'
+--
+-- * 'pzolUploadType'
+--
+-- * 'pzolZone'
+--
+-- * 'pzolBearerToken'
+--
+-- * 'pzolProjectId'
+--
+-- * 'pzolCallback'
+projectsZonesOperationsList
+    :: Text -- ^ 'pzolZone'
+    -> Text -- ^ 'pzolProjectId'
+    -> ProjectsZonesOperationsList
+projectsZonesOperationsList pPzolZone_ pPzolProjectId_ =
+    ProjectsZonesOperationsList
+    { _pzolXgafv = Nothing
+    , _pzolUploadProtocol = Nothing
+    , _pzolPp = True
+    , _pzolAccessToken = Nothing
+    , _pzolUploadType = Nothing
+    , _pzolZone = pPzolZone_
+    , _pzolBearerToken = Nothing
+    , _pzolProjectId = pPzolProjectId_
+    , _pzolCallback = Nothing
+    }
+
+-- | V1 error format.
+pzolXgafv :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolXgafv
+  = lens _pzolXgafv (\ s a -> s{_pzolXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzolUploadProtocol :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolUploadProtocol
+  = lens _pzolUploadProtocol
+      (\ s a -> s{_pzolUploadProtocol = a})
+
+-- | Pretty-print response.
+pzolPp :: Lens' ProjectsZonesOperationsList Bool
+pzolPp = lens _pzolPp (\ s a -> s{_pzolPp = a})
+
+-- | OAuth access token.
+pzolAccessToken :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolAccessToken
+  = lens _pzolAccessToken
+      (\ s a -> s{_pzolAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzolUploadType :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolUploadType
+  = lens _pzolUploadType
+      (\ s a -> s{_pzolUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) to return operations for, or
+-- \"-\" for all zones.
+pzolZone :: Lens' ProjectsZonesOperationsList Text
+pzolZone = lens _pzolZone (\ s a -> s{_pzolZone = a})
+
+-- | OAuth bearer token.
+pzolBearerToken :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolBearerToken
+  = lens _pzolBearerToken
+      (\ s a -> s{_pzolBearerToken = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzolProjectId :: Lens' ProjectsZonesOperationsList Text
+pzolProjectId
+  = lens _pzolProjectId
+      (\ s a -> s{_pzolProjectId = a})
+
+-- | JSONP
+pzolCallback :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolCallback
+  = lens _pzolCallback (\ s a -> s{_pzolCallback = a})
+
+instance GoogleRequest ProjectsZonesOperationsList
+         where
+        type Rs ProjectsZonesOperationsList =
+             ListOperationsResponse
+        requestClient ProjectsZonesOperationsList{..}
+          = go _pzolProjectId _pzolZone _pzolXgafv
+              _pzolUploadProtocol
+              (Just _pzolPp)
+              _pzolAccessToken
+              _pzolUploadType
+              _pzolBearerToken
+              _pzolCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesOperationsListResource)
+                      mempty
diff --git a/gogol-container.cabal b/gogol-container.cabal
new file mode 100644
--- /dev/null
+++ b/gogol-container.cabal
@@ -0,0 +1,55 @@
+name:                  gogol-container
+version:               0.0.1
+synopsis:              Google Container Engine SDK.
+homepage:              https://github.com/brendanhay/gogol
+bug-reports:           https://github.com/brendanhay/gogol/issues
+license:               OtherLicense
+license-file:          LICENSE
+author:                Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
+copyright:             Copyright (c) 2015 Brendan Hay
+category:              Network, Google, Cloud
+build-type:            Simple
+cabal-version:         >= 1.10
+extra-source-files:    README.md
+
+description:
+    The Google Container Engine API is used for building and managing
+    container based applications, powered by the open source Kubernetes
+    technology.
+    .
+    /Warning:/ This is an experimental prototype/preview release which is still
+    under exploratory development and not intended for public use, caveat emptor!
+    .
+    This library is compatible with version @v1@
+    of the API.
+
+source-repository head
+    type:     git
+    location: git://github.com/brendanhay/gogol.git
+
+library
+    default-language:  Haskell2010
+    hs-source-dirs:    src gen
+
+    ghc-options:       -Wall
+
+    exposed-modules:
+          Network.Google.Container
+        , Network.Google.Container.Types
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Create
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Get
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.List
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Update
+        , Network.Google.Resource.Container.Projects.Zones.GetServerConfig
+        , Network.Google.Resource.Container.Projects.Zones.Operations.Get
+        , Network.Google.Resource.Container.Projects.Zones.Operations.List
+
+    other-modules:
+          Network.Google.Container.Types.Product
+        , Network.Google.Container.Types.Sum
+
+    build-depends:
+          gogol-core == 0.0.1.*
+        , base       >= 4.7 && < 5
