diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.0.1`
+`0.1.0`
 
 
 ## Description
@@ -18,9 +18,9 @@
 
 ## Contribute
 
-For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
 
-> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
 
 
 ## Licence
diff --git a/gen/Network/Google/Container.hs b/gen/Network/Google/Container.hs
--- a/gen/Network/Google/Container.hs
+++ b/gen/Network/Google/Container.hs
@@ -7,15 +7,14 @@
 
 -- |
 -- Module      : Network.Google.Container
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- The Google Container Engine API is used for building and managing
--- container based applications, powered by the open source Kubernetes
--- technology.
+-- Builds and manages clusters that run container-based applications,
+-- powered by open source Kubernetes technology.
 --
 -- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference>
 module Network.Google.Container
@@ -23,6 +22,9 @@
     -- * Service Configuration
       containerService
 
+    -- * OAuth Scopes
+    , cloudPlatformScope
+
     -- * API Declaration
     , ContainerAPI
 
@@ -40,6 +42,18 @@
     -- ** container.projects.zones.clusters.list
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.List
 
+    -- ** container.projects.zones.clusters.nodePools.create
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Create
+
+    -- ** container.projects.zones.clusters.nodePools.delete
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
+
+    -- ** container.projects.zones.clusters.nodePools.get
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
+
+    -- ** container.projects.zones.clusters.nodePools.list
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
+
     -- ** container.projects.zones.clusters.update
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.Update
 
@@ -54,10 +68,16 @@
 
     -- * Types
 
+    -- ** HorizontalPodAutoscaling
+    , HorizontalPodAutoscaling
+    , horizontalPodAutoscaling
+    , hpaDisabled
+
     -- ** ListOperationsResponse
     , ListOperationsResponse
     , listOperationsResponse
     , lorOperations
+    , lorMissingZones
 
     -- ** CreateClusterRequest
     , CreateClusterRequest
@@ -68,6 +88,7 @@
     , Cluster
     , cluster
     , cStatus
+    , cNodePools
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
@@ -76,13 +97,17 @@
     , cNetwork
     , cInitialClusterVersion
     , cZone
+    , cAddonsConfig
     , cServicesIPv4CIdR
     , cMasterAuth
     , cSelfLink
     , cName
     , cCurrentMasterVersion
     , cStatusMessage
+    , cSubnetwork
+    , cCurrentNodeCount
     , cEndpoint
+    , cLocations
     , cLoggingService
     , cDescription
     , cInstanceGroupURLs
@@ -100,7 +125,13 @@
     , ncDiskSizeGb
     , ncOAuthScopes
     , ncMachineType
+    , ncMetadata
 
+    -- ** HTTPLoadBalancing
+    , HTTPLoadBalancing
+    , hTTPLoadBalancing
+    , httplbDisabled
+
     -- ** Operation
     , Operation
     , operation
@@ -111,7 +142,26 @@
     , oStatusMessage
     , oOperationType
     , oTargetLink
+    , oDetail
 
+    -- ** AddonsConfig
+    , AddonsConfig
+    , addonsConfig
+    , acHorizontalPodAutoscaling
+    , acHTTPLoadBalancing
+
+    -- ** NodePool
+    , NodePool
+    , nodePool
+    , npStatus
+    , npConfig
+    , npInitialNodeCount
+    , npSelfLink
+    , npName
+    , npStatusMessage
+    , npVersion
+    , npInstanceGroupURLs
+
     -- ** MasterAuth
     , MasterAuth
     , masterAuth
@@ -121,21 +171,43 @@
     , maPassword
     , maClusterCaCertificate
 
+    -- ** NodeConfigMetadata
+    , NodeConfigMetadata
+    , nodeConfigMetadata
+    , ncmAddtional
+
     -- ** ServerConfig
     , ServerConfig
     , serverConfig
     , scValidNodeVersions
+    , scDefaultImageFamily
+    , scValidImageFamilies
     , scDefaultClusterVersion
 
     -- ** ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
     , lcrClusters
+    , lcrMissingZones
 
     -- ** ClusterUpdate
     , ClusterUpdate
     , clusterUpdate
+    , cuDesiredAddonsConfig
+    , cuDesiredNodePoolId
     , cuDesiredNodeVersion
+    , cuDesiredMasterVersion
+    , cuDesiredMonitoringService
+
+    -- ** ListNodePoolsResponse
+    , ListNodePoolsResponse
+    , listNodePoolsResponse
+    , lnprNodePools
+
+    -- ** CreateNodePoolRequest
+    , CreateNodePoolRequest
+    , createNodePoolRequest
+    , cnprNodePool
     ) where
 
 import           Network.Google.Container.Types
@@ -144,6 +216,10 @@
 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.NodePools.Create
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.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
@@ -157,6 +233,10 @@
 type ContainerAPI =
      ProjectsZonesOperationsListResource :<|>
        ProjectsZonesOperationsGetResource
+       :<|> ProjectsZonesClustersNodePoolsListResource
+       :<|> ProjectsZonesClustersNodePoolsGetResource
+       :<|> ProjectsZonesClustersNodePoolsCreateResource
+       :<|> ProjectsZonesClustersNodePoolsDeleteResource
        :<|> ProjectsZonesClustersListResource
        :<|> ProjectsZonesClustersGetResource
        :<|> ProjectsZonesClustersCreateResource
diff --git a/gen/Network/Google/Container/Types.hs b/gen/Network/Google/Container/Types.hs
--- a/gen/Network/Google/Container/Types.hs
+++ b/gen/Network/Google/Container/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DataKinds          #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE NoImplicitPrelude  #-}
@@ -7,7 +8,7 @@
 
 -- |
 -- Module      : Network.Google.Container.Types
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -21,10 +22,16 @@
     -- * OAuth Scopes
     , cloudPlatformScope
 
+    -- * HorizontalPodAutoscaling
+    , HorizontalPodAutoscaling
+    , horizontalPodAutoscaling
+    , hpaDisabled
+
     -- * ListOperationsResponse
     , ListOperationsResponse
     , listOperationsResponse
     , lorOperations
+    , lorMissingZones
 
     -- * CreateClusterRequest
     , CreateClusterRequest
@@ -35,6 +42,7 @@
     , Cluster
     , cluster
     , cStatus
+    , cNodePools
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
@@ -43,13 +51,17 @@
     , cNetwork
     , cInitialClusterVersion
     , cZone
+    , cAddonsConfig
     , cServicesIPv4CIdR
     , cMasterAuth
     , cSelfLink
     , cName
     , cCurrentMasterVersion
     , cStatusMessage
+    , cSubnetwork
+    , cCurrentNodeCount
     , cEndpoint
+    , cLocations
     , cLoggingService
     , cDescription
     , cInstanceGroupURLs
@@ -67,7 +79,13 @@
     , ncDiskSizeGb
     , ncOAuthScopes
     , ncMachineType
+    , ncMetadata
 
+    -- * HTTPLoadBalancing
+    , HTTPLoadBalancing
+    , hTTPLoadBalancing
+    , httplbDisabled
+
     -- * Operation
     , Operation
     , operation
@@ -78,7 +96,26 @@
     , oStatusMessage
     , oOperationType
     , oTargetLink
+    , oDetail
 
+    -- * AddonsConfig
+    , AddonsConfig
+    , addonsConfig
+    , acHorizontalPodAutoscaling
+    , acHTTPLoadBalancing
+
+    -- * NodePool
+    , NodePool
+    , nodePool
+    , npStatus
+    , npConfig
+    , npInitialNodeCount
+    , npSelfLink
+    , npName
+    , npStatusMessage
+    , npVersion
+    , npInstanceGroupURLs
+
     -- * MasterAuth
     , MasterAuth
     , masterAuth
@@ -88,21 +125,43 @@
     , maPassword
     , maClusterCaCertificate
 
+    -- * NodeConfigMetadata
+    , NodeConfigMetadata
+    , nodeConfigMetadata
+    , ncmAddtional
+
     -- * ServerConfig
     , ServerConfig
     , serverConfig
     , scValidNodeVersions
+    , scDefaultImageFamily
+    , scValidImageFamilies
     , scDefaultClusterVersion
 
     -- * ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
     , lcrClusters
+    , lcrMissingZones
 
     -- * ClusterUpdate
     , ClusterUpdate
     , clusterUpdate
+    , cuDesiredAddonsConfig
+    , cuDesiredNodePoolId
     , cuDesiredNodeVersion
+    , cuDesiredMasterVersion
+    , cuDesiredMonitoringService
+
+    -- * ListNodePoolsResponse
+    , ListNodePoolsResponse
+    , listNodePoolsResponse
+    , lnprNodePools
+
+    -- * CreateNodePoolRequest
+    , CreateNodePoolRequest
+    , createNodePoolRequest
+    , cnprNodePool
     ) where
 
 import           Network.Google.Container.Types.Product
@@ -110,11 +169,11 @@
 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 :: ServiceConfig
 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";
+cloudPlatformScope :: Proxy '["https://www.googleapis.com/auth/cloud-platform"]
+cloudPlatformScope = Proxy;
diff --git a/gen/Network/Google/Container/Types/Product.hs b/gen/Network/Google/Container/Types/Product.hs
--- a/gen/Network/Google/Container/Types/Product.hs
+++ b/gen/Network/Google/Container/Types/Product.hs
@@ -9,7 +9,7 @@
 
 -- |
 -- Module      : Network.Google.Container.Types.Product
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -20,11 +20,51 @@
 import           Network.Google.Container.Types.Sum
 import           Network.Google.Prelude
 
+-- | Configuration options for the horizontal pod autoscaling feature, which
+-- increases or decreases the number of replica pods a replication
+-- controller has based on the resource usage of the existing pods.
+--
+-- /See:/ 'horizontalPodAutoscaling' smart constructor.
+newtype HorizontalPodAutoscaling = HorizontalPodAutoscaling'
+    { _hpaDisabled :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HorizontalPodAutoscaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'hpaDisabled'
+horizontalPodAutoscaling
+    :: HorizontalPodAutoscaling
+horizontalPodAutoscaling =
+    HorizontalPodAutoscaling'
+    { _hpaDisabled = Nothing
+    }
+
+-- | Whether the Horizontal Pod Autoscaling feature is enabled in the
+-- cluster. When enabled, it ensures that a Heapster pod is running in the
+-- cluster, which is also used by the Cloud Monitoring service.
+hpaDisabled :: Lens' HorizontalPodAutoscaling (Maybe Bool)
+hpaDisabled
+  = lens _hpaDisabled (\ s a -> s{_hpaDisabled = a})
+
+instance FromJSON HorizontalPodAutoscaling where
+        parseJSON
+          = withObject "HorizontalPodAutoscaling"
+              (\ o ->
+                 HorizontalPodAutoscaling' <$> (o .:? "disabled"))
+
+instance ToJSON HorizontalPodAutoscaling where
+        toJSON HorizontalPodAutoscaling'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _hpaDisabled])
+
 -- | ListOperationsResponse is the result of ListOperationsRequest.
 --
 -- /See:/ 'listOperationsResponse' smart constructor.
-newtype ListOperationsResponse = ListOperationsResponse
-    { _lorOperations :: Maybe [Operation]
+data ListOperationsResponse = ListOperationsResponse'
+    { _lorOperations   :: !(Maybe [Operation])
+    , _lorMissingZones :: !(Maybe [Text])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ListOperationsResponse' with the minimum fields required to make a request.
@@ -32,11 +72,14 @@
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'lorOperations'
+--
+-- * 'lorMissingZones'
 listOperationsResponse
     :: ListOperationsResponse
 listOperationsResponse =
-    ListOperationsResponse
+    ListOperationsResponse'
     { _lorOperations = Nothing
+    , _lorMissingZones = Nothing
     }
 
 -- | A list of operations in the project in the specified zone.
@@ -47,22 +90,34 @@
       . _Default
       . _Coerce
 
+-- | If any zones are listed here, the list of operations returned may be
+-- missing the operations from those zones.
+lorMissingZones :: Lens' ListOperationsResponse [Text]
+lorMissingZones
+  = lens _lorMissingZones
+      (\ s a -> s{_lorMissingZones = a})
+      . _Default
+      . _Coerce
+
 instance FromJSON ListOperationsResponse where
         parseJSON
           = withObject "ListOperationsResponse"
               (\ o ->
-                 ListOperationsResponse <$>
-                   (o .:? "operations" .!= mempty))
+                 ListOperationsResponse' <$>
+                   (o .:? "operations" .!= mempty) <*>
+                     (o .:? "missingZones" .!= mempty))
 
 instance ToJSON ListOperationsResponse where
-        toJSON ListOperationsResponse{..}
+        toJSON ListOperationsResponse'{..}
           = object
-              (catMaybes [("operations" .=) <$> _lorOperations])
+              (catMaybes
+                 [("operations" .=) <$> _lorOperations,
+                  ("missingZones" .=) <$> _lorMissingZones])
 
 -- | CreateClusterRequest creates a cluster.
 --
 -- /See:/ 'createClusterRequest' smart constructor.
-newtype CreateClusterRequest = CreateClusterRequest
+newtype CreateClusterRequest = CreateClusterRequest'
     { _ccrCluster :: Maybe Cluster
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -74,7 +129,7 @@
 createClusterRequest
     :: CreateClusterRequest
 createClusterRequest =
-    CreateClusterRequest
+    CreateClusterRequest'
     { _ccrCluster = Nothing
     }
 
@@ -87,17 +142,18 @@
 instance FromJSON CreateClusterRequest where
         parseJSON
           = withObject "CreateClusterRequest"
-              (\ o -> CreateClusterRequest <$> (o .:? "cluster"))
+              (\ o -> CreateClusterRequest' <$> (o .:? "cluster"))
 
 instance ToJSON CreateClusterRequest where
-        toJSON CreateClusterRequest{..}
+        toJSON CreateClusterRequest'{..}
           = object (catMaybes [("cluster" .=) <$> _ccrCluster])
 
 -- | A Google Container Engine cluster.
 --
 -- /See:/ 'cluster' smart constructor.
-data Cluster = Cluster
+data Cluster = Cluster'
     { _cStatus                :: !(Maybe Text)
+    , _cNodePools             :: !(Maybe [NodePool])
     , _cNodeConfig            :: !(Maybe NodeConfig)
     , _cNodeIPv4CIdRSize      :: !(Maybe (Textual Int32))
     , _cClusterIPv4CIdR       :: !(Maybe Text)
@@ -106,13 +162,17 @@
     , _cNetwork               :: !(Maybe Text)
     , _cInitialClusterVersion :: !(Maybe Text)
     , _cZone                  :: !(Maybe Text)
+    , _cAddonsConfig          :: !(Maybe AddonsConfig)
     , _cServicesIPv4CIdR      :: !(Maybe Text)
     , _cMasterAuth            :: !(Maybe MasterAuth)
     , _cSelfLink              :: !(Maybe Text)
     , _cName                  :: !(Maybe Text)
     , _cCurrentMasterVersion  :: !(Maybe Text)
     , _cStatusMessage         :: !(Maybe Text)
+    , _cSubnetwork            :: !(Maybe Text)
+    , _cCurrentNodeCount      :: !(Maybe (Textual Int32))
     , _cEndpoint              :: !(Maybe Text)
+    , _cLocations             :: !(Maybe [Text])
     , _cLoggingService        :: !(Maybe Text)
     , _cDescription           :: !(Maybe Text)
     , _cInstanceGroupURLs     :: !(Maybe [Text])
@@ -126,6 +186,8 @@
 --
 -- * 'cStatus'
 --
+-- * 'cNodePools'
+--
 -- * 'cNodeConfig'
 --
 -- * 'cNodeIPv4CIdRSize'
@@ -142,6 +204,8 @@
 --
 -- * 'cZone'
 --
+-- * 'cAddonsConfig'
+--
 -- * 'cServicesIPv4CIdR'
 --
 -- * 'cMasterAuth'
@@ -154,8 +218,14 @@
 --
 -- * 'cStatusMessage'
 --
+-- * 'cSubnetwork'
+--
+-- * 'cCurrentNodeCount'
+--
 -- * 'cEndpoint'
 --
+-- * 'cLocations'
+--
 -- * 'cLoggingService'
 --
 -- * 'cDescription'
@@ -168,8 +238,9 @@
 cluster
     :: Cluster
 cluster =
-    Cluster
+    Cluster'
     { _cStatus = Nothing
+    , _cNodePools = Nothing
     , _cNodeConfig = Nothing
     , _cNodeIPv4CIdRSize = Nothing
     , _cClusterIPv4CIdR = Nothing
@@ -178,13 +249,17 @@
     , _cNetwork = Nothing
     , _cInitialClusterVersion = Nothing
     , _cZone = Nothing
+    , _cAddonsConfig = Nothing
     , _cServicesIPv4CIdR = Nothing
     , _cMasterAuth = Nothing
     , _cSelfLink = Nothing
     , _cName = Nothing
     , _cCurrentMasterVersion = Nothing
     , _cStatusMessage = Nothing
+    , _cSubnetwork = Nothing
+    , _cCurrentNodeCount = Nothing
     , _cEndpoint = Nothing
+    , _cLocations = Nothing
     , _cLoggingService = Nothing
     , _cDescription = Nothing
     , _cInstanceGroupURLs = Nothing
@@ -196,15 +271,29 @@
 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.
+-- | The node pools associated with this cluster. When creating a new
+-- cluster, only a single node pool should be specified. This field should
+-- not be set if \"node_config\" or \"initial_node_count\" are specified.
+cNodePools :: Lens' Cluster [NodePool]
+cNodePools
+  = lens _cNodePools (\ s a -> s{_cNodePools = a}) .
+      _Default
+      . _Coerce
+
+-- | Parameters used in creating the cluster\'s nodes. See \`nodeConfig\` for
+-- the description of its properties. For requests, this field should only
+-- be used in lieu of a \"node_pool\" object, since this configuration
+-- (along with the \"initial_node_count\") will be used to create a
+-- \"NodePool\" object with an auto-generated name. Do not use this and a
+-- node_pool at the same time. For responses, this field will be populated
+-- with the node configuration of the first node pool. If unspecified, the
+-- defaults 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
+-- containers. This is provisioned from within the \`container_ipv4_cidr\`
 -- range.
 cNodeIPv4CIdRSize :: Lens' Cluster (Maybe Int32)
 cNodeIPv4CIdRSize
@@ -222,9 +311,12 @@
       (\ 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.
+-- Compute Engine resource quota is sufficient for this number of
+-- instances. You must also have available firewall and routes quota. For
+-- requests, this field should only be used in lieu of a \"node_pool\"
+-- object, since this configuration (along with the \"node_config\") will
+-- be used to create a \"NodePool\" object with an auto-generated name. Do
+-- not use this and a node_pool at the same time.
 cInitialNodeCount :: Lens' Cluster (Maybe Int32)
 cInitialNodeCount
   = lens _cInitialNodeCount
@@ -232,20 +324,21 @@
       . 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.
+-- they are currently at multiple versions because they\'re in the process
+-- of being upgraded, this reflects the minimum version of all nodes.
 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.
+-- [network](\/compute\/docs\/networks-and-firewalls#networks) 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
+-- | [Output only] The software version of the master endpoint and kubelets
 -- used in the cluster when it was first created. The version can be
 -- upgraded over time.
 cInitialClusterVersion :: Lens' Cluster (Maybe Text)
@@ -258,17 +351,23 @@
 cZone :: Lens' Cluster (Maybe Text)
 cZone = lens _cZone (\ s a -> s{_cZone = a})
 
+-- | Configurations for the various addons available to run in the cluster.
+cAddonsConfig :: Lens' Cluster (Maybe AddonsConfig)
+cAddonsConfig
+  = lens _cAddonsConfig
+      (\ s a -> s{_cAddonsConfig = 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.
+-- 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.
+-- | The authentication information for accessing the master endpoint.
 cMasterAuth :: Lens' Cluster (Maybe MasterAuth)
 cMasterAuth
   = lens _cMasterAuth (\ s a -> s{_cMasterAuth = a})
@@ -298,18 +397,41 @@
   = 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
+-- | The name of the Google Compute Engine
+-- [subnetwork](\/compute\/docs\/subnetworks) to which the cluster is
+-- connected.
+cSubnetwork :: Lens' Cluster (Maybe Text)
+cSubnetwork
+  = lens _cSubnetwork (\ s a -> s{_cSubnetwork = a})
+
+-- | [Output only] The number of nodes currently in the cluster.
+cCurrentNodeCount :: Lens' Cluster (Maybe Int32)
+cCurrentNodeCount
+  = lens _cCurrentNodeCount
+      (\ s a -> s{_cCurrentNodeCount = a})
+      . mapping _Coerce
+
+-- | [Output only] The IP address of this cluster\'s 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\"
+-- | The list of Google Compute Engine
+-- [locations](\/compute\/docs\/zones#available) in which the cluster\'s
+-- nodes should be located.
+cLocations :: Lens' Cluster [Text]
+cLocations
+  = lens _cLocations (\ s a -> s{_cLocations = a}) .
+      _Default
+      . _Coerce
+
+-- | The logging service the cluster should use to write logs. Currently
+-- available options: * \`logging.googleapis.com\` - the Google Cloud
+-- Logging service. * \`none\` - no logs will be exported from the cluster.
+-- * if left as an empty string,\`logging.googleapis.com\` will be used.
 cLoggingService :: Lens' Cluster (Maybe Text)
 cLoggingService
   = lens _cLoggingService
@@ -330,11 +452,11 @@
       . _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\"
+-- | The monitoring service the cluster should use to write metrics.
+-- Currently available options: * \`monitoring.googleapis.com\` - the
+-- Google Cloud Monitoring service. * \`none\` - no metrics will be
+-- exported from the cluster. * if left as an empty string,
+-- \`monitoring.googleapis.com\` will be used.
 cMonitoringService :: Lens' Cluster (Maybe Text)
 cMonitoringService
   = lens _cMonitoringService
@@ -350,22 +472,27 @@
         parseJSON
           = withObject "Cluster"
               (\ o ->
-                 Cluster <$>
-                   (o .:? "status") <*> (o .:? "nodeConfig") <*>
-                     (o .:? "nodeIpv4CidrSize")
+                 Cluster' <$>
+                   (o .:? "status") <*> (o .:? "nodePools" .!= mempty)
+                     <*> (o .:? "nodeConfig")
+                     <*> (o .:? "nodeIpv4CidrSize")
                      <*> (o .:? "clusterIpv4Cidr")
                      <*> (o .:? "initialNodeCount")
                      <*> (o .:? "currentNodeVersion")
                      <*> (o .:? "network")
                      <*> (o .:? "initialClusterVersion")
                      <*> (o .:? "zone")
+                     <*> (o .:? "addonsConfig")
                      <*> (o .:? "servicesIpv4Cidr")
                      <*> (o .:? "masterAuth")
                      <*> (o .:? "selfLink")
                      <*> (o .:? "name")
                      <*> (o .:? "currentMasterVersion")
                      <*> (o .:? "statusMessage")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "currentNodeCount")
                      <*> (o .:? "endpoint")
+                     <*> (o .:? "locations" .!= mempty)
                      <*> (o .:? "loggingService")
                      <*> (o .:? "description")
                      <*> (o .:? "instanceGroupUrls" .!= mempty)
@@ -373,10 +500,11 @@
                      <*> (o .:? "createTime"))
 
 instance ToJSON Cluster where
-        toJSON Cluster{..}
+        toJSON Cluster'{..}
           = object
               (catMaybes
                  [("status" .=) <$> _cStatus,
+                  ("nodePools" .=) <$> _cNodePools,
                   ("nodeConfig" .=) <$> _cNodeConfig,
                   ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
                   ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
@@ -386,6 +514,7 @@
                   ("initialClusterVersion" .=) <$>
                     _cInitialClusterVersion,
                   ("zone" .=) <$> _cZone,
+                  ("addonsConfig" .=) <$> _cAddonsConfig,
                   ("servicesIpv4Cidr" .=) <$> _cServicesIPv4CIdR,
                   ("masterAuth" .=) <$> _cMasterAuth,
                   ("selfLink" .=) <$> _cSelfLink,
@@ -393,17 +522,20 @@
                   ("currentMasterVersion" .=) <$>
                     _cCurrentMasterVersion,
                   ("statusMessage" .=) <$> _cStatusMessage,
+                  ("subnetwork" .=) <$> _cSubnetwork,
+                  ("currentNodeCount" .=) <$> _cCurrentNodeCount,
                   ("endpoint" .=) <$> _cEndpoint,
+                  ("locations" .=) <$> _cLocations,
                   ("loggingService" .=) <$> _cLoggingService,
                   ("description" .=) <$> _cDescription,
                   ("instanceGroupUrls" .=) <$> _cInstanceGroupURLs,
                   ("monitoringService" .=) <$> _cMonitoringService,
                   ("createTime" .=) <$> _cCreateTime])
 
--- | UpdateClusterRequest updates a cluster.
+-- | UpdateClusterRequest updates the settings of a cluster.
 --
 -- /See:/ 'updateClusterRequest' smart constructor.
-newtype UpdateClusterRequest = UpdateClusterRequest
+newtype UpdateClusterRequest = UpdateClusterRequest'
     { _ucrUpdate :: Maybe ClusterUpdate
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -415,7 +547,7 @@
 updateClusterRequest
     :: UpdateClusterRequest
 updateClusterRequest =
-    UpdateClusterRequest
+    UpdateClusterRequest'
     { _ucrUpdate = Nothing
     }
 
@@ -427,19 +559,20 @@
 instance FromJSON UpdateClusterRequest where
         parseJSON
           = withObject "UpdateClusterRequest"
-              (\ o -> UpdateClusterRequest <$> (o .:? "update"))
+              (\ o -> UpdateClusterRequest' <$> (o .:? "update"))
 
 instance ToJSON UpdateClusterRequest where
-        toJSON UpdateClusterRequest{..}
+        toJSON UpdateClusterRequest'{..}
           = object (catMaybes [("update" .=) <$> _ucrUpdate])
 
--- | Per-node parameters.
+-- | Parameters that describe the nodes in a cluster.
 --
 -- /See:/ 'nodeConfig' smart constructor.
-data NodeConfig = NodeConfig
+data NodeConfig = NodeConfig'
     { _ncDiskSizeGb  :: !(Maybe (Textual Int32))
     , _ncOAuthScopes :: !(Maybe [Text])
     , _ncMachineType :: !(Maybe Text)
+    , _ncMetadata    :: !(Maybe NodeConfigMetadata)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'NodeConfig' with the minimum fields required to make a request.
@@ -451,13 +584,16 @@
 -- * 'ncOAuthScopes'
 --
 -- * 'ncMachineType'
+--
+-- * 'ncMetadata'
 nodeConfig
     :: NodeConfig
 nodeConfig =
-    NodeConfig
+    NodeConfig'
     { _ncDiskSizeGb = Nothing
     , _ncOAuthScopes = Nothing
     , _ncMachineType = Nothing
+    , _ncMetadata = Nothing
     }
 
 -- | Size of the disk attached to each node, specified in GB. The smallest
@@ -474,7 +610,10 @@
 -- \`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.
+-- for communicating with **gcr.io** (the [Google Container
+-- Registry](\/container-registry\/)). If unspecified, no scopes are added,
+-- unless Cloud Logging or Cloud Monitoring are enabled, in which case
+-- their required scopes will be added.
 ncOAuthScopes :: Lens' NodeConfig [Text]
 ncOAuthScopes
   = lens _ncOAuthScopes
@@ -490,27 +629,83 @@
   = lens _ncMachineType
       (\ s a -> s{_ncMachineType = a})
 
+-- | The metadata key\/value pairs assigned to instances in the cluster. Keys
+-- must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in
+-- length. These are reflected as part of a URL in the metadata server.
+-- Additionally, to avoid ambiguity, keys must not conflict with any other
+-- metadata keys for the project or be one of the four reserved keys:
+-- \"instance-template\", \"kube-env\", \"startup-script\", and
+-- \"user-data\" Values are free-form strings, and only have meaning as
+-- interpreted by the image running in the instance. The only restriction
+-- placed on them is that each value\'s size must be less than or equal to
+-- 32 KB. The total size of all keys and values must be less than 512 KB.
+ncMetadata :: Lens' NodeConfig (Maybe NodeConfigMetadata)
+ncMetadata
+  = lens _ncMetadata (\ s a -> s{_ncMetadata = a})
+
 instance FromJSON NodeConfig where
         parseJSON
           = withObject "NodeConfig"
               (\ o ->
-                 NodeConfig <$>
+                 NodeConfig' <$>
                    (o .:? "diskSizeGb") <*>
                      (o .:? "oauthScopes" .!= mempty)
-                     <*> (o .:? "machineType"))
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata"))
 
 instance ToJSON NodeConfig where
-        toJSON NodeConfig{..}
+        toJSON NodeConfig'{..}
           = object
               (catMaybes
                  [("diskSizeGb" .=) <$> _ncDiskSizeGb,
                   ("oauthScopes" .=) <$> _ncOAuthScopes,
-                  ("machineType" .=) <$> _ncMachineType])
+                  ("machineType" .=) <$> _ncMachineType,
+                  ("metadata" .=) <$> _ncMetadata])
 
--- | Defines the operation resource. All fields are output only.
+-- | Configuration options for the HTTP (L7) load balancing controller addon,
+-- which makes it easy to set up HTTP load balancers for services in a
+-- cluster.
 --
+-- /See:/ 'hTTPLoadBalancing' smart constructor.
+newtype HTTPLoadBalancing = HTTPLoadBalancing'
+    { _httplbDisabled :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'HTTPLoadBalancing' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'httplbDisabled'
+hTTPLoadBalancing
+    :: HTTPLoadBalancing
+hTTPLoadBalancing =
+    HTTPLoadBalancing'
+    { _httplbDisabled = Nothing
+    }
+
+-- | Whether the HTTP Load Balancing controller is enabled in the cluster.
+-- When enabled, it runs a small pod in the cluster that manages the load
+-- balancers.
+httplbDisabled :: Lens' HTTPLoadBalancing (Maybe Bool)
+httplbDisabled
+  = lens _httplbDisabled
+      (\ s a -> s{_httplbDisabled = a})
+
+instance FromJSON HTTPLoadBalancing where
+        parseJSON
+          = withObject "HTTPLoadBalancing"
+              (\ o -> HTTPLoadBalancing' <$> (o .:? "disabled"))
+
+instance ToJSON HTTPLoadBalancing where
+        toJSON HTTPLoadBalancing'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _httplbDisabled])
+
+-- | This operation resource represents operations that may have happened or
+-- are happening on the cluster. All fields are output only.
+--
 -- /See:/ 'operation' smart constructor.
-data Operation = Operation
+data Operation = Operation'
     { _oStatus        :: !(Maybe Text)
     , _oZone          :: !(Maybe Text)
     , _oSelfLink      :: !(Maybe Text)
@@ -518,6 +713,7 @@
     , _oStatusMessage :: !(Maybe Text)
     , _oOperationType :: !(Maybe Text)
     , _oTargetLink    :: !(Maybe Text)
+    , _oDetail        :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'Operation' with the minimum fields required to make a request.
@@ -537,10 +733,12 @@
 -- * 'oOperationType'
 --
 -- * 'oTargetLink'
+--
+-- * 'oDetail'
 operation
     :: Operation
 operation =
-    Operation
+    Operation'
     { _oStatus = Nothing
     , _oZone = Nothing
     , _oSelfLink = Nothing
@@ -548,6 +746,7 @@
     , _oStatusMessage = Nothing
     , _oOperationType = Nothing
     , _oTargetLink = Nothing
+    , _oDetail = Nothing
     }
 
 -- | The current status of the operation.
@@ -586,20 +785,25 @@
 oTargetLink
   = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
 
+-- | Detailed operation progress, if available.
+oDetail :: Lens' Operation (Maybe Text)
+oDetail = lens _oDetail (\ s a -> s{_oDetail = a})
+
 instance FromJSON Operation where
         parseJSON
           = withObject "Operation"
               (\ o ->
-                 Operation <$>
+                 Operation' <$>
                    (o .:? "status") <*> (o .:? "zone") <*>
                      (o .:? "selfLink")
                      <*> (o .:? "name")
                      <*> (o .:? "statusMessage")
                      <*> (o .:? "operationType")
-                     <*> (o .:? "targetLink"))
+                     <*> (o .:? "targetLink")
+                     <*> (o .:? "detail"))
 
 instance ToJSON Operation where
-        toJSON Operation{..}
+        toJSON Operation'{..}
           = object
               (catMaybes
                  [("status" .=) <$> _oStatus, ("zone" .=) <$> _oZone,
@@ -607,14 +811,196 @@
                   ("name" .=) <$> _oName,
                   ("statusMessage" .=) <$> _oStatusMessage,
                   ("operationType" .=) <$> _oOperationType,
-                  ("targetLink" .=) <$> _oTargetLink])
+                  ("targetLink" .=) <$> _oTargetLink,
+                  ("detail" .=) <$> _oDetail])
 
+-- | Configuration for the addons that can be automatically spun up in the
+-- cluster, enabling additional functionality.
+--
+-- /See:/ 'addonsConfig' smart constructor.
+data AddonsConfig = AddonsConfig'
+    { _acHorizontalPodAutoscaling :: !(Maybe HorizontalPodAutoscaling)
+    , _acHTTPLoadBalancing        :: !(Maybe HTTPLoadBalancing)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddonsConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acHorizontalPodAutoscaling'
+--
+-- * 'acHTTPLoadBalancing'
+addonsConfig
+    :: AddonsConfig
+addonsConfig =
+    AddonsConfig'
+    { _acHorizontalPodAutoscaling = Nothing
+    , _acHTTPLoadBalancing = Nothing
+    }
+
+-- | Configuration for the horizontal pod autoscaling feature, which
+-- increases or decreases the number of replica pods a replication
+-- controller has based on the resource usage of the existing pods.
+acHorizontalPodAutoscaling :: Lens' AddonsConfig (Maybe HorizontalPodAutoscaling)
+acHorizontalPodAutoscaling
+  = lens _acHorizontalPodAutoscaling
+      (\ s a -> s{_acHorizontalPodAutoscaling = a})
+
+-- | Configuration for the HTTP (L7) load balancing controller addon, which
+-- makes it easy to set up HTTP load balancers for services in a cluster.
+acHTTPLoadBalancing :: Lens' AddonsConfig (Maybe HTTPLoadBalancing)
+acHTTPLoadBalancing
+  = lens _acHTTPLoadBalancing
+      (\ s a -> s{_acHTTPLoadBalancing = a})
+
+instance FromJSON AddonsConfig where
+        parseJSON
+          = withObject "AddonsConfig"
+              (\ o ->
+                 AddonsConfig' <$>
+                   (o .:? "horizontalPodAutoscaling") <*>
+                     (o .:? "httpLoadBalancing"))
+
+instance ToJSON AddonsConfig where
+        toJSON AddonsConfig'{..}
+          = object
+              (catMaybes
+                 [("horizontalPodAutoscaling" .=) <$>
+                    _acHorizontalPodAutoscaling,
+                  ("httpLoadBalancing" .=) <$> _acHTTPLoadBalancing])
+
+-- | NodePool contains the name and configuration for a cluster\'s node pool.
+-- Node pools are a set of nodes (i.e. VM\'s), with a common configuration
+-- and specification, under the control of the cluster master. They may
+-- have a set of Kubernetes labels applied to them, which may be used to
+-- reference them during pod scheduling. They may also be resized up or
+-- down, to accommodate the workload.
+--
+-- /See:/ 'nodePool' smart constructor.
+data NodePool = NodePool'
+    { _npStatus            :: !(Maybe Text)
+    , _npConfig            :: !(Maybe NodeConfig)
+    , _npInitialNodeCount  :: !(Maybe (Textual Int32))
+    , _npSelfLink          :: !(Maybe Text)
+    , _npName              :: !(Maybe Text)
+    , _npStatusMessage     :: !(Maybe Text)
+    , _npVersion           :: !(Maybe Text)
+    , _npInstanceGroupURLs :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodePool' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npStatus'
+--
+-- * 'npConfig'
+--
+-- * 'npInitialNodeCount'
+--
+-- * 'npSelfLink'
+--
+-- * 'npName'
+--
+-- * 'npStatusMessage'
+--
+-- * 'npVersion'
+--
+-- * 'npInstanceGroupURLs'
+nodePool
+    :: NodePool
+nodePool =
+    NodePool'
+    { _npStatus = Nothing
+    , _npConfig = Nothing
+    , _npInitialNodeCount = Nothing
+    , _npSelfLink = Nothing
+    , _npName = Nothing
+    , _npStatusMessage = Nothing
+    , _npVersion = Nothing
+    , _npInstanceGroupURLs = Nothing
+    }
+
+-- | The status of the nodes in this pool instance.
+npStatus :: Lens' NodePool (Maybe Text)
+npStatus = lens _npStatus (\ s a -> s{_npStatus = a})
+
+-- | The node configuration of the pool.
+npConfig :: Lens' NodePool (Maybe NodeConfig)
+npConfig = lens _npConfig (\ s a -> s{_npConfig = a})
+
+-- | The initial node count for the pool. You must ensure that your Compute
+-- Engine resource quota is sufficient for this number of instances. You
+-- must also have available firewall and routes quota.
+npInitialNodeCount :: Lens' NodePool (Maybe Int32)
+npInitialNodeCount
+  = lens _npInitialNodeCount
+      (\ s a -> s{_npInitialNodeCount = a})
+      . mapping _Coerce
+
+-- | Server-defined URL for the resource.
+npSelfLink :: Lens' NodePool (Maybe Text)
+npSelfLink
+  = lens _npSelfLink (\ s a -> s{_npSelfLink = a})
+
+-- | The name of the node pool.
+npName :: Lens' NodePool (Maybe Text)
+npName = lens _npName (\ s a -> s{_npName = a})
+
+-- | [Output only] Additional information about the current status of this
+-- node pool instance, if available.
+npStatusMessage :: Lens' NodePool (Maybe Text)
+npStatusMessage
+  = lens _npStatusMessage
+      (\ s a -> s{_npStatusMessage = a})
+
+-- | The version of the Kubernetes of this node.
+npVersion :: Lens' NodePool (Maybe Text)
+npVersion
+  = lens _npVersion (\ s a -> s{_npVersion = a})
+
+-- | [Output only] The resource URLs of [instance
+-- groups](\/compute\/docs\/instance-groups\/) associated with this node
+-- pool.
+npInstanceGroupURLs :: Lens' NodePool [Text]
+npInstanceGroupURLs
+  = lens _npInstanceGroupURLs
+      (\ s a -> s{_npInstanceGroupURLs = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON NodePool where
+        parseJSON
+          = withObject "NodePool"
+              (\ o ->
+                 NodePool' <$>
+                   (o .:? "status") <*> (o .:? "config") <*>
+                     (o .:? "initialNodeCount")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "version")
+                     <*> (o .:? "instanceGroupUrls" .!= mempty))
+
+instance ToJSON NodePool where
+        toJSON NodePool'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _npStatus,
+                  ("config" .=) <$> _npConfig,
+                  ("initialNodeCount" .=) <$> _npInitialNodeCount,
+                  ("selfLink" .=) <$> _npSelfLink,
+                  ("name" .=) <$> _npName,
+                  ("statusMessage" .=) <$> _npStatusMessage,
+                  ("version" .=) <$> _npVersion,
+                  ("instanceGroupUrls" .=) <$> _npInstanceGroupURLs])
+
 -- | 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
+data MasterAuth = MasterAuth'
     { _maClientKey            :: !(Maybe Text)
     , _maUsername             :: !(Maybe Text)
     , _maClientCertificate    :: !(Maybe Text)
@@ -638,7 +1024,7 @@
 masterAuth
     :: MasterAuth
 masterAuth =
-    MasterAuth
+    MasterAuth'
     { _maClientKey = Nothing
     , _maUsername = Nothing
     , _maClientCertificate = Nothing
@@ -646,33 +1032,33 @@
     , _maClusterCaCertificate = Nothing
     }
 
--- | [Output only] Base64 encoded private key used by clients to authenticate
+-- | [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.
+-- | The username to use for HTTP basic authentication to the 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
+-- | [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.
+-- | The password to use for HTTP basic authentication to the 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
+-- | [Output only] Base64-encoded public certificate that is the root of
 -- trust for the cluster.
 maClusterCaCertificate :: Lens' MasterAuth (Maybe Text)
 maClusterCaCertificate
@@ -683,14 +1069,14 @@
         parseJSON
           = withObject "MasterAuth"
               (\ o ->
-                 MasterAuth <$>
+                 MasterAuth' <$>
                    (o .:? "clientKey") <*> (o .:? "username") <*>
                      (o .:? "clientCertificate")
                      <*> (o .:? "password")
                      <*> (o .:? "clusterCaCertificate"))
 
 instance ToJSON MasterAuth where
-        toJSON MasterAuth{..}
+        toJSON MasterAuth'{..}
           = object
               (catMaybes
                  [("clientKey" .=) <$> _maClientKey,
@@ -700,11 +1086,55 @@
                   ("clusterCaCertificate" .=) <$>
                     _maClusterCaCertificate])
 
--- | Container Engine Server configuration.
+-- | The metadata key\/value pairs assigned to instances in the cluster. Keys
+-- must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes in
+-- length. These are reflected as part of a URL in the metadata server.
+-- Additionally, to avoid ambiguity, keys must not conflict with any other
+-- metadata keys for the project or be one of the four reserved keys:
+-- \"instance-template\", \"kube-env\", \"startup-script\", and
+-- \"user-data\" Values are free-form strings, and only have meaning as
+-- interpreted by the image running in the instance. The only restriction
+-- placed on them is that each value\'s size must be less than or equal to
+-- 32 KB. The total size of all keys and values must be less than 512 KB.
 --
+-- /See:/ 'nodeConfigMetadata' smart constructor.
+newtype NodeConfigMetadata = NodeConfigMetadata'
+    { _ncmAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeConfigMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncmAddtional'
+nodeConfigMetadata
+    :: HashMap Text Text -- ^ 'ncmAddtional'
+    -> NodeConfigMetadata
+nodeConfigMetadata pNcmAddtional_ =
+    NodeConfigMetadata'
+    { _ncmAddtional = _Coerce # pNcmAddtional_
+    }
+
+ncmAddtional :: Lens' NodeConfigMetadata (HashMap Text Text)
+ncmAddtional
+  = lens _ncmAddtional (\ s a -> s{_ncmAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeConfigMetadata where
+        parseJSON
+          = withObject "NodeConfigMetadata"
+              (\ o -> NodeConfigMetadata' <$> (parseJSONObject o))
+
+instance ToJSON NodeConfigMetadata where
+        toJSON = toJSON . _ncmAddtional
+
+-- | Container Engine service configuration.
+--
 -- /See:/ 'serverConfig' smart constructor.
-data ServerConfig = ServerConfig
+data ServerConfig = ServerConfig'
     { _scValidNodeVersions     :: !(Maybe [Text])
+    , _scDefaultImageFamily    :: !(Maybe Text)
+    , _scValidImageFamilies    :: !(Maybe [Text])
     , _scDefaultClusterVersion :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -714,12 +1144,18 @@
 --
 -- * 'scValidNodeVersions'
 --
+-- * 'scDefaultImageFamily'
+--
+-- * 'scValidImageFamilies'
+--
 -- * 'scDefaultClusterVersion'
 serverConfig
     :: ServerConfig
 serverConfig =
-    ServerConfig
+    ServerConfig'
     { _scValidNodeVersions = Nothing
+    , _scDefaultImageFamily = Nothing
+    , _scValidImageFamilies = Nothing
     , _scDefaultClusterVersion = Nothing
     }
 
@@ -731,7 +1167,21 @@
       . _Default
       . _Coerce
 
--- | What version this server deploys by default.
+-- | Default image family.
+scDefaultImageFamily :: Lens' ServerConfig (Maybe Text)
+scDefaultImageFamily
+  = lens _scDefaultImageFamily
+      (\ s a -> s{_scDefaultImageFamily = a})
+
+-- | List of valid image families.
+scValidImageFamilies :: Lens' ServerConfig [Text]
+scValidImageFamilies
+  = lens _scValidImageFamilies
+      (\ s a -> s{_scValidImageFamilies = a})
+      . _Default
+      . _Coerce
+
+-- | Version of Kubernetes the service deploys by default.
 scDefaultClusterVersion :: Lens' ServerConfig (Maybe Text)
 scDefaultClusterVersion
   = lens _scDefaultClusterVersion
@@ -741,23 +1191,28 @@
         parseJSON
           = withObject "ServerConfig"
               (\ o ->
-                 ServerConfig <$>
+                 ServerConfig' <$>
                    (o .:? "validNodeVersions" .!= mempty) <*>
-                     (o .:? "defaultClusterVersion"))
+                     (o .:? "defaultImageFamily")
+                     <*> (o .:? "validImageFamilies" .!= mempty)
+                     <*> (o .:? "defaultClusterVersion"))
 
 instance ToJSON ServerConfig where
-        toJSON ServerConfig{..}
+        toJSON ServerConfig'{..}
           = object
               (catMaybes
                  [("validNodeVersions" .=) <$> _scValidNodeVersions,
+                  ("defaultImageFamily" .=) <$> _scDefaultImageFamily,
+                  ("validImageFamilies" .=) <$> _scValidImageFamilies,
                   ("defaultClusterVersion" .=) <$>
                     _scDefaultClusterVersion])
 
 -- | ListClustersResponse is the result of ListClustersRequest.
 --
 -- /See:/ 'listClustersResponse' smart constructor.
-newtype ListClustersResponse = ListClustersResponse
-    { _lcrClusters :: Maybe [Cluster]
+data ListClustersResponse = ListClustersResponse'
+    { _lcrClusters     :: !(Maybe [Cluster])
+    , _lcrMissingZones :: !(Maybe [Text])
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ListClustersResponse' with the minimum fields required to make a request.
@@ -765,11 +1220,14 @@
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'lcrClusters'
+--
+-- * 'lcrMissingZones'
 listClustersResponse
     :: ListClustersResponse
 listClustersResponse =
-    ListClustersResponse
+    ListClustersResponse'
     { _lcrClusters = Nothing
+    , _lcrMissingZones = Nothing
     }
 
 -- | A list of clusters in the project in the specified zone, or across all
@@ -780,53 +1238,199 @@
       _Default
       . _Coerce
 
+-- | If any zones are listed here, the list of clusters returned may be
+-- missing those zones.
+lcrMissingZones :: Lens' ListClustersResponse [Text]
+lcrMissingZones
+  = lens _lcrMissingZones
+      (\ s a -> s{_lcrMissingZones = a})
+      . _Default
+      . _Coerce
+
 instance FromJSON ListClustersResponse where
         parseJSON
           = withObject "ListClustersResponse"
               (\ o ->
-                 ListClustersResponse <$>
-                   (o .:? "clusters" .!= mempty))
+                 ListClustersResponse' <$>
+                   (o .:? "clusters" .!= mempty) <*>
+                     (o .:? "missingZones" .!= mempty))
 
 instance ToJSON ListClustersResponse where
-        toJSON ListClustersResponse{..}
+        toJSON ListClustersResponse'{..}
           = object
-              (catMaybes [("clusters" .=) <$> _lcrClusters])
+              (catMaybes
+                 [("clusters" .=) <$> _lcrClusters,
+                  ("missingZones" .=) <$> _lcrMissingZones])
 
--- | ClusterUpdate describes an update to the cluster.
+-- | ClusterUpdate describes an update to the cluster. Exactly one update can
+-- be applied to a cluster with each request, so at most one field can be
+-- provided.
 --
 -- /See:/ 'clusterUpdate' smart constructor.
-newtype ClusterUpdate = ClusterUpdate
-    { _cuDesiredNodeVersion :: Maybe Text
+data ClusterUpdate = ClusterUpdate'
+    { _cuDesiredAddonsConfig      :: !(Maybe AddonsConfig)
+    , _cuDesiredNodePoolId        :: !(Maybe Text)
+    , _cuDesiredNodeVersion       :: !(Maybe Text)
+    , _cuDesiredMasterVersion     :: !(Maybe Text)
+    , _cuDesiredMonitoringService :: !(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:
 --
+-- * 'cuDesiredAddonsConfig'
+--
+-- * 'cuDesiredNodePoolId'
+--
 -- * 'cuDesiredNodeVersion'
+--
+-- * 'cuDesiredMasterVersion'
+--
+-- * 'cuDesiredMonitoringService'
 clusterUpdate
     :: ClusterUpdate
 clusterUpdate =
-    ClusterUpdate
-    { _cuDesiredNodeVersion = Nothing
+    ClusterUpdate'
+    { _cuDesiredAddonsConfig = Nothing
+    , _cuDesiredNodePoolId = Nothing
+    , _cuDesiredNodeVersion = Nothing
+    , _cuDesiredMasterVersion = Nothing
+    , _cuDesiredMonitoringService = Nothing
     }
 
+-- | Configurations for the various addons available to run in the cluster.
+cuDesiredAddonsConfig :: Lens' ClusterUpdate (Maybe AddonsConfig)
+cuDesiredAddonsConfig
+  = lens _cuDesiredAddonsConfig
+      (\ s a -> s{_cuDesiredAddonsConfig = a})
+
+-- | The node pool to be upgraded. This field is mandatory if the
+-- \"desired_node_version\" or \"desired_image_family\" is specified and
+-- there is more than one node pool on the cluster.
+cuDesiredNodePoolId :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredNodePoolId
+  = lens _cuDesiredNodePoolId
+      (\ s a -> s{_cuDesiredNodePoolId = a})
+
 -- | The Kubernetes version to change the nodes to (typically an upgrade).
--- Use \"-\" to upgrade to the latest version supported by the server.
+-- Use \`-\` to upgrade to the latest version supported by the server.
 cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
 cuDesiredNodeVersion
   = lens _cuDesiredNodeVersion
       (\ s a -> s{_cuDesiredNodeVersion = a})
 
+-- | The Kubernetes version to change the master to. The only valid value is
+-- the latest supported version. Use \"-\" to have the server automatically
+-- select the latest version.
+cuDesiredMasterVersion :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredMasterVersion
+  = lens _cuDesiredMasterVersion
+      (\ s a -> s{_cuDesiredMasterVersion = a})
+
+-- | The monitoring service the cluster should use to write metrics.
+-- Currently available options: * \"monitoring.googleapis.com\" - the
+-- Google Cloud Monitoring service * \"none\" - no metrics will be exported
+-- from the cluster
+cuDesiredMonitoringService :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredMonitoringService
+  = lens _cuDesiredMonitoringService
+      (\ s a -> s{_cuDesiredMonitoringService = a})
+
 instance FromJSON ClusterUpdate where
         parseJSON
           = withObject "ClusterUpdate"
               (\ o ->
-                 ClusterUpdate <$> (o .:? "desiredNodeVersion"))
+                 ClusterUpdate' <$>
+                   (o .:? "desiredAddonsConfig") <*>
+                     (o .:? "desiredNodePoolId")
+                     <*> (o .:? "desiredNodeVersion")
+                     <*> (o .:? "desiredMasterVersion")
+                     <*> (o .:? "desiredMonitoringService"))
 
 instance ToJSON ClusterUpdate where
-        toJSON ClusterUpdate{..}
+        toJSON ClusterUpdate'{..}
           = object
               (catMaybes
-                 [("desiredNodeVersion" .=) <$>
-                    _cuDesiredNodeVersion])
+                 [("desiredAddonsConfig" .=) <$>
+                    _cuDesiredAddonsConfig,
+                  ("desiredNodePoolId" .=) <$> _cuDesiredNodePoolId,
+                  ("desiredNodeVersion" .=) <$> _cuDesiredNodeVersion,
+                  ("desiredMasterVersion" .=) <$>
+                    _cuDesiredMasterVersion,
+                  ("desiredMonitoringService" .=) <$>
+                    _cuDesiredMonitoringService])
+
+-- | ListNodePoolsResponse is the result of ListNodePoolsRequest.
+--
+-- /See:/ 'listNodePoolsResponse' smart constructor.
+newtype ListNodePoolsResponse = ListNodePoolsResponse'
+    { _lnprNodePools :: Maybe [NodePool]
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListNodePoolsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lnprNodePools'
+listNodePoolsResponse
+    :: ListNodePoolsResponse
+listNodePoolsResponse =
+    ListNodePoolsResponse'
+    { _lnprNodePools = Nothing
+    }
+
+-- | A list of node pools for a cluster.
+lnprNodePools :: Lens' ListNodePoolsResponse [NodePool]
+lnprNodePools
+  = lens _lnprNodePools
+      (\ s a -> s{_lnprNodePools = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ListNodePoolsResponse where
+        parseJSON
+          = withObject "ListNodePoolsResponse"
+              (\ o ->
+                 ListNodePoolsResponse' <$>
+                   (o .:? "nodePools" .!= mempty))
+
+instance ToJSON ListNodePoolsResponse where
+        toJSON ListNodePoolsResponse'{..}
+          = object
+              (catMaybes [("nodePools" .=) <$> _lnprNodePools])
+
+-- | CreateNodePoolRequest creates a node pool for a cluster.
+--
+-- /See:/ 'createNodePoolRequest' smart constructor.
+newtype CreateNodePoolRequest = CreateNodePoolRequest'
+    { _cnprNodePool :: Maybe NodePool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateNodePoolRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cnprNodePool'
+createNodePoolRequest
+    :: CreateNodePoolRequest
+createNodePoolRequest =
+    CreateNodePoolRequest'
+    { _cnprNodePool = Nothing
+    }
+
+-- | The node pool to create.
+cnprNodePool :: Lens' CreateNodePoolRequest (Maybe NodePool)
+cnprNodePool
+  = lens _cnprNodePool (\ s a -> s{_cnprNodePool = a})
+
+instance FromJSON CreateNodePoolRequest where
+        parseJSON
+          = withObject "CreateNodePoolRequest"
+              (\ o ->
+                 CreateNodePoolRequest' <$> (o .:? "nodePool"))
+
+instance ToJSON CreateNodePoolRequest where
+        toJSON CreateNodePoolRequest'{..}
+          = object
+              (catMaybes [("nodePool" .=) <$> _cnprNodePool])
diff --git a/gen/Network/Google/Container/Types/Sum.hs b/gen/Network/Google/Container/Types/Sum.hs
--- a/gen/Network/Google/Container/Types/Sum.hs
+++ b/gen/Network/Google/Container/Types/Sum.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module      : Network.Google.Container.Types.Sum
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Create.hs
@@ -14,21 +14,21 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.Create
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Creates a cluster, 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.
+-- Compute Engine instances. By default, the cluster is created in the
+-- project\'s [default
+-- network](\/compute\/docs\/networks-and-firewalls#networks). 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
@@ -77,17 +77,17 @@
                                    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.
+-- Compute Engine instances. By default, the cluster is created in the
+-- project\'s [default
+-- network](\/compute\/docs\/networks-and-firewalls#networks). 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
+data ProjectsZonesClustersCreate = ProjectsZonesClustersCreate'
     { _pzccXgafv          :: !(Maybe Text)
     , _pzccUploadProtocol :: !(Maybe Text)
     , _pzccPp             :: !Bool
@@ -129,7 +129,7 @@
     -> Text -- ^ 'pzccProjectId'
     -> ProjectsZonesClustersCreate
 projectsZonesClustersCreate pPzccZone_ pPzccPayload_ pPzccProjectId_ =
-    ProjectsZonesClustersCreate
+    ProjectsZonesClustersCreate'
     { _pzccXgafv = Nothing
     , _pzccUploadProtocol = Nothing
     , _pzccPp = True
@@ -186,7 +186,7 @@
       (\ s a -> s{_pzccBearerToken = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzccProjectId :: Lens' ProjectsZonesClustersCreate Text
 pzccProjectId
   = lens _pzccProjectId
@@ -200,7 +200,9 @@
 instance GoogleRequest ProjectsZonesClustersCreate
          where
         type Rs ProjectsZonesClustersCreate = Operation
-        requestClient ProjectsZonesClustersCreate{..}
+        type Scopes ProjectsZonesClustersCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersCreate'{..}
           = go _pzccProjectId _pzccZone _pzccXgafv
               _pzccUploadProtocol
               (Just _pzccPp)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Delete.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -22,7 +22,9 @@
 --
 -- Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
--- are also deleted.
+-- are also deleted. Other Google Compute Engine resources that might be in
+-- use by the cluster (e.g. load balancer resources) will not be deleted if
+-- they weren\'t present at the initial create time.
 --
 -- /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
@@ -72,10 +74,12 @@
 
 -- | Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
--- are also deleted.
+-- are also deleted. Other Google Compute Engine resources that might be in
+-- use by the cluster (e.g. load balancer resources) will not be deleted if
+-- they weren\'t present at the initial create time.
 --
 -- /See:/ 'projectsZonesClustersDelete' smart constructor.
-data ProjectsZonesClustersDelete = ProjectsZonesClustersDelete
+data ProjectsZonesClustersDelete = ProjectsZonesClustersDelete'
     { _pzcdXgafv          :: !(Maybe Text)
     , _pzcdUploadProtocol :: !(Maybe Text)
     , _pzcdPp             :: !Bool
@@ -117,7 +121,7 @@
     -> Text -- ^ 'pzcdProjectId'
     -> ProjectsZonesClustersDelete
 projectsZonesClustersDelete pPzcdZone_ pPzcdClusterId_ pPzcdProjectId_ =
-    ProjectsZonesClustersDelete
+    ProjectsZonesClustersDelete'
     { _pzcdXgafv = Nothing
     , _pzcdUploadProtocol = Nothing
     , _pzcdPp = True
@@ -175,7 +179,7 @@
       (\ s a -> s{_pzcdClusterId = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzcdProjectId :: Lens' ProjectsZonesClustersDelete Text
 pzcdProjectId
   = lens _pzcdProjectId
@@ -189,7 +193,9 @@
 instance GoogleRequest ProjectsZonesClustersDelete
          where
         type Rs ProjectsZonesClustersDelete = Operation
-        requestClient ProjectsZonesClustersDelete{..}
+        type Scopes ProjectsZonesClustersDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersDelete'{..}
           = go _pzcdProjectId _pzcdZone _pzcdClusterId
               _pzcdXgafv
               _pzcdUploadProtocol
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Get.hs
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets a specific cluster.
+-- Gets the details of 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
@@ -67,10 +67,10 @@
                                QueryParam "callback" Text :>
                                  QueryParam "alt" AltJSON :> Get '[JSON] Cluster
 
--- | Gets a specific cluster.
+-- | Gets the details of a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersGet' smart constructor.
-data ProjectsZonesClustersGet = ProjectsZonesClustersGet
+data ProjectsZonesClustersGet = ProjectsZonesClustersGet'
     { _pzcgXgafv          :: !(Maybe Text)
     , _pzcgUploadProtocol :: !(Maybe Text)
     , _pzcgPp             :: !Bool
@@ -112,7 +112,7 @@
     -> Text -- ^ 'pzcgProjectId'
     -> ProjectsZonesClustersGet
 projectsZonesClustersGet pPzcgZone_ pPzcgClusterId_ pPzcgProjectId_ =
-    ProjectsZonesClustersGet
+    ProjectsZonesClustersGet'
     { _pzcgXgafv = Nothing
     , _pzcgUploadProtocol = Nothing
     , _pzcgPp = True
@@ -170,7 +170,7 @@
       (\ s a -> s{_pzcgClusterId = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzcgProjectId :: Lens' ProjectsZonesClustersGet Text
 pzcgProjectId
   = lens _pzcgProjectId
@@ -183,7 +183,9 @@
 
 instance GoogleRequest ProjectsZonesClustersGet where
         type Rs ProjectsZonesClustersGet = Cluster
-        requestClient ProjectsZonesClustersGet{..}
+        type Scopes ProjectsZonesClustersGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersGet'{..}
           = go _pzcgProjectId _pzcgZone _pzcgClusterId
               _pzcgXgafv
               _pzcgUploadProtocol
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -71,7 +71,7 @@
 -- all zones.
 --
 -- /See:/ 'projectsZonesClustersList' smart constructor.
-data ProjectsZonesClustersList = ProjectsZonesClustersList
+data ProjectsZonesClustersList = ProjectsZonesClustersList'
     { _pzclXgafv          :: !(Maybe Text)
     , _pzclUploadProtocol :: !(Maybe Text)
     , _pzclPp             :: !Bool
@@ -109,7 +109,7 @@
     -> Text -- ^ 'pzclProjectId'
     -> ProjectsZonesClustersList
 projectsZonesClustersList pPzclZone_ pPzclProjectId_ =
-    ProjectsZonesClustersList
+    ProjectsZonesClustersList'
     { _pzclXgafv = Nothing
     , _pzclUploadProtocol = Nothing
     , _pzclPp = True
@@ -161,7 +161,7 @@
       (\ s a -> s{_pzclBearerToken = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzclProjectId :: Lens' ProjectsZonesClustersList Text
 pzclProjectId
   = lens _pzclProjectId
@@ -176,7 +176,9 @@
          where
         type Rs ProjectsZonesClustersList =
              ListClustersResponse
-        requestClient ProjectsZonesClustersList{..}
+        type Scopes ProjectsZonesClustersList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersList'{..}
           = go _pzclProjectId _pzclZone _pzclXgafv
               _pzclUploadProtocol
               (Just _pzclPp)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
@@ -0,0 +1,224 @@
+{-# 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.NodePools.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a node pool for a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.create@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Create
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsCreateResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsCreate
+    , ProjectsZonesClustersNodePoolsCreate
+
+    -- * Request Lenses
+    , pzcnpcXgafv
+    , pzcnpcUploadProtocol
+    , pzcnpcPp
+    , pzcnpcAccessToken
+    , pzcnpcUploadType
+    , pzcnpcZone
+    , pzcnpcPayload
+    , pzcnpcBearerToken
+    , pzcnpcClusterId
+    , pzcnpcProjectId
+    , pzcnpcCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.create@ method which the
+-- 'ProjectsZonesClustersNodePoolsCreate' request conforms to.
+type ProjectsZonesClustersNodePoolsCreateResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     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] CreateNodePoolRequest :>
+                                       Post '[JSON] Operation
+
+-- | Creates a node pool for a cluster.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsCreate' smart constructor.
+data ProjectsZonesClustersNodePoolsCreate = ProjectsZonesClustersNodePoolsCreate'
+    { _pzcnpcXgafv          :: !(Maybe Text)
+    , _pzcnpcUploadProtocol :: !(Maybe Text)
+    , _pzcnpcPp             :: !Bool
+    , _pzcnpcAccessToken    :: !(Maybe Text)
+    , _pzcnpcUploadType     :: !(Maybe Text)
+    , _pzcnpcZone           :: !Text
+    , _pzcnpcPayload        :: !CreateNodePoolRequest
+    , _pzcnpcBearerToken    :: !(Maybe Text)
+    , _pzcnpcClusterId      :: !Text
+    , _pzcnpcProjectId      :: !Text
+    , _pzcnpcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpcXgafv'
+--
+-- * 'pzcnpcUploadProtocol'
+--
+-- * 'pzcnpcPp'
+--
+-- * 'pzcnpcAccessToken'
+--
+-- * 'pzcnpcUploadType'
+--
+-- * 'pzcnpcZone'
+--
+-- * 'pzcnpcPayload'
+--
+-- * 'pzcnpcBearerToken'
+--
+-- * 'pzcnpcClusterId'
+--
+-- * 'pzcnpcProjectId'
+--
+-- * 'pzcnpcCallback'
+projectsZonesClustersNodePoolsCreate
+    :: Text -- ^ 'pzcnpcZone'
+    -> CreateNodePoolRequest -- ^ 'pzcnpcPayload'
+    -> Text -- ^ 'pzcnpcClusterId'
+    -> Text -- ^ 'pzcnpcProjectId'
+    -> ProjectsZonesClustersNodePoolsCreate
+projectsZonesClustersNodePoolsCreate pPzcnpcZone_ pPzcnpcPayload_ pPzcnpcClusterId_ pPzcnpcProjectId_ =
+    ProjectsZonesClustersNodePoolsCreate'
+    { _pzcnpcXgafv = Nothing
+    , _pzcnpcUploadProtocol = Nothing
+    , _pzcnpcPp = True
+    , _pzcnpcAccessToken = Nothing
+    , _pzcnpcUploadType = Nothing
+    , _pzcnpcZone = pPzcnpcZone_
+    , _pzcnpcPayload = pPzcnpcPayload_
+    , _pzcnpcBearerToken = Nothing
+    , _pzcnpcClusterId = pPzcnpcClusterId_
+    , _pzcnpcProjectId = pPzcnpcProjectId_
+    , _pzcnpcCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpcXgafv :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Text)
+pzcnpcXgafv
+  = lens _pzcnpcXgafv (\ s a -> s{_pzcnpcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpcUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Text)
+pzcnpcUploadProtocol
+  = lens _pzcnpcUploadProtocol
+      (\ s a -> s{_pzcnpcUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcnpcPp :: Lens' ProjectsZonesClustersNodePoolsCreate Bool
+pzcnpcPp = lens _pzcnpcPp (\ s a -> s{_pzcnpcPp = a})
+
+-- | OAuth access token.
+pzcnpcAccessToken :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Text)
+pzcnpcAccessToken
+  = lens _pzcnpcAccessToken
+      (\ s a -> s{_pzcnpcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpcUploadType :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Text)
+pzcnpcUploadType
+  = lens _pzcnpcUploadType
+      (\ s a -> s{_pzcnpcUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcnpcZone :: Lens' ProjectsZonesClustersNodePoolsCreate Text
+pzcnpcZone
+  = lens _pzcnpcZone (\ s a -> s{_pzcnpcZone = a})
+
+-- | Multipart request metadata.
+pzcnpcPayload :: Lens' ProjectsZonesClustersNodePoolsCreate CreateNodePoolRequest
+pzcnpcPayload
+  = lens _pzcnpcPayload
+      (\ s a -> s{_pzcnpcPayload = a})
+
+-- | OAuth bearer token.
+pzcnpcBearerToken :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Text)
+pzcnpcBearerToken
+  = lens _pzcnpcBearerToken
+      (\ s a -> s{_pzcnpcBearerToken = a})
+
+-- | The name of the cluster.
+pzcnpcClusterId :: Lens' ProjectsZonesClustersNodePoolsCreate Text
+pzcnpcClusterId
+  = lens _pzcnpcClusterId
+      (\ s a -> s{_pzcnpcClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcnpcProjectId :: Lens' ProjectsZonesClustersNodePoolsCreate Text
+pzcnpcProjectId
+  = lens _pzcnpcProjectId
+      (\ s a -> s{_pzcnpcProjectId = a})
+
+-- | JSONP
+pzcnpcCallback :: Lens' ProjectsZonesClustersNodePoolsCreate (Maybe Text)
+pzcnpcCallback
+  = lens _pzcnpcCallback
+      (\ s a -> s{_pzcnpcCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsCreate where
+        type Rs ProjectsZonesClustersNodePoolsCreate =
+             Operation
+        type Scopes ProjectsZonesClustersNodePoolsCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsCreate'{..}
+          = go _pzcnpcProjectId _pzcnpcZone _pzcnpcClusterId
+              _pzcnpcXgafv
+              _pzcnpcUploadProtocol
+              (Just _pzcnpcPp)
+              _pzcnpcAccessToken
+              _pzcnpcUploadType
+              _pzcnpcBearerToken
+              _pzcnpcCallback
+              (Just AltJSON)
+              _pzcnpcPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
@@ -0,0 +1,224 @@
+{-# 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.NodePools.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a node pool from a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.delete@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsDeleteResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsDelete
+    , ProjectsZonesClustersNodePoolsDelete
+
+    -- * Request Lenses
+    , pzcnpdXgafv
+    , pzcnpdUploadProtocol
+    , pzcnpdPp
+    , pzcnpdAccessToken
+    , pzcnpdUploadType
+    , pzcnpdZone
+    , pzcnpdNodePoolId
+    , pzcnpdBearerToken
+    , pzcnpdClusterId
+    , pzcnpdProjectId
+    , pzcnpdCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.delete@ method which the
+-- 'ProjectsZonesClustersNodePoolsDelete' request conforms to.
+type ProjectsZonesClustersNodePoolsDeleteResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     Capture "nodePoolId" 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 a node pool from a cluster.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsDelete' smart constructor.
+data ProjectsZonesClustersNodePoolsDelete = ProjectsZonesClustersNodePoolsDelete'
+    { _pzcnpdXgafv          :: !(Maybe Text)
+    , _pzcnpdUploadProtocol :: !(Maybe Text)
+    , _pzcnpdPp             :: !Bool
+    , _pzcnpdAccessToken    :: !(Maybe Text)
+    , _pzcnpdUploadType     :: !(Maybe Text)
+    , _pzcnpdZone           :: !Text
+    , _pzcnpdNodePoolId     :: !Text
+    , _pzcnpdBearerToken    :: !(Maybe Text)
+    , _pzcnpdClusterId      :: !Text
+    , _pzcnpdProjectId      :: !Text
+    , _pzcnpdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpdXgafv'
+--
+-- * 'pzcnpdUploadProtocol'
+--
+-- * 'pzcnpdPp'
+--
+-- * 'pzcnpdAccessToken'
+--
+-- * 'pzcnpdUploadType'
+--
+-- * 'pzcnpdZone'
+--
+-- * 'pzcnpdNodePoolId'
+--
+-- * 'pzcnpdBearerToken'
+--
+-- * 'pzcnpdClusterId'
+--
+-- * 'pzcnpdProjectId'
+--
+-- * 'pzcnpdCallback'
+projectsZonesClustersNodePoolsDelete
+    :: Text -- ^ 'pzcnpdZone'
+    -> Text -- ^ 'pzcnpdNodePoolId'
+    -> Text -- ^ 'pzcnpdClusterId'
+    -> Text -- ^ 'pzcnpdProjectId'
+    -> ProjectsZonesClustersNodePoolsDelete
+projectsZonesClustersNodePoolsDelete pPzcnpdZone_ pPzcnpdNodePoolId_ pPzcnpdClusterId_ pPzcnpdProjectId_ =
+    ProjectsZonesClustersNodePoolsDelete'
+    { _pzcnpdXgafv = Nothing
+    , _pzcnpdUploadProtocol = Nothing
+    , _pzcnpdPp = True
+    , _pzcnpdAccessToken = Nothing
+    , _pzcnpdUploadType = Nothing
+    , _pzcnpdZone = pPzcnpdZone_
+    , _pzcnpdNodePoolId = pPzcnpdNodePoolId_
+    , _pzcnpdBearerToken = Nothing
+    , _pzcnpdClusterId = pPzcnpdClusterId_
+    , _pzcnpdProjectId = pPzcnpdProjectId_
+    , _pzcnpdCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpdXgafv :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdXgafv
+  = lens _pzcnpdXgafv (\ s a -> s{_pzcnpdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpdUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdUploadProtocol
+  = lens _pzcnpdUploadProtocol
+      (\ s a -> s{_pzcnpdUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcnpdPp :: Lens' ProjectsZonesClustersNodePoolsDelete Bool
+pzcnpdPp = lens _pzcnpdPp (\ s a -> s{_pzcnpdPp = a})
+
+-- | OAuth access token.
+pzcnpdAccessToken :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdAccessToken
+  = lens _pzcnpdAccessToken
+      (\ s a -> s{_pzcnpdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpdUploadType :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdUploadType
+  = lens _pzcnpdUploadType
+      (\ s a -> s{_pzcnpdUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcnpdZone :: Lens' ProjectsZonesClustersNodePoolsDelete Text
+pzcnpdZone
+  = lens _pzcnpdZone (\ s a -> s{_pzcnpdZone = a})
+
+-- | The name of the node pool to delete.
+pzcnpdNodePoolId :: Lens' ProjectsZonesClustersNodePoolsDelete Text
+pzcnpdNodePoolId
+  = lens _pzcnpdNodePoolId
+      (\ s a -> s{_pzcnpdNodePoolId = a})
+
+-- | OAuth bearer token.
+pzcnpdBearerToken :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdBearerToken
+  = lens _pzcnpdBearerToken
+      (\ s a -> s{_pzcnpdBearerToken = a})
+
+-- | The name of the cluster.
+pzcnpdClusterId :: Lens' ProjectsZonesClustersNodePoolsDelete Text
+pzcnpdClusterId
+  = lens _pzcnpdClusterId
+      (\ s a -> s{_pzcnpdClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcnpdProjectId :: Lens' ProjectsZonesClustersNodePoolsDelete Text
+pzcnpdProjectId
+  = lens _pzcnpdProjectId
+      (\ s a -> s{_pzcnpdProjectId = a})
+
+-- | JSONP
+pzcnpdCallback :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdCallback
+  = lens _pzcnpdCallback
+      (\ s a -> s{_pzcnpdCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsDelete where
+        type Rs ProjectsZonesClustersNodePoolsDelete =
+             Operation
+        type Scopes ProjectsZonesClustersNodePoolsDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsDelete'{..}
+          = go _pzcnpdProjectId _pzcnpdZone _pzcnpdClusterId
+              _pzcnpdNodePoolId
+              _pzcnpdXgafv
+              _pzcnpdUploadProtocol
+              (Just _pzcnpdPp)
+              _pzcnpdAccessToken
+              _pzcnpdUploadType
+              _pzcnpdBearerToken
+              _pzcnpdCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
@@ -0,0 +1,222 @@
+{-# 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.NodePools.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the node pool requested.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.get@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsGetResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsGet
+    , ProjectsZonesClustersNodePoolsGet
+
+    -- * Request Lenses
+    , pzcnpgXgafv
+    , pzcnpgUploadProtocol
+    , pzcnpgPp
+    , pzcnpgAccessToken
+    , pzcnpgUploadType
+    , pzcnpgZone
+    , pzcnpgNodePoolId
+    , pzcnpgBearerToken
+    , pzcnpgClusterId
+    , pzcnpgProjectId
+    , pzcnpgCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.get@ method which the
+-- 'ProjectsZonesClustersNodePoolsGet' request conforms to.
+type ProjectsZonesClustersNodePoolsGetResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     Capture "nodePoolId" 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] NodePool
+
+-- | Retrieves the node pool requested.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsGet' smart constructor.
+data ProjectsZonesClustersNodePoolsGet = ProjectsZonesClustersNodePoolsGet'
+    { _pzcnpgXgafv          :: !(Maybe Text)
+    , _pzcnpgUploadProtocol :: !(Maybe Text)
+    , _pzcnpgPp             :: !Bool
+    , _pzcnpgAccessToken    :: !(Maybe Text)
+    , _pzcnpgUploadType     :: !(Maybe Text)
+    , _pzcnpgZone           :: !Text
+    , _pzcnpgNodePoolId     :: !Text
+    , _pzcnpgBearerToken    :: !(Maybe Text)
+    , _pzcnpgClusterId      :: !Text
+    , _pzcnpgProjectId      :: !Text
+    , _pzcnpgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpgXgafv'
+--
+-- * 'pzcnpgUploadProtocol'
+--
+-- * 'pzcnpgPp'
+--
+-- * 'pzcnpgAccessToken'
+--
+-- * 'pzcnpgUploadType'
+--
+-- * 'pzcnpgZone'
+--
+-- * 'pzcnpgNodePoolId'
+--
+-- * 'pzcnpgBearerToken'
+--
+-- * 'pzcnpgClusterId'
+--
+-- * 'pzcnpgProjectId'
+--
+-- * 'pzcnpgCallback'
+projectsZonesClustersNodePoolsGet
+    :: Text -- ^ 'pzcnpgZone'
+    -> Text -- ^ 'pzcnpgNodePoolId'
+    -> Text -- ^ 'pzcnpgClusterId'
+    -> Text -- ^ 'pzcnpgProjectId'
+    -> ProjectsZonesClustersNodePoolsGet
+projectsZonesClustersNodePoolsGet pPzcnpgZone_ pPzcnpgNodePoolId_ pPzcnpgClusterId_ pPzcnpgProjectId_ =
+    ProjectsZonesClustersNodePoolsGet'
+    { _pzcnpgXgafv = Nothing
+    , _pzcnpgUploadProtocol = Nothing
+    , _pzcnpgPp = True
+    , _pzcnpgAccessToken = Nothing
+    , _pzcnpgUploadType = Nothing
+    , _pzcnpgZone = pPzcnpgZone_
+    , _pzcnpgNodePoolId = pPzcnpgNodePoolId_
+    , _pzcnpgBearerToken = Nothing
+    , _pzcnpgClusterId = pPzcnpgClusterId_
+    , _pzcnpgProjectId = pPzcnpgProjectId_
+    , _pzcnpgCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpgXgafv :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgXgafv
+  = lens _pzcnpgXgafv (\ s a -> s{_pzcnpgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpgUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgUploadProtocol
+  = lens _pzcnpgUploadProtocol
+      (\ s a -> s{_pzcnpgUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcnpgPp :: Lens' ProjectsZonesClustersNodePoolsGet Bool
+pzcnpgPp = lens _pzcnpgPp (\ s a -> s{_pzcnpgPp = a})
+
+-- | OAuth access token.
+pzcnpgAccessToken :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgAccessToken
+  = lens _pzcnpgAccessToken
+      (\ s a -> s{_pzcnpgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpgUploadType :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgUploadType
+  = lens _pzcnpgUploadType
+      (\ s a -> s{_pzcnpgUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcnpgZone :: Lens' ProjectsZonesClustersNodePoolsGet Text
+pzcnpgZone
+  = lens _pzcnpgZone (\ s a -> s{_pzcnpgZone = a})
+
+-- | The name of the node pool.
+pzcnpgNodePoolId :: Lens' ProjectsZonesClustersNodePoolsGet Text
+pzcnpgNodePoolId
+  = lens _pzcnpgNodePoolId
+      (\ s a -> s{_pzcnpgNodePoolId = a})
+
+-- | OAuth bearer token.
+pzcnpgBearerToken :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgBearerToken
+  = lens _pzcnpgBearerToken
+      (\ s a -> s{_pzcnpgBearerToken = a})
+
+-- | The name of the cluster.
+pzcnpgClusterId :: Lens' ProjectsZonesClustersNodePoolsGet Text
+pzcnpgClusterId
+  = lens _pzcnpgClusterId
+      (\ s a -> s{_pzcnpgClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcnpgProjectId :: Lens' ProjectsZonesClustersNodePoolsGet Text
+pzcnpgProjectId
+  = lens _pzcnpgProjectId
+      (\ s a -> s{_pzcnpgProjectId = a})
+
+-- | JSONP
+pzcnpgCallback :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgCallback
+  = lens _pzcnpgCallback
+      (\ s a -> s{_pzcnpgCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsGet where
+        type Rs ProjectsZonesClustersNodePoolsGet = NodePool
+        type Scopes ProjectsZonesClustersNodePoolsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersNodePoolsGet'{..}
+          = go _pzcnpgProjectId _pzcnpgZone _pzcnpgClusterId
+              _pzcnpgNodePoolId
+              _pzcnpgXgafv
+              _pzcnpgUploadProtocol
+              (Just _pzcnpgPp)
+              _pzcnpgAccessToken
+              _pzcnpgUploadType
+              _pzcnpgBearerToken
+              _pzcnpgCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
@@ -0,0 +1,209 @@
+{-# 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.NodePools.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the node pools for a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.list@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsListResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsList
+    , ProjectsZonesClustersNodePoolsList
+
+    -- * Request Lenses
+    , pzcnplXgafv
+    , pzcnplUploadProtocol
+    , pzcnplPp
+    , pzcnplAccessToken
+    , pzcnplUploadType
+    , pzcnplZone
+    , pzcnplBearerToken
+    , pzcnplClusterId
+    , pzcnplProjectId
+    , pzcnplCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.list@ method which the
+-- 'ProjectsZonesClustersNodePoolsList' request conforms to.
+type ProjectsZonesClustersNodePoolsListResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     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] ListNodePoolsResponse
+
+-- | Lists the node pools for a cluster.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsList' smart constructor.
+data ProjectsZonesClustersNodePoolsList = ProjectsZonesClustersNodePoolsList'
+    { _pzcnplXgafv          :: !(Maybe Text)
+    , _pzcnplUploadProtocol :: !(Maybe Text)
+    , _pzcnplPp             :: !Bool
+    , _pzcnplAccessToken    :: !(Maybe Text)
+    , _pzcnplUploadType     :: !(Maybe Text)
+    , _pzcnplZone           :: !Text
+    , _pzcnplBearerToken    :: !(Maybe Text)
+    , _pzcnplClusterId      :: !Text
+    , _pzcnplProjectId      :: !Text
+    , _pzcnplCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnplXgafv'
+--
+-- * 'pzcnplUploadProtocol'
+--
+-- * 'pzcnplPp'
+--
+-- * 'pzcnplAccessToken'
+--
+-- * 'pzcnplUploadType'
+--
+-- * 'pzcnplZone'
+--
+-- * 'pzcnplBearerToken'
+--
+-- * 'pzcnplClusterId'
+--
+-- * 'pzcnplProjectId'
+--
+-- * 'pzcnplCallback'
+projectsZonesClustersNodePoolsList
+    :: Text -- ^ 'pzcnplZone'
+    -> Text -- ^ 'pzcnplClusterId'
+    -> Text -- ^ 'pzcnplProjectId'
+    -> ProjectsZonesClustersNodePoolsList
+projectsZonesClustersNodePoolsList pPzcnplZone_ pPzcnplClusterId_ pPzcnplProjectId_ =
+    ProjectsZonesClustersNodePoolsList'
+    { _pzcnplXgafv = Nothing
+    , _pzcnplUploadProtocol = Nothing
+    , _pzcnplPp = True
+    , _pzcnplAccessToken = Nothing
+    , _pzcnplUploadType = Nothing
+    , _pzcnplZone = pPzcnplZone_
+    , _pzcnplBearerToken = Nothing
+    , _pzcnplClusterId = pPzcnplClusterId_
+    , _pzcnplProjectId = pPzcnplProjectId_
+    , _pzcnplCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnplXgafv :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplXgafv
+  = lens _pzcnplXgafv (\ s a -> s{_pzcnplXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnplUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplUploadProtocol
+  = lens _pzcnplUploadProtocol
+      (\ s a -> s{_pzcnplUploadProtocol = a})
+
+-- | Pretty-print response.
+pzcnplPp :: Lens' ProjectsZonesClustersNodePoolsList Bool
+pzcnplPp = lens _pzcnplPp (\ s a -> s{_pzcnplPp = a})
+
+-- | OAuth access token.
+pzcnplAccessToken :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplAccessToken
+  = lens _pzcnplAccessToken
+      (\ s a -> s{_pzcnplAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnplUploadType :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplUploadType
+  = lens _pzcnplUploadType
+      (\ s a -> s{_pzcnplUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcnplZone :: Lens' ProjectsZonesClustersNodePoolsList Text
+pzcnplZone
+  = lens _pzcnplZone (\ s a -> s{_pzcnplZone = a})
+
+-- | OAuth bearer token.
+pzcnplBearerToken :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplBearerToken
+  = lens _pzcnplBearerToken
+      (\ s a -> s{_pzcnplBearerToken = a})
+
+-- | The name of the cluster.
+pzcnplClusterId :: Lens' ProjectsZonesClustersNodePoolsList Text
+pzcnplClusterId
+  = lens _pzcnplClusterId
+      (\ s a -> s{_pzcnplClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+pzcnplProjectId :: Lens' ProjectsZonesClustersNodePoolsList Text
+pzcnplProjectId
+  = lens _pzcnplProjectId
+      (\ s a -> s{_pzcnplProjectId = a})
+
+-- | JSONP
+pzcnplCallback :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplCallback
+  = lens _pzcnplCallback
+      (\ s a -> s{_pzcnplCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsList where
+        type Rs ProjectsZonesClustersNodePoolsList =
+             ListNodePoolsResponse
+        type Scopes ProjectsZonesClustersNodePoolsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersNodePoolsList'{..}
+          = go _pzcnplProjectId _pzcnplZone _pzcnplClusterId
+              _pzcnplXgafv
+              _pzcnplUploadProtocol
+              (Just _pzcnplPp)
+              _pzcnplAccessToken
+              _pzcnplUploadType
+              _pzcnplBearerToken
+              _pzcnplCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsListResource)
+                      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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Update.hs
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Update settings of a specific cluster.
+-- Updates the 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
@@ -70,10 +70,10 @@
                                    ReqBody '[JSON] UpdateClusterRequest :>
                                      Put '[JSON] Operation
 
--- | Update settings of a specific cluster.
+-- | Updates the settings of a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersUpdate' smart constructor.
-data ProjectsZonesClustersUpdate = ProjectsZonesClustersUpdate
+data ProjectsZonesClustersUpdate = ProjectsZonesClustersUpdate'
     { _pzcuXgafv          :: !(Maybe Text)
     , _pzcuUploadProtocol :: !(Maybe Text)
     , _pzcuPp             :: !Bool
@@ -119,7 +119,7 @@
     -> Text -- ^ 'pzcuProjectId'
     -> ProjectsZonesClustersUpdate
 projectsZonesClustersUpdate pPzcuZone_ pPzcuPayload_ pPzcuClusterId_ pPzcuProjectId_ =
-    ProjectsZonesClustersUpdate
+    ProjectsZonesClustersUpdate'
     { _pzcuXgafv = Nothing
     , _pzcuUploadProtocol = Nothing
     , _pzcuPp = True
@@ -183,7 +183,7 @@
       (\ s a -> s{_pzcuClusterId = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzcuProjectId :: Lens' ProjectsZonesClustersUpdate Text
 pzcuProjectId
   = lens _pzcuProjectId
@@ -197,7 +197,9 @@
 instance GoogleRequest ProjectsZonesClustersUpdate
          where
         type Rs ProjectsZonesClustersUpdate = Operation
-        requestClient ProjectsZonesClustersUpdate{..}
+        type Scopes ProjectsZonesClustersUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersUpdate'{..}
           = go _pzcuProjectId _pzcuZone _pzcuClusterId
               _pzcuXgafv
               _pzcuUploadProtocol
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs b/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/GetServerConfig.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.GetServerConfig
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -69,7 +69,7 @@
 -- | Returns configuration info about the Container Engine service.
 --
 -- /See:/ 'projectsZonesGetServerConfig' smart constructor.
-data ProjectsZonesGetServerConfig = ProjectsZonesGetServerConfig
+data ProjectsZonesGetServerConfig = ProjectsZonesGetServerConfig'
     { _pzgscXgafv          :: !(Maybe Text)
     , _pzgscUploadProtocol :: !(Maybe Text)
     , _pzgscPp             :: !Bool
@@ -107,7 +107,7 @@
     -> Text -- ^ 'pzgscProjectId'
     -> ProjectsZonesGetServerConfig
 projectsZonesGetServerConfig pPzgscZone_ pPzgscProjectId_ =
-    ProjectsZonesGetServerConfig
+    ProjectsZonesGetServerConfig'
     { _pzgscXgafv = Nothing
     , _pzgscUploadProtocol = Nothing
     , _pzgscPp = True
@@ -147,8 +147,7 @@
       (\ 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.
+-- [zone](\/compute\/docs\/zones#available) to return operations for.
 pzgscZone :: Lens' ProjectsZonesGetServerConfig Text
 pzgscZone
   = lens _pzgscZone (\ s a -> s{_pzgscZone = a})
@@ -160,7 +159,7 @@
       (\ s a -> s{_pzgscBearerToken = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzgscProjectId :: Lens' ProjectsZonesGetServerConfig Text
 pzgscProjectId
   = lens _pzgscProjectId
@@ -175,7 +174,9 @@
 instance GoogleRequest ProjectsZonesGetServerConfig
          where
         type Rs ProjectsZonesGetServerConfig = ServerConfig
-        requestClient ProjectsZonesGetServerConfig{..}
+        type Scopes ProjectsZonesGetServerConfig =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesGetServerConfig'{..}
           = go _pzgscProjectId _pzgscZone _pzgscXgafv
               _pzgscUploadProtocol
               (Just _pzgscPp)
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Get.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Operations.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -71,7 +71,7 @@
 -- | Gets the specified operation.
 --
 -- /See:/ 'projectsZonesOperationsGet' smart constructor.
-data ProjectsZonesOperationsGet = ProjectsZonesOperationsGet
+data ProjectsZonesOperationsGet = ProjectsZonesOperationsGet'
     { _pzogXgafv          :: !(Maybe Text)
     , _pzogUploadProtocol :: !(Maybe Text)
     , _pzogPp             :: !Bool
@@ -113,7 +113,7 @@
     -> Text -- ^ 'pzogOperationId'
     -> ProjectsZonesOperationsGet
 projectsZonesOperationsGet pPzogZone_ pPzogProjectId_ pPzogOperationId_ =
-    ProjectsZonesOperationsGet
+    ProjectsZonesOperationsGet'
     { _pzogXgafv = Nothing
     , _pzogUploadProtocol = Nothing
     , _pzogPp = True
@@ -165,7 +165,7 @@
       (\ s a -> s{_pzogBearerToken = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzogProjectId :: Lens' ProjectsZonesOperationsGet Text
 pzogProjectId
   = lens _pzogProjectId
@@ -185,7 +185,9 @@
 instance GoogleRequest ProjectsZonesOperationsGet
          where
         type Rs ProjectsZonesOperationsGet = Operation
-        requestClient ProjectsZonesOperationsGet{..}
+        type Scopes ProjectsZonesOperationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesOperationsGet'{..}
           = go _pzogProjectId _pzogZone _pzogOperationId
               _pzogXgafv
               _pzogUploadProtocol
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/List.hs
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Container.Projects.Zones.Operations.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -69,7 +69,7 @@
 -- | Lists all operations in a project in a specific zone or all zones.
 --
 -- /See:/ 'projectsZonesOperationsList' smart constructor.
-data ProjectsZonesOperationsList = ProjectsZonesOperationsList
+data ProjectsZonesOperationsList = ProjectsZonesOperationsList'
     { _pzolXgafv          :: !(Maybe Text)
     , _pzolUploadProtocol :: !(Maybe Text)
     , _pzolPp             :: !Bool
@@ -107,7 +107,7 @@
     -> Text -- ^ 'pzolProjectId'
     -> ProjectsZonesOperationsList
 projectsZonesOperationsList pPzolZone_ pPzolProjectId_ =
-    ProjectsZonesOperationsList
+    ProjectsZonesOperationsList'
     { _pzolXgafv = Nothing
     , _pzolUploadProtocol = Nothing
     , _pzolPp = True
@@ -148,7 +148,7 @@
 
 -- | The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) to return operations for, or
--- \"-\" for all zones.
+-- \`-\` for all zones.
 pzolZone :: Lens' ProjectsZonesOperationsList Text
 pzolZone = lens _pzolZone (\ s a -> s{_pzolZone = a})
 
@@ -159,7 +159,7 @@
       (\ s a -> s{_pzolBearerToken = a})
 
 -- | The Google Developers Console [project ID or project
--- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
 pzolProjectId :: Lens' ProjectsZonesOperationsList Text
 pzolProjectId
   = lens _pzolProjectId
@@ -174,7 +174,9 @@
          where
         type Rs ProjectsZonesOperationsList =
              ListOperationsResponse
-        requestClient ProjectsZonesOperationsList{..}
+        type Scopes ProjectsZonesOperationsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesOperationsList'{..}
           = go _pzolProjectId _pzolZone _pzolXgafv
               _pzolUploadProtocol
               (Just _pzolPp)
diff --git a/gogol-container.cabal b/gogol-container.cabal
--- a/gogol-container.cabal
+++ b/gogol-container.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-container
-version:               0.0.1
+version:               0.1.0
 synopsis:              Google Container Engine SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -7,16 +7,15 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015 Brendan Hay
+copyright:             Copyright (c) 2015-2016 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.
+    Builds and manages clusters that run container-based applications,
+    powered by 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!
@@ -41,6 +40,10 @@
         , 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.NodePools.Create
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
         , Network.Google.Resource.Container.Projects.Zones.Clusters.Update
         , Network.Google.Resource.Container.Projects.Zones.GetServerConfig
         , Network.Google.Resource.Container.Projects.Zones.Operations.Get
@@ -51,5 +54,5 @@
         , Network.Google.Container.Types.Sum
 
     build-depends:
-          gogol-core == 0.0.1.*
+          gogol-core == 0.1.0.*
         , base       >= 4.7 && < 5
