diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
 
 ## Description
 
-A client library for the Google Container Engine.
+A client library for the Google Kubernetes Engine.
 
 
 ## Contribute
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
@@ -13,10 +13,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Builds and manages clusters that run container-based applications,
--- powered by open source Kubernetes technology.
+-- Builds and manages container-based applications, powered by the open
+-- source Kubernetes technology.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference>
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference>
 module Network.Google.Container
     (
     -- * Service Configuration
@@ -30,6 +30,102 @@
 
     -- * Resources
 
+    -- ** container.projects.locations.clusters.completeIpRotation
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
+
+    -- ** container.projects.locations.clusters.create
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.Create
+
+    -- ** container.projects.locations.clusters.delete
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
+
+    -- ** container.projects.locations.clusters.get
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.Get
+
+    -- ** container.projects.locations.clusters.list
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.List
+
+    -- ** container.projects.locations.clusters.nodePools.create
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Create
+
+    -- ** container.projects.locations.clusters.nodePools.delete
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Delete
+
+    -- ** container.projects.locations.clusters.nodePools.get
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Get
+
+    -- ** container.projects.locations.clusters.nodePools.list
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.List
+
+    -- ** container.projects.locations.clusters.nodePools.rollback
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Rollback
+
+    -- ** container.projects.locations.clusters.nodePools.setAutoscaling
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetAutoscaling
+
+    -- ** container.projects.locations.clusters.nodePools.setManagement
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetManagement
+
+    -- ** container.projects.locations.clusters.nodePools.setSize
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetSize
+
+    -- ** container.projects.locations.clusters.nodePools.update
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Update
+
+    -- ** container.projects.locations.clusters.setAddons
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetAddons
+
+    -- ** container.projects.locations.clusters.setLegacyAbac
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetLegacyAbac
+
+    -- ** container.projects.locations.clusters.setLocations
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetLocations
+
+    -- ** container.projects.locations.clusters.setLogging
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetLogging
+
+    -- ** container.projects.locations.clusters.setMaintenancePolicy
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMaintenancePolicy
+
+    -- ** container.projects.locations.clusters.setMasterAuth
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMasterAuth
+
+    -- ** container.projects.locations.clusters.setMonitoring
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMonitoring
+
+    -- ** container.projects.locations.clusters.setNetworkPolicy
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetNetworkPolicy
+
+    -- ** container.projects.locations.clusters.setResourceLabels
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.SetResourceLabels
+
+    -- ** container.projects.locations.clusters.startIpRotation
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
+
+    -- ** container.projects.locations.clusters.update
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.Update
+
+    -- ** container.projects.locations.clusters.updateMaster
+    , module Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
+
+    -- ** container.projects.locations.getServerConfig
+    , module Network.Google.Resource.Container.Projects.Locations.GetServerConfig
+
+    -- ** container.projects.locations.operations.cancel
+    , module Network.Google.Resource.Container.Projects.Locations.Operations.Cancel
+
+    -- ** container.projects.locations.operations.get
+    , module Network.Google.Resource.Container.Projects.Locations.Operations.Get
+
+    -- ** container.projects.locations.operations.list
+    , module Network.Google.Resource.Container.Projects.Locations.Operations.List
+
+    -- ** container.projects.zones.clusters.addons
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Addons
+
+    -- ** container.projects.zones.clusters.completeIpRotation
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.CompleteIPRotation
+
     -- ** container.projects.zones.clusters.create
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.Create
 
@@ -39,9 +135,27 @@
     -- ** container.projects.zones.clusters.get
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.Get
 
+    -- ** container.projects.zones.clusters.legacyAbac
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.LegacyAbac
+
     -- ** container.projects.zones.clusters.list
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.List
 
+    -- ** container.projects.zones.clusters.locations
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Locations
+
+    -- ** container.projects.zones.clusters.logging
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Logging
+
+    -- ** container.projects.zones.clusters.master
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Master
+
+    -- ** container.projects.zones.clusters.monitoring
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.Monitoring
+
+    -- ** container.projects.zones.clusters.nodePools.autoscaling
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Autoscaling
+
     -- ** container.projects.zones.clusters.nodePools.create
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Create
 
@@ -60,6 +174,27 @@
     -- ** container.projects.zones.clusters.nodePools.setManagement
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
 
+    -- ** container.projects.zones.clusters.nodePools.setSize
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetSize
+
+    -- ** container.projects.zones.clusters.nodePools.update
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Update
+
+    -- ** container.projects.zones.clusters.resourceLabels
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.ResourceLabels
+
+    -- ** container.projects.zones.clusters.setMaintenancePolicy
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.SetMaintenancePolicy
+
+    -- ** container.projects.zones.clusters.setMasterAuth
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.SetMasterAuth
+
+    -- ** container.projects.zones.clusters.setNetworkPolicy
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.SetNetworkPolicy
+
+    -- ** container.projects.zones.clusters.startIpRotation
+    , module Network.Google.Resource.Container.Projects.Zones.Clusters.StartIPRotation
+
     -- ** container.projects.zones.clusters.update
     , module Network.Google.Resource.Container.Projects.Zones.Clusters.Update
 
@@ -77,11 +212,64 @@
 
     -- * Types
 
+    -- ** NetworkPolicyConfig
+    , NetworkPolicyConfig
+    , networkPolicyConfig
+    , npcDisabled
+
+    -- ** UpdateNodePoolRequest
+    , UpdateNodePoolRequest
+    , updateNodePoolRequest
+    , unprZone
+    , unprNodePoolId
+    , unprImageType
+    , unprName
+    , unprClusterId
+    , unprNodeVersion
+    , unprProjectId
+
+    -- ** UpdateMasterRequest
+    , UpdateMasterRequest
+    , updateMasterRequest
+    , umrZone
+    , umrName
+    , umrClusterId
+    , umrProjectId
+    , umrMasterVersion
+
+    -- ** StartIPRotationRequest
+    , StartIPRotationRequest
+    , startIPRotationRequest
+    , sirrZone
+    , sirrRotateCredentials
+    , sirrName
+    , sirrClusterId
+    , sirrProjectId
+
+    -- ** SetLegacyAbacRequest
+    , SetLegacyAbacRequest
+    , setLegacyAbacRequest
+    , slarEnabled
+    , slarZone
+    , slarName
+    , slarClusterId
+    , slarProjectId
+
     -- ** HorizontalPodAutoscaling
     , HorizontalPodAutoscaling
     , horizontalPodAutoscaling
     , hpaDisabled
 
+    -- ** SetMasterAuthRequest
+    , SetMasterAuthRequest
+    , setMasterAuthRequest
+    , smarAction
+    , smarZone
+    , smarName
+    , smarClusterId
+    , smarProjectId
+    , smarUpdate
+
     -- ** ListOperationsResponse
     , ListOperationsResponse
     , listOperationsResponse
@@ -91,7 +279,10 @@
     -- ** CreateClusterRequest
     , CreateClusterRequest
     , createClusterRequest
+    , ccrParent
     , ccrCluster
+    , ccrZone
+    , ccrProjectId
 
     -- ** Cluster
     , Cluster
@@ -99,9 +290,11 @@
     , cStatus
     , cNodePools
     , cEnableKubernetesAlpha
+    , cResourceLabels
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
+    , cLocation
     , cInitialNodeCount
     , cCurrentNodeVersion
     , cNetwork
@@ -109,6 +302,10 @@
     , cZone
     , cAddonsConfig
     , cServicesIPv4CIdR
+    , cIPAllocationPolicy
+    , cMasterAuthorizedNetworksConfig
+    , cLegacyAbac
+    , cNetworkConfig
     , cMasterAuth
     , cSelfLink
     , cName
@@ -116,10 +313,15 @@
     , cStatusMessage
     , cSubnetwork
     , cCurrentNodeCount
+    , cPrivateClusterConfig
+    , cMaintenancePolicy
+    , cConditions
     , cEndpoint
     , cExpireTime
+    , cNetworkPolicy
     , cLocations
     , cLoggingService
+    , cLabelFingerprint
     , cDescription
     , cInstanceGroupURLs
     , cMonitoringService
@@ -128,23 +330,47 @@
     -- ** CancelOperationRequest
     , CancelOperationRequest
     , cancelOperationRequest
+    , corZone
+    , corName
+    , corProjectId
+    , corOperationId
 
     -- ** UpdateClusterRequest
     , UpdateClusterRequest
     , updateClusterRequest
+    , ucrZone
+    , ucrName
+    , ucrClusterId
+    , ucrProjectId
     , ucrUpdate
 
+    -- ** SetAddonsConfigRequest
+    , SetAddonsConfigRequest
+    , setAddonsConfigRequest
+    , sacrZone
+    , sacrAddonsConfig
+    , sacrName
+    , sacrClusterId
+    , sacrProjectId
+
+    -- ** StatusConditionCode
+    , StatusConditionCode (..)
+
     -- ** NodeConfig
     , NodeConfig
     , nodeConfig
     , ncLocalSsdCount
     , ncDiskSizeGb
+    , ncTaints
     , ncOAuthScopes
     , ncServiceAccount
+    , ncAccelerators
     , ncImageType
     , ncMachineType
     , ncMetadata
+    , ncDiskType
     , ncLabels
+    , ncMinCPUPlatform
     , ncTags
     , ncPreemptible
 
@@ -156,25 +382,64 @@
     -- ** Operation
     , Operation
     , operation
+    , oNodepoolConditions
     , oStatus
+    , oLocation
+    , oStartTime
     , oZone
     , oSelfLink
     , oName
     , oStatusMessage
+    , oEndTime
+    , oClusterConditions
     , oOperationType
     , oTargetLink
     , oDetail
 
+    -- ** ClusterResourceLabels
+    , ClusterResourceLabels
+    , clusterResourceLabels
+    , crlAddtional
+
     -- ** Empty
     , Empty
     , empty
 
+    -- ** SetNodePoolAutoscalingRequest
+    , SetNodePoolAutoscalingRequest
+    , setNodePoolAutoscalingRequest
+    , snparAutoscaling
+    , snparZone
+    , snparNodePoolId
+    , snparName
+    , snparClusterId
+    , snparProjectId
+
+    -- ** CompleteIPRotationRequest
+    , CompleteIPRotationRequest
+    , completeIPRotationRequest
+    , cirrZone
+    , cirrName
+    , cirrClusterId
+    , cirrProjectId
+
+    -- ** OperationOperationType
+    , OperationOperationType (..)
+
     -- ** NodeManagement
     , NodeManagement
     , nodeManagement
     , nmAutoUpgrade
+    , nmAutoRepair
     , nmUpgradeOptions
 
+    -- ** NodeTaint
+    , NodeTaint
+    , nodeTaint
+    , ntEffect
+    , ntValue
+    , ntKey
+
     -- ** NodePoolAutoscaling
     , NodePoolAutoscaling
     , nodePoolAutoscaling
@@ -182,12 +447,72 @@
     , npaEnabled
     , npaMinNodeCount
 
+    -- ** SetMaintenancePolicyRequest
+    , SetMaintenancePolicyRequest
+    , setMaintenancePolicyRequest
+    , smprZone
+    , smprName
+    , smprClusterId
+    , smprMaintenancePolicy
+    , smprProjectId
+
+    -- ** KubernetesDashboard
+    , KubernetesDashboard
+    , kubernetesDashboard
+    , kdDisabled
+
+    -- ** ClientCertificateConfig
+    , ClientCertificateConfig
+    , clientCertificateConfig
+    , cccIssueClientCertificate
+
+    -- ** SetLabelsRequest
+    , SetLabelsRequest
+    , setLabelsRequest
+    , slrResourceLabels
+    , slrZone
+    , slrName
+    , slrClusterId
+    , slrProjectId
+    , slrLabelFingerprint
+
+    -- ** OperationStatus
+    , OperationStatus (..)
+
+    -- ** MaintenanceWindow
+    , MaintenanceWindow
+    , maintenanceWindow
+    , mwDailyMaintenanceWindow
+
+    -- ** IPAllocationPolicy
+    , IPAllocationPolicy
+    , ipAllocationPolicy
+    , iapServicesSecondaryRangeName
+    , iapNodeIPv4CIdR
+    , iapUseIPAliases
+    , iapClusterIPv4CIdR
+    , iapSubnetworkName
+    , iapClusterSecondaryRangeName
+    , iapNodeIPv4CIdRBlock
+    , iapServicesIPv4CIdR
+    , iapClusterIPv4CIdRBlock
+    , iapServicesIPv4CIdRBlock
+    , iapCreateSubnetwork
+
     -- ** AddonsConfig
     , AddonsConfig
     , addonsConfig
+    , acNetworkPolicyConfig
     , acHorizontalPodAutoscaling
     , acHTTPLoadBalancing
+    , acKubernetesDashboard
 
+    -- ** NetworkConfig
+    , NetworkConfig
+    , networkConfig
+    , ncNetwork
+    , ncSubnetwork
+
     -- ** NodePool
     , NodePool
     , nodePool
@@ -200,22 +525,46 @@
     , npName
     , npStatusMessage
     , npVersion
+    , npConditions
     , npInstanceGroupURLs
 
     -- ** SetNodePoolManagementRequest
     , SetNodePoolManagementRequest
     , setNodePoolManagementRequest
     , snpmrManagement
+    , snpmrZone
+    , snpmrNodePoolId
+    , snpmrName
+    , snpmrClusterId
+    , snpmrProjectId
 
+    -- ** MasterAuthorizedNetworksConfig
+    , MasterAuthorizedNetworksConfig
+    , masterAuthorizedNetworksConfig
+    , mancEnabled
+    , mancCIdRBlocks
+
+    -- ** LegacyAbac
+    , LegacyAbac
+    , legacyAbac
+    , laEnabled
+
     -- ** MasterAuth
     , MasterAuth
     , masterAuth
     , maClientKey
     , maUsername
+    , maClientCertificateConfig
     , maClientCertificate
     , maPassword
     , maClusterCaCertificate
 
+    -- ** StatusCondition
+    , StatusCondition
+    , statusCondition
+    , scCode
+    , scMessage
+
     -- ** NodeConfigMetadata
     , NodeConfigMetadata
     , nodeConfigMetadata
@@ -235,12 +584,99 @@
     , scDefaultClusterVersion
     , scValidMasterVersions
 
+    -- ** NetworkPolicyProvider
+    , NetworkPolicyProvider (..)
+
     -- ** AutoUpgradeOptions
     , AutoUpgradeOptions
     , autoUpgradeOptions
     , auoAutoUpgradeStartTime
     , auoDescription
 
+    -- ** SetNodePoolSizeRequest
+    , SetNodePoolSizeRequest
+    , setNodePoolSizeRequest
+    , snpsrNodeCount
+    , snpsrZone
+    , snpsrNodePoolId
+    , snpsrName
+    , snpsrClusterId
+    , snpsrProjectId
+
+    -- ** Xgafv
+    , Xgafv (..)
+
+    -- ** SetMonitoringServiceRequest
+    , SetMonitoringServiceRequest
+    , setMonitoringServiceRequest
+    , smsrZone
+    , smsrName
+    , smsrClusterId
+    , smsrProjectId
+    , smsrMonitoringService
+
+    -- ** SetLoggingServiceRequest
+    , SetLoggingServiceRequest
+    , setLoggingServiceRequest
+    , slsrZone
+    , slsrName
+    , slsrClusterId
+    , slsrProjectId
+    , slsrLoggingService
+
+    -- ** MaintenancePolicy
+    , MaintenancePolicy
+    , maintenancePolicy
+    , mpWindow
+
+    -- ** CIdRBlock
+    , CIdRBlock
+    , cIdRBlock
+    , cirbCIdRBlock
+    , cirbDisplayName
+
+    -- ** AcceleratorConfig
+    , AcceleratorConfig
+    , acceleratorConfig
+    , acAcceleratorCount
+    , acAcceleratorType
+
+    -- ** SetLocationsRequest
+    , SetLocationsRequest
+    , setLocationsRequest
+    , sZone
+    , sName
+    , sClusterId
+    , sProjectId
+    , sLocations
+
+    -- ** SetNetworkPolicyRequest
+    , SetNetworkPolicyRequest
+    , setNetworkPolicyRequest
+    , snprZone
+    , snprName
+    , snprClusterId
+    , snprProjectId
+    , snprNetworkPolicy
+
+    -- ** PrivateClusterConfig
+    , PrivateClusterConfig
+    , privateClusterConfig
+    , pccEnablePrivateNodes
+    , pccEnablePrivateEndpoint
+    , pccPublicEndpoint
+    , pccMasterIPv4CIdRBlock
+    , pccPrivateEndpoint
+
+    -- ** DailyMaintenanceWindow
+    , DailyMaintenanceWindow
+    , dailyMaintenanceWindow
+    , dmwStartTime
+    , dmwDuration
+
+    -- ** NodePoolStatus
+    , NodePoolStatus (..)
+
     -- ** ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
@@ -253,6 +689,7 @@
     , cuDesiredNodePoolAutoscaling
     , cuDesiredAddonsConfig
     , cuDesiredNodePoolId
+    , cuDesiredMasterAuthorizedNetworksConfig
     , cuDesiredImageType
     , cuDesiredNodeVersion
     , cuDesiredMasterVersion
@@ -262,30 +699,104 @@
     -- ** RollbackNodePoolUpgradeRequest
     , RollbackNodePoolUpgradeRequest
     , rollbackNodePoolUpgradeRequest
+    , rnpurZone
+    , rnpurNodePoolId
+    , rnpurName
+    , rnpurClusterId
+    , rnpurProjectId
 
+    -- ** NetworkPolicy
+    , NetworkPolicy
+    , networkPolicy
+    , npEnabled
+    , npProvider
+
     -- ** ListNodePoolsResponse
     , ListNodePoolsResponse
     , listNodePoolsResponse
     , lnprNodePools
 
+    -- ** ClusterStatus
+    , ClusterStatus (..)
+
+    -- ** NodeTaintEffect
+    , NodeTaintEffect (..)
+
     -- ** CreateNodePoolRequest
     , CreateNodePoolRequest
     , createNodePoolRequest
+    , cnprParent
+    , cnprZone
     , cnprNodePool
+    , cnprClusterId
+    , cnprProjectId
+
+    -- ** SetLabelsRequestResourceLabels
+    , SetLabelsRequestResourceLabels
+    , setLabelsRequestResourceLabels
+    , slrrlAddtional
+
+    -- ** SetMasterAuthRequestAction
+    , SetMasterAuthRequestAction (..)
     ) where
 
 import           Network.Google.Container.Types
 import           Network.Google.Prelude
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.Create
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.Get
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.List
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Create
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Delete
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Get
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.List
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Rollback
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetAutoscaling
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetManagement
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetSize
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Update
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetAddons
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetLegacyAbac
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetLocations
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetLogging
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetMaintenancePolicy
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetMasterAuth
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetMonitoring
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetNetworkPolicy
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.SetResourceLabels
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.Update
+import           Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
+import           Network.Google.Resource.Container.Projects.Locations.GetServerConfig
+import           Network.Google.Resource.Container.Projects.Locations.Operations.Cancel
+import           Network.Google.Resource.Container.Projects.Locations.Operations.Get
+import           Network.Google.Resource.Container.Projects.Locations.Operations.List
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Addons
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.CompleteIPRotation
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.Create
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.Get
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.LegacyAbac
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.List
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Locations
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Logging
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Master
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.Monitoring
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Autoscaling
 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.NodePools.Rollback
 import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetSize
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Update
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.ResourceLabels
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.SetMaintenancePolicy
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.SetMasterAuth
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.SetNetworkPolicy
+import           Network.Google.Resource.Container.Projects.Zones.Clusters.StartIPRotation
 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.Cancel
@@ -296,21 +807,76 @@
 TODO
 -}
 
--- | Represents the entirety of the methods and resources available for the Google Container Engine API service.
+-- | Represents the entirety of the methods and resources available for the Kubernetes Engine API service.
 type ContainerAPI =
      ProjectsZonesOperationsListResource :<|>
        ProjectsZonesOperationsGetResource
        :<|> ProjectsZonesOperationsCancelResource
+       :<|> ProjectsZonesClustersNodePoolsSetSizeResource
        :<|> ProjectsZonesClustersNodePoolsListResource
+       :<|>
+       ProjectsZonesClustersNodePoolsAutoscalingResource
        :<|> ProjectsZonesClustersNodePoolsGetResource
        :<|> ProjectsZonesClustersNodePoolsRollbackResource
        :<|>
        ProjectsZonesClustersNodePoolsSetManagementResource
        :<|> ProjectsZonesClustersNodePoolsCreateResource
        :<|> ProjectsZonesClustersNodePoolsDeleteResource
+       :<|> ProjectsZonesClustersNodePoolsUpdateResource
+       :<|> ProjectsZonesClustersSetNetworkPolicyResource
+       :<|> ProjectsZonesClustersResourceLabelsResource
        :<|> ProjectsZonesClustersListResource
+       :<|> ProjectsZonesClustersStartIPRotationResource
+       :<|> ProjectsZonesClustersAddonsResource
        :<|> ProjectsZonesClustersGetResource
+       :<|> ProjectsZonesClustersSetMasterAuthResource
+       :<|> ProjectsZonesClustersLegacyAbacResource
+       :<|> ProjectsZonesClustersMasterResource
        :<|> ProjectsZonesClustersCreateResource
+       :<|> ProjectsZonesClustersCompleteIPRotationResource
+       :<|> ProjectsZonesClustersMonitoringResource
+       :<|>
+       ProjectsZonesClustersSetMaintenancePolicyResource
+       :<|> ProjectsZonesClustersLoggingResource
+       :<|> ProjectsZonesClustersLocationsResource
        :<|> ProjectsZonesClustersDeleteResource
        :<|> ProjectsZonesClustersUpdateResource
        :<|> ProjectsZonesGetServerConfigResource
+       :<|> ProjectsLocationsOperationsListResource
+       :<|> ProjectsLocationsOperationsGetResource
+       :<|> ProjectsLocationsOperationsCancelResource
+       :<|>
+       ProjectsLocationsClustersNodePoolsSetSizeResource
+       :<|> ProjectsLocationsClustersNodePoolsListResource
+       :<|>
+       ProjectsLocationsClustersNodePoolsSetAutoscalingResource
+       :<|> ProjectsLocationsClustersNodePoolsGetResource
+       :<|>
+       ProjectsLocationsClustersNodePoolsRollbackResource
+       :<|>
+       ProjectsLocationsClustersNodePoolsSetManagementResource
+       :<|> ProjectsLocationsClustersNodePoolsCreateResource
+       :<|> ProjectsLocationsClustersNodePoolsDeleteResource
+       :<|> ProjectsLocationsClustersNodePoolsUpdateResource
+       :<|>
+       ProjectsLocationsClustersSetNetworkPolicyResource
+       :<|> ProjectsLocationsClustersSetLocationsResource
+       :<|> ProjectsLocationsClustersListResource
+       :<|> ProjectsLocationsClustersUpdateMasterResource
+       :<|> ProjectsLocationsClustersStartIPRotationResource
+       :<|>
+       ProjectsLocationsClustersSetResourceLabelsResource
+       :<|> ProjectsLocationsClustersSetLegacyAbacResource
+       :<|> ProjectsLocationsClustersGetResource
+       :<|> ProjectsLocationsClustersSetMonitoringResource
+       :<|> ProjectsLocationsClustersSetMasterAuthResource
+       :<|> ProjectsLocationsClustersSetAddonsResource
+       :<|> ProjectsLocationsClustersCreateResource
+       :<|>
+       ProjectsLocationsClustersCompleteIPRotationResource
+       :<|>
+       ProjectsLocationsClustersSetMaintenancePolicyResource
+       :<|> ProjectsLocationsClustersDeleteResource
+       :<|> ProjectsLocationsClustersUpdateResource
+       :<|> ProjectsLocationsClustersSetLoggingResource
+       :<|> ProjectsLocationsGetServerConfigResource
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
@@ -22,11 +22,64 @@
     -- * OAuth Scopes
     , cloudPlatformScope
 
+    -- * NetworkPolicyConfig
+    , NetworkPolicyConfig
+    , networkPolicyConfig
+    , npcDisabled
+
+    -- * UpdateNodePoolRequest
+    , UpdateNodePoolRequest
+    , updateNodePoolRequest
+    , unprZone
+    , unprNodePoolId
+    , unprImageType
+    , unprName
+    , unprClusterId
+    , unprNodeVersion
+    , unprProjectId
+
+    -- * UpdateMasterRequest
+    , UpdateMasterRequest
+    , updateMasterRequest
+    , umrZone
+    , umrName
+    , umrClusterId
+    , umrProjectId
+    , umrMasterVersion
+
+    -- * StartIPRotationRequest
+    , StartIPRotationRequest
+    , startIPRotationRequest
+    , sirrZone
+    , sirrRotateCredentials
+    , sirrName
+    , sirrClusterId
+    , sirrProjectId
+
+    -- * SetLegacyAbacRequest
+    , SetLegacyAbacRequest
+    , setLegacyAbacRequest
+    , slarEnabled
+    , slarZone
+    , slarName
+    , slarClusterId
+    , slarProjectId
+
     -- * HorizontalPodAutoscaling
     , HorizontalPodAutoscaling
     , horizontalPodAutoscaling
     , hpaDisabled
 
+    -- * SetMasterAuthRequest
+    , SetMasterAuthRequest
+    , setMasterAuthRequest
+    , smarAction
+    , smarZone
+    , smarName
+    , smarClusterId
+    , smarProjectId
+    , smarUpdate
+
     -- * ListOperationsResponse
     , ListOperationsResponse
     , listOperationsResponse
@@ -36,7 +89,10 @@
     -- * CreateClusterRequest
     , CreateClusterRequest
     , createClusterRequest
+    , ccrParent
     , ccrCluster
+    , ccrZone
+    , ccrProjectId
 
     -- * Cluster
     , Cluster
@@ -44,9 +100,11 @@
     , cStatus
     , cNodePools
     , cEnableKubernetesAlpha
+    , cResourceLabels
     , cNodeConfig
     , cNodeIPv4CIdRSize
     , cClusterIPv4CIdR
+    , cLocation
     , cInitialNodeCount
     , cCurrentNodeVersion
     , cNetwork
@@ -54,6 +112,10 @@
     , cZone
     , cAddonsConfig
     , cServicesIPv4CIdR
+    , cIPAllocationPolicy
+    , cMasterAuthorizedNetworksConfig
+    , cLegacyAbac
+    , cNetworkConfig
     , cMasterAuth
     , cSelfLink
     , cName
@@ -61,10 +123,15 @@
     , cStatusMessage
     , cSubnetwork
     , cCurrentNodeCount
+    , cPrivateClusterConfig
+    , cMaintenancePolicy
+    , cConditions
     , cEndpoint
     , cExpireTime
+    , cNetworkPolicy
     , cLocations
     , cLoggingService
+    , cLabelFingerprint
     , cDescription
     , cInstanceGroupURLs
     , cMonitoringService
@@ -73,23 +140,47 @@
     -- * CancelOperationRequest
     , CancelOperationRequest
     , cancelOperationRequest
+    , corZone
+    , corName
+    , corProjectId
+    , corOperationId
 
     -- * UpdateClusterRequest
     , UpdateClusterRequest
     , updateClusterRequest
+    , ucrZone
+    , ucrName
+    , ucrClusterId
+    , ucrProjectId
     , ucrUpdate
 
+    -- * SetAddonsConfigRequest
+    , SetAddonsConfigRequest
+    , setAddonsConfigRequest
+    , sacrZone
+    , sacrAddonsConfig
+    , sacrName
+    , sacrClusterId
+    , sacrProjectId
+
+    -- * StatusConditionCode
+    , StatusConditionCode (..)
+
     -- * NodeConfig
     , NodeConfig
     , nodeConfig
     , ncLocalSsdCount
     , ncDiskSizeGb
+    , ncTaints
     , ncOAuthScopes
     , ncServiceAccount
+    , ncAccelerators
     , ncImageType
     , ncMachineType
     , ncMetadata
+    , ncDiskType
     , ncLabels
+    , ncMinCPUPlatform
     , ncTags
     , ncPreemptible
 
@@ -101,25 +192,64 @@
     -- * Operation
     , Operation
     , operation
+    , oNodepoolConditions
     , oStatus
+    , oLocation
+    , oStartTime
     , oZone
     , oSelfLink
     , oName
     , oStatusMessage
+    , oEndTime
+    , oClusterConditions
     , oOperationType
     , oTargetLink
     , oDetail
 
+    -- * ClusterResourceLabels
+    , ClusterResourceLabels
+    , clusterResourceLabels
+    , crlAddtional
+
     -- * Empty
     , Empty
     , empty
 
+    -- * SetNodePoolAutoscalingRequest
+    , SetNodePoolAutoscalingRequest
+    , setNodePoolAutoscalingRequest
+    , snparAutoscaling
+    , snparZone
+    , snparNodePoolId
+    , snparName
+    , snparClusterId
+    , snparProjectId
+
+    -- * CompleteIPRotationRequest
+    , CompleteIPRotationRequest
+    , completeIPRotationRequest
+    , cirrZone
+    , cirrName
+    , cirrClusterId
+    , cirrProjectId
+
+    -- * OperationOperationType
+    , OperationOperationType (..)
+
     -- * NodeManagement
     , NodeManagement
     , nodeManagement
     , nmAutoUpgrade
+    , nmAutoRepair
     , nmUpgradeOptions
 
+    -- * NodeTaint
+    , NodeTaint
+    , nodeTaint
+    , ntEffect
+    , ntValue
+    , ntKey
+
     -- * NodePoolAutoscaling
     , NodePoolAutoscaling
     , nodePoolAutoscaling
@@ -127,12 +257,72 @@
     , npaEnabled
     , npaMinNodeCount
 
+    -- * SetMaintenancePolicyRequest
+    , SetMaintenancePolicyRequest
+    , setMaintenancePolicyRequest
+    , smprZone
+    , smprName
+    , smprClusterId
+    , smprMaintenancePolicy
+    , smprProjectId
+
+    -- * KubernetesDashboard
+    , KubernetesDashboard
+    , kubernetesDashboard
+    , kdDisabled
+
+    -- * ClientCertificateConfig
+    , ClientCertificateConfig
+    , clientCertificateConfig
+    , cccIssueClientCertificate
+
+    -- * SetLabelsRequest
+    , SetLabelsRequest
+    , setLabelsRequest
+    , slrResourceLabels
+    , slrZone
+    , slrName
+    , slrClusterId
+    , slrProjectId
+    , slrLabelFingerprint
+
+    -- * OperationStatus
+    , OperationStatus (..)
+
+    -- * MaintenanceWindow
+    , MaintenanceWindow
+    , maintenanceWindow
+    , mwDailyMaintenanceWindow
+
+    -- * IPAllocationPolicy
+    , IPAllocationPolicy
+    , ipAllocationPolicy
+    , iapServicesSecondaryRangeName
+    , iapNodeIPv4CIdR
+    , iapUseIPAliases
+    , iapClusterIPv4CIdR
+    , iapSubnetworkName
+    , iapClusterSecondaryRangeName
+    , iapNodeIPv4CIdRBlock
+    , iapServicesIPv4CIdR
+    , iapClusterIPv4CIdRBlock
+    , iapServicesIPv4CIdRBlock
+    , iapCreateSubnetwork
+
     -- * AddonsConfig
     , AddonsConfig
     , addonsConfig
+    , acNetworkPolicyConfig
     , acHorizontalPodAutoscaling
     , acHTTPLoadBalancing
+    , acKubernetesDashboard
 
+    -- * NetworkConfig
+    , NetworkConfig
+    , networkConfig
+    , ncNetwork
+    , ncSubnetwork
+
     -- * NodePool
     , NodePool
     , nodePool
@@ -145,22 +335,46 @@
     , npName
     , npStatusMessage
     , npVersion
+    , npConditions
     , npInstanceGroupURLs
 
     -- * SetNodePoolManagementRequest
     , SetNodePoolManagementRequest
     , setNodePoolManagementRequest
     , snpmrManagement
+    , snpmrZone
+    , snpmrNodePoolId
+    , snpmrName
+    , snpmrClusterId
+    , snpmrProjectId
 
+    -- * MasterAuthorizedNetworksConfig
+    , MasterAuthorizedNetworksConfig
+    , masterAuthorizedNetworksConfig
+    , mancEnabled
+    , mancCIdRBlocks
+
+    -- * LegacyAbac
+    , LegacyAbac
+    , legacyAbac
+    , laEnabled
+
     -- * MasterAuth
     , MasterAuth
     , masterAuth
     , maClientKey
     , maUsername
+    , maClientCertificateConfig
     , maClientCertificate
     , maPassword
     , maClusterCaCertificate
 
+    -- * StatusCondition
+    , StatusCondition
+    , statusCondition
+    , scCode
+    , scMessage
+
     -- * NodeConfigMetadata
     , NodeConfigMetadata
     , nodeConfigMetadata
@@ -180,12 +394,99 @@
     , scDefaultClusterVersion
     , scValidMasterVersions
 
+    -- * NetworkPolicyProvider
+    , NetworkPolicyProvider (..)
+
     -- * AutoUpgradeOptions
     , AutoUpgradeOptions
     , autoUpgradeOptions
     , auoAutoUpgradeStartTime
     , auoDescription
 
+    -- * SetNodePoolSizeRequest
+    , SetNodePoolSizeRequest
+    , setNodePoolSizeRequest
+    , snpsrNodeCount
+    , snpsrZone
+    , snpsrNodePoolId
+    , snpsrName
+    , snpsrClusterId
+    , snpsrProjectId
+
+    -- * Xgafv
+    , Xgafv (..)
+
+    -- * SetMonitoringServiceRequest
+    , SetMonitoringServiceRequest
+    , setMonitoringServiceRequest
+    , smsrZone
+    , smsrName
+    , smsrClusterId
+    , smsrProjectId
+    , smsrMonitoringService
+
+    -- * SetLoggingServiceRequest
+    , SetLoggingServiceRequest
+    , setLoggingServiceRequest
+    , slsrZone
+    , slsrName
+    , slsrClusterId
+    , slsrProjectId
+    , slsrLoggingService
+
+    -- * MaintenancePolicy
+    , MaintenancePolicy
+    , maintenancePolicy
+    , mpWindow
+
+    -- * CIdRBlock
+    , CIdRBlock
+    , cIdRBlock
+    , cirbCIdRBlock
+    , cirbDisplayName
+
+    -- * AcceleratorConfig
+    , AcceleratorConfig
+    , acceleratorConfig
+    , acAcceleratorCount
+    , acAcceleratorType
+
+    -- * SetLocationsRequest
+    , SetLocationsRequest
+    , setLocationsRequest
+    , sZone
+    , sName
+    , sClusterId
+    , sProjectId
+    , sLocations
+
+    -- * SetNetworkPolicyRequest
+    , SetNetworkPolicyRequest
+    , setNetworkPolicyRequest
+    , snprZone
+    , snprName
+    , snprClusterId
+    , snprProjectId
+    , snprNetworkPolicy
+
+    -- * PrivateClusterConfig
+    , PrivateClusterConfig
+    , privateClusterConfig
+    , pccEnablePrivateNodes
+    , pccEnablePrivateEndpoint
+    , pccPublicEndpoint
+    , pccMasterIPv4CIdRBlock
+    , pccPrivateEndpoint
+
+    -- * DailyMaintenanceWindow
+    , DailyMaintenanceWindow
+    , dailyMaintenanceWindow
+    , dmwStartTime
+    , dmwDuration
+
+    -- * NodePoolStatus
+    , NodePoolStatus (..)
+
     -- * ListClustersResponse
     , ListClustersResponse
     , listClustersResponse
@@ -198,6 +499,7 @@
     , cuDesiredNodePoolAutoscaling
     , cuDesiredAddonsConfig
     , cuDesiredNodePoolId
+    , cuDesiredMasterAuthorizedNetworksConfig
     , cuDesiredImageType
     , cuDesiredNodeVersion
     , cuDesiredMasterVersion
@@ -207,23 +509,52 @@
     -- * RollbackNodePoolUpgradeRequest
     , RollbackNodePoolUpgradeRequest
     , rollbackNodePoolUpgradeRequest
+    , rnpurZone
+    , rnpurNodePoolId
+    , rnpurName
+    , rnpurClusterId
+    , rnpurProjectId
 
+    -- * NetworkPolicy
+    , NetworkPolicy
+    , networkPolicy
+    , npEnabled
+    , npProvider
+
     -- * ListNodePoolsResponse
     , ListNodePoolsResponse
     , listNodePoolsResponse
     , lnprNodePools
 
+    -- * ClusterStatus
+    , ClusterStatus (..)
+
+    -- * NodeTaintEffect
+    , NodeTaintEffect (..)
+
     -- * CreateNodePoolRequest
     , CreateNodePoolRequest
     , createNodePoolRequest
+    , cnprParent
+    , cnprZone
     , cnprNodePool
+    , cnprClusterId
+    , cnprProjectId
+
+    -- * SetLabelsRequestResourceLabels
+    , SetLabelsRequestResourceLabels
+    , setLabelsRequestResourceLabels
+    , slrrlAddtional
+
+    -- * SetMasterAuthRequestAction
+    , SetMasterAuthRequestAction (..)
     ) where
 
 import           Network.Google.Container.Types.Product
 import           Network.Google.Container.Types.Sum
 import           Network.Google.Prelude
 
--- | Default request referring to version 'v1' of the Google Container Engine API. This contains the host and root path used as a starting point for constructing service requests.
+-- | Default request referring to version 'v1' of the Kubernetes Engine API. This contains the host and root path used as a starting point for constructing service requests.
 containerService :: ServiceConfig
 containerService
   = defaultService (ServiceId "container:v1")
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
@@ -20,1934 +20,5049 @@
 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.
-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.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lorOperations'
---
--- * 'lorMissingZones'
-listOperationsResponse
-    :: ListOperationsResponse
-listOperationsResponse =
-    ListOperationsResponse'
-    { _lorOperations = Nothing
-    , _lorMissingZones = Nothing
-    }
-
--- | A list of operations in the project in the specified zone.
-lorOperations :: Lens' ListOperationsResponse [Operation]
-lorOperations
-  = lens _lorOperations
-      (\ s a -> s{_lorOperations = a})
-      . _Default
-      . _Coerce
-
--- | 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) <*>
-                     (o .:? "missingZones" .!= mempty))
-
-instance ToJSON ListOperationsResponse where
-        toJSON ListOperationsResponse'{..}
-          = object
-              (catMaybes
-                 [("operations" .=) <$> _lorOperations,
-                  ("missingZones" .=) <$> _lorMissingZones])
-
--- | CreateClusterRequest creates a cluster.
---
--- /See:/ 'createClusterRequest' smart constructor.
-newtype CreateClusterRequest = CreateClusterRequest'
-    { _ccrCluster :: Maybe Cluster
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateClusterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccrCluster'
-createClusterRequest
-    :: CreateClusterRequest
-createClusterRequest =
-    CreateClusterRequest'
-    { _ccrCluster = Nothing
-    }
-
--- | A [cluster
--- resource](\/container-engine\/reference\/rest\/v1\/projects.zones.clusters)
-ccrCluster :: Lens' CreateClusterRequest (Maybe Cluster)
-ccrCluster
-  = lens _ccrCluster (\ s a -> s{_ccrCluster = a})
-
-instance FromJSON CreateClusterRequest where
-        parseJSON
-          = withObject "CreateClusterRequest"
-              (\ o -> CreateClusterRequest' <$> (o .:? "cluster"))
-
-instance ToJSON CreateClusterRequest where
-        toJSON CreateClusterRequest'{..}
-          = object (catMaybes [("cluster" .=) <$> _ccrCluster])
-
--- | A Google Container Engine cluster.
---
--- /See:/ 'cluster' smart constructor.
-data Cluster = Cluster'
-    { _cStatus                :: !(Maybe Text)
-    , _cNodePools             :: !(Maybe [NodePool])
-    , _cEnableKubernetesAlpha :: !(Maybe Bool)
-    , _cNodeConfig            :: !(Maybe NodeConfig)
-    , _cNodeIPv4CIdRSize      :: !(Maybe (Textual Int32))
-    , _cClusterIPv4CIdR       :: !(Maybe Text)
-    , _cInitialNodeCount      :: !(Maybe (Textual Int32))
-    , _cCurrentNodeVersion    :: !(Maybe Text)
-    , _cNetwork               :: !(Maybe Text)
-    , _cInitialClusterVersion :: !(Maybe Text)
-    , _cZone                  :: !(Maybe Text)
-    , _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)
-    , _cExpireTime            :: !(Maybe Text)
-    , _cLocations             :: !(Maybe [Text])
-    , _cLoggingService        :: !(Maybe Text)
-    , _cDescription           :: !(Maybe Text)
-    , _cInstanceGroupURLs     :: !(Maybe [Text])
-    , _cMonitoringService     :: !(Maybe Text)
-    , _cCreateTime            :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Cluster' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cStatus'
---
--- * 'cNodePools'
---
--- * 'cEnableKubernetesAlpha'
---
--- * 'cNodeConfig'
---
--- * 'cNodeIPv4CIdRSize'
---
--- * 'cClusterIPv4CIdR'
---
--- * 'cInitialNodeCount'
---
--- * 'cCurrentNodeVersion'
---
--- * 'cNetwork'
---
--- * 'cInitialClusterVersion'
---
--- * 'cZone'
---
--- * 'cAddonsConfig'
---
--- * 'cServicesIPv4CIdR'
---
--- * 'cMasterAuth'
---
--- * 'cSelfLink'
---
--- * 'cName'
---
--- * 'cCurrentMasterVersion'
---
--- * 'cStatusMessage'
---
--- * 'cSubnetwork'
---
--- * 'cCurrentNodeCount'
---
--- * 'cEndpoint'
---
--- * 'cExpireTime'
---
--- * 'cLocations'
---
--- * 'cLoggingService'
---
--- * 'cDescription'
---
--- * 'cInstanceGroupURLs'
---
--- * 'cMonitoringService'
---
--- * 'cCreateTime'
-cluster
-    :: Cluster
-cluster =
-    Cluster'
-    { _cStatus = Nothing
-    , _cNodePools = Nothing
-    , _cEnableKubernetesAlpha = Nothing
-    , _cNodeConfig = Nothing
-    , _cNodeIPv4CIdRSize = Nothing
-    , _cClusterIPv4CIdR = Nothing
-    , _cInitialNodeCount = Nothing
-    , _cCurrentNodeVersion = Nothing
-    , _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
-    , _cExpireTime = Nothing
-    , _cLocations = Nothing
-    , _cLoggingService = Nothing
-    , _cDescription = Nothing
-    , _cInstanceGroupURLs = Nothing
-    , _cMonitoringService = Nothing
-    , _cCreateTime = Nothing
-    }
-
--- | [Output only] The current status of this cluster.
-cStatus :: Lens' Cluster (Maybe Text)
-cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
-
--- | The node pools associated with this cluster. 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
-
--- | Kubernetes alpha features are enabled on this cluster. This includes
--- alpha API groups (e.g. v1alpha1) and features that may not be production
--- ready in the kubernetes version of the master and nodes. The cluster has
--- no SLA for uptime and master\/node upgrades are disabled. Alpha enabled
--- clusters are automatically deleted thirty days after creation.
-cEnableKubernetesAlpha :: Lens' Cluster (Maybe Bool)
-cEnableKubernetesAlpha
-  = lens _cEnableKubernetesAlpha
-      (\ s a -> s{_cEnableKubernetesAlpha = a})
-
--- | 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\`
--- range.
-cNodeIPv4CIdRSize :: Lens' Cluster (Maybe Int32)
-cNodeIPv4CIdRSize
-  = lens _cNodeIPv4CIdRSize
-      (\ s a -> s{_cNodeIPv4CIdRSize = a})
-      . mapping _Coerce
-
--- | The IP address range of the container pods in this cluster, in
--- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
--- notation (e.g. \`10.96.0.0\/14\`). Leave blank to have one automatically
--- chosen or specify a \`\/14\` block in \`10.0.0.0\/8\`.
-cClusterIPv4CIdR :: Lens' Cluster (Maybe Text)
-cClusterIPv4CIdR
-  = lens _cClusterIPv4CIdR
-      (\ s a -> s{_cClusterIPv4CIdR = a})
-
--- | The number of nodes to create in this cluster. You must ensure that your
--- Compute Engine resource quota 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
-      (\ s a -> s{_cInitialNodeCount = a})
-      . mapping _Coerce
-
--- | [Output only] The current version of the node software components. If
--- 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\/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 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)
-cInitialClusterVersion
-  = lens _cInitialClusterVersion
-      (\ s a -> s{_cInitialClusterVersion = a})
-
--- | [Output only] The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
-cZone :: Lens' Cluster (Maybe Text)
-cZone = lens _cZone (\ s a -> s{_cZone = a})
-
--- | 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.
-cServicesIPv4CIdR :: Lens' Cluster (Maybe Text)
-cServicesIPv4CIdR
-  = lens _cServicesIPv4CIdR
-      (\ s a -> s{_cServicesIPv4CIdR = a})
-
--- | The authentication information for accessing the master endpoint.
-cMasterAuth :: Lens' Cluster (Maybe MasterAuth)
-cMasterAuth
-  = lens _cMasterAuth (\ s a -> s{_cMasterAuth = a})
-
--- | [Output only] Server-defined URL for the resource.
-cSelfLink :: Lens' Cluster (Maybe Text)
-cSelfLink
-  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
-
--- | The name of this cluster. The name must be unique within this project
--- and zone, and can be up to 40 characters with the following
--- restrictions: * Lowercase letters, numbers, and hyphens only. * Must
--- start with a letter. * Must end with a number or a letter.
-cName :: Lens' Cluster (Maybe Text)
-cName = lens _cName (\ s a -> s{_cName = a})
-
--- | [Output only] The current software version of the master endpoint.
-cCurrentMasterVersion :: Lens' Cluster (Maybe Text)
-cCurrentMasterVersion
-  = lens _cCurrentMasterVersion
-      (\ s a -> s{_cCurrentMasterVersion = a})
-
--- | [Output only] Additional information about the current status of this
--- cluster, if available.
-cStatusMessage :: Lens' Cluster (Maybe Text)
-cStatusMessage
-  = lens _cStatusMessage
-      (\ s a -> s{_cStatusMessage = a})
-
--- | 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})
-
--- | [Output only] The time the cluster will be automatically deleted in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
-cExpireTime :: Lens' Cluster (Maybe Text)
-cExpireTime
-  = lens _cExpireTime (\ s a -> s{_cExpireTime = a})
-
--- | 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
-      (\ s a -> s{_cLoggingService = a})
-
--- | An optional description of this cluster.
-cDescription :: Lens' Cluster (Maybe Text)
-cDescription
-  = lens _cDescription (\ s a -> s{_cDescription = a})
-
--- | [Output only] The resource URLs of [instance
--- groups](\/compute\/docs\/instance-groups\/) associated with this
--- cluster.
-cInstanceGroupURLs :: Lens' Cluster [Text]
-cInstanceGroupURLs
-  = lens _cInstanceGroupURLs
-      (\ s a -> s{_cInstanceGroupURLs = a})
-      . _Default
-      . _Coerce
-
--- | The monitoring service 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
-      (\ s a -> s{_cMonitoringService = a})
-
--- | [Output only] The time the cluster was created, in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
-cCreateTime :: Lens' Cluster (Maybe Text)
-cCreateTime
-  = lens _cCreateTime (\ s a -> s{_cCreateTime = a})
-
-instance FromJSON Cluster where
-        parseJSON
-          = withObject "Cluster"
-              (\ o ->
-                 Cluster' <$>
-                   (o .:? "status") <*> (o .:? "nodePools" .!= mempty)
-                     <*> (o .:? "enableKubernetesAlpha")
-                     <*> (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 .:? "expireTime")
-                     <*> (o .:? "locations" .!= mempty)
-                     <*> (o .:? "loggingService")
-                     <*> (o .:? "description")
-                     <*> (o .:? "instanceGroupUrls" .!= mempty)
-                     <*> (o .:? "monitoringService")
-                     <*> (o .:? "createTime"))
-
-instance ToJSON Cluster where
-        toJSON Cluster'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _cStatus,
-                  ("nodePools" .=) <$> _cNodePools,
-                  ("enableKubernetesAlpha" .=) <$>
-                    _cEnableKubernetesAlpha,
-                  ("nodeConfig" .=) <$> _cNodeConfig,
-                  ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
-                  ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
-                  ("initialNodeCount" .=) <$> _cInitialNodeCount,
-                  ("currentNodeVersion" .=) <$> _cCurrentNodeVersion,
-                  ("network" .=) <$> _cNetwork,
-                  ("initialClusterVersion" .=) <$>
-                    _cInitialClusterVersion,
-                  ("zone" .=) <$> _cZone,
-                  ("addonsConfig" .=) <$> _cAddonsConfig,
-                  ("servicesIpv4Cidr" .=) <$> _cServicesIPv4CIdR,
-                  ("masterAuth" .=) <$> _cMasterAuth,
-                  ("selfLink" .=) <$> _cSelfLink,
-                  ("name" .=) <$> _cName,
-                  ("currentMasterVersion" .=) <$>
-                    _cCurrentMasterVersion,
-                  ("statusMessage" .=) <$> _cStatusMessage,
-                  ("subnetwork" .=) <$> _cSubnetwork,
-                  ("currentNodeCount" .=) <$> _cCurrentNodeCount,
-                  ("endpoint" .=) <$> _cEndpoint,
-                  ("expireTime" .=) <$> _cExpireTime,
-                  ("locations" .=) <$> _cLocations,
-                  ("loggingService" .=) <$> _cLoggingService,
-                  ("description" .=) <$> _cDescription,
-                  ("instanceGroupUrls" .=) <$> _cInstanceGroupURLs,
-                  ("monitoringService" .=) <$> _cMonitoringService,
-                  ("createTime" .=) <$> _cCreateTime])
-
--- | CancelOperationRequest cancels a single operation.
---
--- /See:/ 'cancelOperationRequest' smart constructor.
-data CancelOperationRequest =
-    CancelOperationRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
---
-cancelOperationRequest
-    :: CancelOperationRequest
-cancelOperationRequest = CancelOperationRequest'
-
-instance FromJSON CancelOperationRequest where
-        parseJSON
-          = withObject "CancelOperationRequest"
-              (\ o -> pure CancelOperationRequest')
-
-instance ToJSON CancelOperationRequest where
-        toJSON = const emptyObject
-
--- | UpdateClusterRequest updates the settings of a cluster.
---
--- /See:/ 'updateClusterRequest' smart constructor.
-newtype UpdateClusterRequest = UpdateClusterRequest'
-    { _ucrUpdate :: Maybe ClusterUpdate
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UpdateClusterRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucrUpdate'
-updateClusterRequest
-    :: UpdateClusterRequest
-updateClusterRequest =
-    UpdateClusterRequest'
-    { _ucrUpdate = Nothing
-    }
-
--- | A description of the update.
-ucrUpdate :: Lens' UpdateClusterRequest (Maybe ClusterUpdate)
-ucrUpdate
-  = lens _ucrUpdate (\ s a -> s{_ucrUpdate = a})
-
-instance FromJSON UpdateClusterRequest where
-        parseJSON
-          = withObject "UpdateClusterRequest"
-              (\ o -> UpdateClusterRequest' <$> (o .:? "update"))
-
-instance ToJSON UpdateClusterRequest where
-        toJSON UpdateClusterRequest'{..}
-          = object (catMaybes [("update" .=) <$> _ucrUpdate])
-
--- | Parameters that describe the nodes in a cluster.
---
--- /See:/ 'nodeConfig' smart constructor.
-data NodeConfig = NodeConfig'
-    { _ncLocalSsdCount  :: !(Maybe (Textual Int32))
-    , _ncDiskSizeGb     :: !(Maybe (Textual Int32))
-    , _ncOAuthScopes    :: !(Maybe [Text])
-    , _ncServiceAccount :: !(Maybe Text)
-    , _ncImageType      :: !(Maybe Text)
-    , _ncMachineType    :: !(Maybe Text)
-    , _ncMetadata       :: !(Maybe NodeConfigMetadata)
-    , _ncLabels         :: !(Maybe NodeConfigLabels)
-    , _ncTags           :: !(Maybe [Text])
-    , _ncPreemptible    :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodeConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncLocalSsdCount'
---
--- * 'ncDiskSizeGb'
---
--- * 'ncOAuthScopes'
---
--- * 'ncServiceAccount'
---
--- * 'ncImageType'
---
--- * 'ncMachineType'
---
--- * 'ncMetadata'
---
--- * 'ncLabels'
---
--- * 'ncTags'
---
--- * 'ncPreemptible'
-nodeConfig
-    :: NodeConfig
-nodeConfig =
-    NodeConfig'
-    { _ncLocalSsdCount = Nothing
-    , _ncDiskSizeGb = Nothing
-    , _ncOAuthScopes = Nothing
-    , _ncServiceAccount = Nothing
-    , _ncImageType = Nothing
-    , _ncMachineType = Nothing
-    , _ncMetadata = Nothing
-    , _ncLabels = Nothing
-    , _ncTags = Nothing
-    , _ncPreemptible = Nothing
-    }
-
--- | The number of local SSD disks to be attached to the node. The limit for
--- this value is dependant upon the maximum number of disks available on a
--- machine per zone. See:
--- https:\/\/cloud.google.com\/compute\/docs\/disks\/local-ssd#local_ssd_limits
--- for more information.
-ncLocalSsdCount :: Lens' NodeConfig (Maybe Int32)
-ncLocalSsdCount
-  = lens _ncLocalSsdCount
-      (\ s a -> s{_ncLocalSsdCount = a})
-      . mapping _Coerce
-
--- | Size of the disk attached to each node, specified in GB. The smallest
--- allowed disk size is 10GB. If unspecified, the default disk size is
--- 100GB.
-ncDiskSizeGb :: Lens' NodeConfig (Maybe Int32)
-ncDiskSizeGb
-  = lens _ncDiskSizeGb (\ s a -> s{_ncDiskSizeGb = a})
-      . mapping _Coerce
-
--- | The set of Google API scopes to be made available on all of the node VMs
--- under the \"default\" service account. The following scopes are
--- recommended, but not required, and by default are not included: *
--- \`https:\/\/www.googleapis.com\/auth\/compute\` is required for mounting
--- persistent storage on your nodes. *
--- \`https:\/\/www.googleapis.com\/auth\/devstorage.read_only\` is required
--- for communicating with **gcr.io** (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
-      (\ s a -> s{_ncOAuthScopes = a})
-      . _Default
-      . _Coerce
-
--- | The Google Cloud Platform Service Account to be used by the node VMs. If
--- no Service Account is specified, the \"default\" service account is
--- used.
-ncServiceAccount :: Lens' NodeConfig (Maybe Text)
-ncServiceAccount
-  = lens _ncServiceAccount
-      (\ s a -> s{_ncServiceAccount = a})
-
--- | The image type to use for this node. Note that for a given image type,
--- the latest version of it will be used.
-ncImageType :: Lens' NodeConfig (Maybe Text)
-ncImageType
-  = lens _ncImageType (\ s a -> s{_ncImageType = a})
-
--- | The name of a Google Compute Engine [machine
--- type](\/compute\/docs\/machine-types) (e.g. \`n1-standard-1\`). If
--- unspecified, the default machine type is \`n1-standard-1\`.
-ncMachineType :: Lens' NodeConfig (Maybe Text)
-ncMachineType
-  = lens _ncMachineType
-      (\ s a -> s{_ncMachineType = a})
-
--- | 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})
-
--- | The map of Kubernetes labels (key\/value pairs) to be applied to each
--- node. These will added in addition to any default label(s) that
--- Kubernetes may apply to the node. In case of conflict in label keys, the
--- applied set may differ depending on the Kubernetes version -- it\'s best
--- to assume the behavior is undefined and conflicts should be avoided. For
--- more information, including usage and the valid values, see:
--- http:\/\/kubernetes.io\/v1.1\/docs\/user-guide\/labels.html
-ncLabels :: Lens' NodeConfig (Maybe NodeConfigLabels)
-ncLabels = lens _ncLabels (\ s a -> s{_ncLabels = a})
-
--- | The list of instance tags applied to all nodes. Tags are used to
--- identify valid sources or targets for network firewalls and are
--- specified by the client during cluster or node pool creation. Each tag
--- within the list must comply with RFC1035.
-ncTags :: Lens' NodeConfig [Text]
-ncTags
-  = lens _ncTags (\ s a -> s{_ncTags = a}) . _Default .
-      _Coerce
-
--- | Whether the nodes are created as preemptible VM instances. See:
--- https:\/\/cloud.google.com\/compute\/docs\/instances\/preemptible for
--- more inforamtion about preemptible VM instances.
-ncPreemptible :: Lens' NodeConfig (Maybe Bool)
-ncPreemptible
-  = lens _ncPreemptible
-      (\ s a -> s{_ncPreemptible = a})
-
-instance FromJSON NodeConfig where
-        parseJSON
-          = withObject "NodeConfig"
-              (\ o ->
-                 NodeConfig' <$>
-                   (o .:? "localSsdCount") <*> (o .:? "diskSizeGb") <*>
-                     (o .:? "oauthScopes" .!= mempty)
-                     <*> (o .:? "serviceAccount")
-                     <*> (o .:? "imageType")
-                     <*> (o .:? "machineType")
-                     <*> (o .:? "metadata")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "tags" .!= mempty)
-                     <*> (o .:? "preemptible"))
-
-instance ToJSON NodeConfig where
-        toJSON NodeConfig'{..}
-          = object
-              (catMaybes
-                 [("localSsdCount" .=) <$> _ncLocalSsdCount,
-                  ("diskSizeGb" .=) <$> _ncDiskSizeGb,
-                  ("oauthScopes" .=) <$> _ncOAuthScopes,
-                  ("serviceAccount" .=) <$> _ncServiceAccount,
-                  ("imageType" .=) <$> _ncImageType,
-                  ("machineType" .=) <$> _ncMachineType,
-                  ("metadata" .=) <$> _ncMetadata,
-                  ("labels" .=) <$> _ncLabels, ("tags" .=) <$> _ncTags,
-                  ("preemptible" .=) <$> _ncPreemptible])
-
--- | 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'
-    { _oStatus        :: !(Maybe Text)
-    , _oZone          :: !(Maybe Text)
-    , _oSelfLink      :: !(Maybe Text)
-    , _oName          :: !(Maybe Text)
-    , _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.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'oStatus'
---
--- * 'oZone'
---
--- * 'oSelfLink'
---
--- * 'oName'
---
--- * 'oStatusMessage'
---
--- * 'oOperationType'
---
--- * 'oTargetLink'
---
--- * 'oDetail'
-operation
-    :: Operation
-operation =
-    Operation'
-    { _oStatus = Nothing
-    , _oZone = Nothing
-    , _oSelfLink = Nothing
-    , _oName = Nothing
-    , _oStatusMessage = Nothing
-    , _oOperationType = Nothing
-    , _oTargetLink = Nothing
-    , _oDetail = Nothing
-    }
-
--- | The current status of the operation.
-oStatus :: Lens' Operation (Maybe Text)
-oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
-
--- | The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) in which the operation is
--- taking place.
-oZone :: Lens' Operation (Maybe Text)
-oZone = lens _oZone (\ s a -> s{_oZone = a})
-
--- | Server-defined URL for the resource.
-oSelfLink :: Lens' Operation (Maybe Text)
-oSelfLink
-  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
-
--- | The server-assigned ID for the operation.
-oName :: Lens' Operation (Maybe Text)
-oName = lens _oName (\ s a -> s{_oName = a})
-
--- | If an error has occurred, a textual description of the error.
-oStatusMessage :: Lens' Operation (Maybe Text)
-oStatusMessage
-  = lens _oStatusMessage
-      (\ s a -> s{_oStatusMessage = a})
-
--- | The operation type.
-oOperationType :: Lens' Operation (Maybe Text)
-oOperationType
-  = lens _oOperationType
-      (\ s a -> s{_oOperationType = a})
-
--- | Server-defined URL for the target of the operation.
-oTargetLink :: Lens' Operation (Maybe Text)
-oTargetLink
-  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
-
--- | 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' <$>
-                   (o .:? "status") <*> (o .:? "zone") <*>
-                     (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "operationType")
-                     <*> (o .:? "targetLink")
-                     <*> (o .:? "detail"))
-
-instance ToJSON Operation where
-        toJSON Operation'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _oStatus, ("zone" .=) <$> _oZone,
-                  ("selfLink" .=) <$> _oSelfLink,
-                  ("name" .=) <$> _oName,
-                  ("statusMessage" .=) <$> _oStatusMessage,
-                  ("operationType" .=) <$> _oOperationType,
-                  ("targetLink" .=) <$> _oTargetLink,
-                  ("detail" .=) <$> _oDetail])
-
--- | A generic empty message that you can re-use to avoid defining duplicated
--- empty messages in your APIs. A typical example is to use it as the
--- request or the response type of an API method. For instance: service Foo
--- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
--- JSON representation for \`Empty\` is empty JSON object \`{}\`.
---
--- /See:/ 'empty' smart constructor.
-data Empty =
-    Empty'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Empty' with the minimum fields required to make a request.
---
-empty
-    :: Empty
-empty = Empty'
-
-instance FromJSON Empty where
-        parseJSON = withObject "Empty" (\ o -> pure Empty')
-
-instance ToJSON Empty where
-        toJSON = const emptyObject
-
--- | NodeManagement defines the set of node management services turned on for
--- the node pool.
---
--- /See:/ 'nodeManagement' smart constructor.
-data NodeManagement = NodeManagement'
-    { _nmAutoUpgrade    :: !(Maybe Bool)
-    , _nmUpgradeOptions :: !(Maybe AutoUpgradeOptions)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodeManagement' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nmAutoUpgrade'
---
--- * 'nmUpgradeOptions'
-nodeManagement
-    :: NodeManagement
-nodeManagement =
-    NodeManagement'
-    { _nmAutoUpgrade = Nothing
-    , _nmUpgradeOptions = Nothing
-    }
-
--- | Whether the nodes will be automatically upgraded.
-nmAutoUpgrade :: Lens' NodeManagement (Maybe Bool)
-nmAutoUpgrade
-  = lens _nmAutoUpgrade
-      (\ s a -> s{_nmAutoUpgrade = a})
-
--- | Specifies the Auto Upgrade knobs for the node pool.
-nmUpgradeOptions :: Lens' NodeManagement (Maybe AutoUpgradeOptions)
-nmUpgradeOptions
-  = lens _nmUpgradeOptions
-      (\ s a -> s{_nmUpgradeOptions = a})
-
-instance FromJSON NodeManagement where
-        parseJSON
-          = withObject "NodeManagement"
-              (\ o ->
-                 NodeManagement' <$>
-                   (o .:? "autoUpgrade") <*> (o .:? "upgradeOptions"))
-
-instance ToJSON NodeManagement where
-        toJSON NodeManagement'{..}
-          = object
-              (catMaybes
-                 [("autoUpgrade" .=) <$> _nmAutoUpgrade,
-                  ("upgradeOptions" .=) <$> _nmUpgradeOptions])
-
--- | NodePoolAutoscaling contains information required by cluster autoscaler
--- to adjust the size of the node pool to the current cluster usage.
---
--- /See:/ 'nodePoolAutoscaling' smart constructor.
-data NodePoolAutoscaling = NodePoolAutoscaling'
-    { _npaMaxNodeCount :: !(Maybe (Textual Int32))
-    , _npaEnabled      :: !(Maybe Bool)
-    , _npaMinNodeCount :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodePoolAutoscaling' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'npaMaxNodeCount'
---
--- * 'npaEnabled'
---
--- * 'npaMinNodeCount'
-nodePoolAutoscaling
-    :: NodePoolAutoscaling
-nodePoolAutoscaling =
-    NodePoolAutoscaling'
-    { _npaMaxNodeCount = Nothing
-    , _npaEnabled = Nothing
-    , _npaMinNodeCount = Nothing
-    }
-
--- | Maximum number of nodes in the NodePool. Must be >= min_node_count.
--- There has to enough quota to scale up the cluster.
-npaMaxNodeCount :: Lens' NodePoolAutoscaling (Maybe Int32)
-npaMaxNodeCount
-  = lens _npaMaxNodeCount
-      (\ s a -> s{_npaMaxNodeCount = a})
-      . mapping _Coerce
-
--- | Is autoscaling enabled for this node pool.
-npaEnabled :: Lens' NodePoolAutoscaling (Maybe Bool)
-npaEnabled
-  = lens _npaEnabled (\ s a -> s{_npaEnabled = a})
-
--- | Minimum number of nodes in the NodePool. Must be >= 1 and \<=
--- max_node_count.
-npaMinNodeCount :: Lens' NodePoolAutoscaling (Maybe Int32)
-npaMinNodeCount
-  = lens _npaMinNodeCount
-      (\ s a -> s{_npaMinNodeCount = a})
-      . mapping _Coerce
-
-instance FromJSON NodePoolAutoscaling where
-        parseJSON
-          = withObject "NodePoolAutoscaling"
-              (\ o ->
-                 NodePoolAutoscaling' <$>
-                   (o .:? "maxNodeCount") <*> (o .:? "enabled") <*>
-                     (o .:? "minNodeCount"))
-
-instance ToJSON NodePoolAutoscaling where
-        toJSON NodePoolAutoscaling'{..}
-          = object
-              (catMaybes
-                 [("maxNodeCount" .=) <$> _npaMaxNodeCount,
-                  ("enabled" .=) <$> _npaEnabled,
-                  ("minNodeCount" .=) <$> _npaMinNodeCount])
-
--- | 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)
-    , _npAutoscaling       :: !(Maybe NodePoolAutoscaling)
-    , _npConfig            :: !(Maybe NodeConfig)
-    , _npInitialNodeCount  :: !(Maybe (Textual Int32))
-    , _npManagement        :: !(Maybe NodeManagement)
-    , _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'
---
--- * 'npAutoscaling'
---
--- * 'npConfig'
---
--- * 'npInitialNodeCount'
---
--- * 'npManagement'
---
--- * 'npSelfLink'
---
--- * 'npName'
---
--- * 'npStatusMessage'
---
--- * 'npVersion'
---
--- * 'npInstanceGroupURLs'
-nodePool
-    :: NodePool
-nodePool =
-    NodePool'
-    { _npStatus = Nothing
-    , _npAutoscaling = Nothing
-    , _npConfig = Nothing
-    , _npInitialNodeCount = Nothing
-    , _npManagement = Nothing
-    , _npSelfLink = Nothing
-    , _npName = Nothing
-    , _npStatusMessage = Nothing
-    , _npVersion = Nothing
-    , _npInstanceGroupURLs = Nothing
-    }
-
--- | [Output only] The status of the nodes in this pool instance.
-npStatus :: Lens' NodePool (Maybe Text)
-npStatus = lens _npStatus (\ s a -> s{_npStatus = a})
-
--- | Autoscaler configuration for this NodePool. Autoscaler is enabled only
--- if a valid configuration is present.
-npAutoscaling :: Lens' NodePool (Maybe NodePoolAutoscaling)
-npAutoscaling
-  = lens _npAutoscaling
-      (\ s a -> s{_npAutoscaling = 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
-
--- | NodeManagement configuration for this NodePool.
-npManagement :: Lens' NodePool (Maybe NodeManagement)
-npManagement
-  = lens _npManagement (\ s a -> s{_npManagement = a})
-
--- | [Output only] 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})
-
--- | [Output only] 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 .:? "autoscaling") <*>
-                     (o .:? "config")
-                     <*> (o .:? "initialNodeCount")
-                     <*> (o .:? "management")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "statusMessage")
-                     <*> (o .:? "version")
-                     <*> (o .:? "instanceGroupUrls" .!= mempty))
-
-instance ToJSON NodePool where
-        toJSON NodePool'{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _npStatus,
-                  ("autoscaling" .=) <$> _npAutoscaling,
-                  ("config" .=) <$> _npConfig,
-                  ("initialNodeCount" .=) <$> _npInitialNodeCount,
-                  ("management" .=) <$> _npManagement,
-                  ("selfLink" .=) <$> _npSelfLink,
-                  ("name" .=) <$> _npName,
-                  ("statusMessage" .=) <$> _npStatusMessage,
-                  ("version" .=) <$> _npVersion,
-                  ("instanceGroupUrls" .=) <$> _npInstanceGroupURLs])
-
--- | SetNodePoolManagementRequest sets the node management properties of a
--- node pool.
---
--- /See:/ 'setNodePoolManagementRequest' smart constructor.
-newtype SetNodePoolManagementRequest = SetNodePoolManagementRequest'
-    { _snpmrManagement :: Maybe NodeManagement
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SetNodePoolManagementRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'snpmrManagement'
-setNodePoolManagementRequest
-    :: SetNodePoolManagementRequest
-setNodePoolManagementRequest =
-    SetNodePoolManagementRequest'
-    { _snpmrManagement = Nothing
-    }
-
--- | NodeManagement configuration for the node pool.
-snpmrManagement :: Lens' SetNodePoolManagementRequest (Maybe NodeManagement)
-snpmrManagement
-  = lens _snpmrManagement
-      (\ s a -> s{_snpmrManagement = a})
-
-instance FromJSON SetNodePoolManagementRequest where
-        parseJSON
-          = withObject "SetNodePoolManagementRequest"
-              (\ o ->
-                 SetNodePoolManagementRequest' <$>
-                   (o .:? "management"))
-
-instance ToJSON SetNodePoolManagementRequest where
-        toJSON SetNodePoolManagementRequest'{..}
-          = object
-              (catMaybes [("management" .=) <$> _snpmrManagement])
-
--- | The authentication information for accessing the master endpoint.
--- Authentication can be done using HTTP basic auth or using client
--- certificates.
---
--- /See:/ 'masterAuth' smart constructor.
-data MasterAuth = MasterAuth'
-    { _maClientKey            :: !(Maybe Text)
-    , _maUsername             :: !(Maybe Text)
-    , _maClientCertificate    :: !(Maybe Text)
-    , _maPassword             :: !(Maybe Text)
-    , _maClusterCaCertificate :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MasterAuth' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'maClientKey'
---
--- * 'maUsername'
---
--- * 'maClientCertificate'
---
--- * 'maPassword'
---
--- * 'maClusterCaCertificate'
-masterAuth
-    :: MasterAuth
-masterAuth =
-    MasterAuth'
-    { _maClientKey = Nothing
-    , _maUsername = Nothing
-    , _maClientCertificate = Nothing
-    , _maPassword = Nothing
-    , _maClusterCaCertificate = Nothing
-    }
-
--- | [Output only] Base64-encoded private key used by clients to authenticate
--- to the cluster endpoint.
-maClientKey :: Lens' MasterAuth (Maybe Text)
-maClientKey
-  = lens _maClientKey (\ s a -> s{_maClientKey = a})
-
--- | The username to use for HTTP basic authentication 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
--- 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 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
--- trust for the cluster.
-maClusterCaCertificate :: Lens' MasterAuth (Maybe Text)
-maClusterCaCertificate
-  = lens _maClusterCaCertificate
-      (\ s a -> s{_maClusterCaCertificate = a})
-
-instance FromJSON MasterAuth where
-        parseJSON
-          = withObject "MasterAuth"
-              (\ o ->
-                 MasterAuth' <$>
-                   (o .:? "clientKey") <*> (o .:? "username") <*>
-                     (o .:? "clientCertificate")
-                     <*> (o .:? "password")
-                     <*> (o .:? "clusterCaCertificate"))
-
-instance ToJSON MasterAuth where
-        toJSON MasterAuth'{..}
-          = object
-              (catMaybes
-                 [("clientKey" .=) <$> _maClientKey,
-                  ("username" .=) <$> _maUsername,
-                  ("clientCertificate" .=) <$> _maClientCertificate,
-                  ("password" .=) <$> _maPassword,
-                  ("clusterCaCertificate" .=) <$>
-                    _maClusterCaCertificate])
-
--- | 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
-
--- | The map of Kubernetes labels (key\/value pairs) to be applied to each
--- node. These will added in addition to any default label(s) that
--- Kubernetes may apply to the node. In case of conflict in label keys, the
--- applied set may differ depending on the Kubernetes version -- it\'s best
--- to assume the behavior is undefined and conflicts should be avoided. For
--- more information, including usage and the valid values, see:
--- http:\/\/kubernetes.io\/v1.1\/docs\/user-guide\/labels.html
---
--- /See:/ 'nodeConfigLabels' smart constructor.
-newtype NodeConfigLabels = NodeConfigLabels'
-    { _nclAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NodeConfigLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'nclAddtional'
-nodeConfigLabels
-    :: HashMap Text Text -- ^ 'nclAddtional'
-    -> NodeConfigLabels
-nodeConfigLabels pNclAddtional_ =
-    NodeConfigLabels'
-    { _nclAddtional = _Coerce # pNclAddtional_
-    }
-
-nclAddtional :: Lens' NodeConfigLabels (HashMap Text Text)
-nclAddtional
-  = lens _nclAddtional (\ s a -> s{_nclAddtional = a})
-      . _Coerce
-
-instance FromJSON NodeConfigLabels where
-        parseJSON
-          = withObject "NodeConfigLabels"
-              (\ o -> NodeConfigLabels' <$> (parseJSONObject o))
-
-instance ToJSON NodeConfigLabels where
-        toJSON = toJSON . _nclAddtional
-
--- | Container Engine service configuration.
---
--- /See:/ 'serverConfig' smart constructor.
-data ServerConfig = ServerConfig'
-    { _scDefaultImageType      :: !(Maybe Text)
-    , _scValidNodeVersions     :: !(Maybe [Text])
-    , _scValidImageTypes       :: !(Maybe [Text])
-    , _scDefaultClusterVersion :: !(Maybe Text)
-    , _scValidMasterVersions   :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ServerConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scDefaultImageType'
---
--- * 'scValidNodeVersions'
---
--- * 'scValidImageTypes'
---
--- * 'scDefaultClusterVersion'
---
--- * 'scValidMasterVersions'
-serverConfig
-    :: ServerConfig
-serverConfig =
-    ServerConfig'
-    { _scDefaultImageType = Nothing
-    , _scValidNodeVersions = Nothing
-    , _scValidImageTypes = Nothing
-    , _scDefaultClusterVersion = Nothing
-    , _scValidMasterVersions = Nothing
-    }
-
--- | Default image type.
-scDefaultImageType :: Lens' ServerConfig (Maybe Text)
-scDefaultImageType
-  = lens _scDefaultImageType
-      (\ s a -> s{_scDefaultImageType = a})
-
--- | List of valid node upgrade target versions.
-scValidNodeVersions :: Lens' ServerConfig [Text]
-scValidNodeVersions
-  = lens _scValidNodeVersions
-      (\ s a -> s{_scValidNodeVersions = a})
-      . _Default
-      . _Coerce
-
--- | List of valid image types.
-scValidImageTypes :: Lens' ServerConfig [Text]
-scValidImageTypes
-  = lens _scValidImageTypes
-      (\ s a -> s{_scValidImageTypes = a})
-      . _Default
-      . _Coerce
-
--- | Version of Kubernetes the service deploys by default.
-scDefaultClusterVersion :: Lens' ServerConfig (Maybe Text)
-scDefaultClusterVersion
-  = lens _scDefaultClusterVersion
-      (\ s a -> s{_scDefaultClusterVersion = a})
-
--- | List of valid master versions.
-scValidMasterVersions :: Lens' ServerConfig [Text]
-scValidMasterVersions
-  = lens _scValidMasterVersions
-      (\ s a -> s{_scValidMasterVersions = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ServerConfig where
-        parseJSON
-          = withObject "ServerConfig"
-              (\ o ->
-                 ServerConfig' <$>
-                   (o .:? "defaultImageType") <*>
-                     (o .:? "validNodeVersions" .!= mempty)
-                     <*> (o .:? "validImageTypes" .!= mempty)
-                     <*> (o .:? "defaultClusterVersion")
-                     <*> (o .:? "validMasterVersions" .!= mempty))
-
-instance ToJSON ServerConfig where
-        toJSON ServerConfig'{..}
-          = object
-              (catMaybes
-                 [("defaultImageType" .=) <$> _scDefaultImageType,
-                  ("validNodeVersions" .=) <$> _scValidNodeVersions,
-                  ("validImageTypes" .=) <$> _scValidImageTypes,
-                  ("defaultClusterVersion" .=) <$>
-                    _scDefaultClusterVersion,
-                  ("validMasterVersions" .=) <$>
-                    _scValidMasterVersions])
-
--- | AutoUpgradeOptions defines the set of options for the user to control
--- how the Auto Upgrades will proceed.
---
--- /See:/ 'autoUpgradeOptions' smart constructor.
-data AutoUpgradeOptions = AutoUpgradeOptions'
-    { _auoAutoUpgradeStartTime :: !(Maybe Text)
-    , _auoDescription          :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutoUpgradeOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'auoAutoUpgradeStartTime'
---
--- * 'auoDescription'
-autoUpgradeOptions
-    :: AutoUpgradeOptions
-autoUpgradeOptions =
-    AutoUpgradeOptions'
-    { _auoAutoUpgradeStartTime = Nothing
-    , _auoDescription = Nothing
-    }
-
--- | [Output only] This field is set when upgrades are about to commence with
--- the approximate start time for the upgrades, in
--- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
-auoAutoUpgradeStartTime :: Lens' AutoUpgradeOptions (Maybe Text)
-auoAutoUpgradeStartTime
-  = lens _auoAutoUpgradeStartTime
-      (\ s a -> s{_auoAutoUpgradeStartTime = a})
-
--- | [Output only] This field is set when upgrades are about to commence with
--- the description of the upgrade.
-auoDescription :: Lens' AutoUpgradeOptions (Maybe Text)
-auoDescription
-  = lens _auoDescription
-      (\ s a -> s{_auoDescription = a})
-
-instance FromJSON AutoUpgradeOptions where
-        parseJSON
-          = withObject "AutoUpgradeOptions"
-              (\ o ->
-                 AutoUpgradeOptions' <$>
-                   (o .:? "autoUpgradeStartTime") <*>
-                     (o .:? "description"))
-
-instance ToJSON AutoUpgradeOptions where
-        toJSON AutoUpgradeOptions'{..}
-          = object
-              (catMaybes
-                 [("autoUpgradeStartTime" .=) <$>
-                    _auoAutoUpgradeStartTime,
-                  ("description" .=) <$> _auoDescription])
-
--- | ListClustersResponse is the result of ListClustersRequest.
---
--- /See:/ 'listClustersResponse' smart constructor.
-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.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcrClusters'
---
--- * 'lcrMissingZones'
-listClustersResponse
-    :: ListClustersResponse
-listClustersResponse =
-    ListClustersResponse'
-    { _lcrClusters = Nothing
-    , _lcrMissingZones = Nothing
-    }
-
--- | A list of clusters in the project in the specified zone, or across all
--- ones.
-lcrClusters :: Lens' ListClustersResponse [Cluster]
-lcrClusters
-  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
-      _Default
-      . _Coerce
-
--- | 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) <*>
-                     (o .:? "missingZones" .!= mempty))
-
-instance ToJSON ListClustersResponse where
-        toJSON ListClustersResponse'{..}
-          = object
-              (catMaybes
-                 [("clusters" .=) <$> _lcrClusters,
-                  ("missingZones" .=) <$> _lcrMissingZones])
-
--- | 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.
-data ClusterUpdate = ClusterUpdate'
-    { _cuDesiredNodePoolAutoscaling :: !(Maybe NodePoolAutoscaling)
-    , _cuDesiredAddonsConfig        :: !(Maybe AddonsConfig)
-    , _cuDesiredNodePoolId          :: !(Maybe Text)
-    , _cuDesiredImageType           :: !(Maybe Text)
-    , _cuDesiredNodeVersion         :: !(Maybe Text)
-    , _cuDesiredMasterVersion       :: !(Maybe Text)
-    , _cuDesiredLocations           :: !(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:
---
--- * 'cuDesiredNodePoolAutoscaling'
---
--- * 'cuDesiredAddonsConfig'
---
--- * 'cuDesiredNodePoolId'
---
--- * 'cuDesiredImageType'
---
--- * 'cuDesiredNodeVersion'
---
--- * 'cuDesiredMasterVersion'
---
--- * 'cuDesiredLocations'
---
--- * 'cuDesiredMonitoringService'
-clusterUpdate
-    :: ClusterUpdate
-clusterUpdate =
-    ClusterUpdate'
-    { _cuDesiredNodePoolAutoscaling = Nothing
-    , _cuDesiredAddonsConfig = Nothing
-    , _cuDesiredNodePoolId = Nothing
-    , _cuDesiredImageType = Nothing
-    , _cuDesiredNodeVersion = Nothing
-    , _cuDesiredMasterVersion = Nothing
-    , _cuDesiredLocations = Nothing
-    , _cuDesiredMonitoringService = Nothing
-    }
-
--- | Autoscaler configuration for the node pool specified in
--- desired_node_pool_id. If there is only one pool in the cluster and
--- desired_node_pool_id is not provided then the change applies to that
--- single node pool.
-cuDesiredNodePoolAutoscaling :: Lens' ClusterUpdate (Maybe NodePoolAutoscaling)
-cuDesiredNodePoolAutoscaling
-  = lens _cuDesiredNodePoolAutoscaling
-      (\ s a -> s{_cuDesiredNodePoolAutoscaling = a})
-
--- | 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
--- \"desired_node_version\", \"desired_image_family\" or
--- \"desired_node_pool_autoscaling\" 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 desired image type for the node pool. NOTE: Set the
--- \"desired_node_pool\" field as well.
-cuDesiredImageType :: Lens' ClusterUpdate (Maybe Text)
-cuDesiredImageType
-  = lens _cuDesiredImageType
-      (\ s a -> s{_cuDesiredImageType = a})
-
--- | The Kubernetes version to change the nodes to (typically an upgrade).
--- Use \`-\` to upgrade to the latest version supported by the server.
-cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
-cuDesiredNodeVersion
-  = lens _cuDesiredNodeVersion
-      (\ s a -> s{_cuDesiredNodeVersion = a})
-
--- | 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 desired list of Google Compute Engine
--- [locations](\/compute\/docs\/zones#available) in which the cluster\'s
--- nodes should be located. Changing the locations a cluster is in will
--- result in nodes being either created or removed from the cluster,
--- depending on whether locations are being added or removed. This list
--- must always include the cluster\'s primary zone.
-cuDesiredLocations :: Lens' ClusterUpdate [Text]
-cuDesiredLocations
-  = lens _cuDesiredLocations
-      (\ s a -> s{_cuDesiredLocations = a})
-      . _Default
-      . _Coerce
-
--- | 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 .:? "desiredNodePoolAutoscaling") <*>
-                     (o .:? "desiredAddonsConfig")
-                     <*> (o .:? "desiredNodePoolId")
-                     <*> (o .:? "desiredImageType")
-                     <*> (o .:? "desiredNodeVersion")
-                     <*> (o .:? "desiredMasterVersion")
-                     <*> (o .:? "desiredLocations" .!= mempty)
-                     <*> (o .:? "desiredMonitoringService"))
-
-instance ToJSON ClusterUpdate where
-        toJSON ClusterUpdate'{..}
-          = object
-              (catMaybes
-                 [("desiredNodePoolAutoscaling" .=) <$>
-                    _cuDesiredNodePoolAutoscaling,
-                  ("desiredAddonsConfig" .=) <$>
-                    _cuDesiredAddonsConfig,
-                  ("desiredNodePoolId" .=) <$> _cuDesiredNodePoolId,
-                  ("desiredImageType" .=) <$> _cuDesiredImageType,
-                  ("desiredNodeVersion" .=) <$> _cuDesiredNodeVersion,
-                  ("desiredMasterVersion" .=) <$>
-                    _cuDesiredMasterVersion,
-                  ("desiredLocations" .=) <$> _cuDesiredLocations,
-                  ("desiredMonitoringService" .=) <$>
-                    _cuDesiredMonitoringService])
-
--- | RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or
--- Failed NodePool upgrade. This will be an no-op if the last upgrade
--- successfully completed.
---
--- /See:/ 'rollbackNodePoolUpgradeRequest' smart constructor.
-data RollbackNodePoolUpgradeRequest =
-    RollbackNodePoolUpgradeRequest'
-    deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RollbackNodePoolUpgradeRequest' with the minimum fields required to make a request.
---
-rollbackNodePoolUpgradeRequest
-    :: RollbackNodePoolUpgradeRequest
-rollbackNodePoolUpgradeRequest = RollbackNodePoolUpgradeRequest'
-
-instance FromJSON RollbackNodePoolUpgradeRequest
-         where
-        parseJSON
-          = withObject "RollbackNodePoolUpgradeRequest"
-              (\ o -> pure RollbackNodePoolUpgradeRequest')
-
-instance ToJSON RollbackNodePoolUpgradeRequest where
-        toJSON = const emptyObject
-
--- | 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])
+-- | Configuration for NetworkPolicy. This only tracks whether the addon is
+-- enabled or not on the Master, it does not track whether network policy
+-- is enabled for the nodes.
+--
+-- /See:/ 'networkPolicyConfig' smart constructor.
+newtype NetworkPolicyConfig = NetworkPolicyConfig'
+    { _npcDisabled :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkPolicyConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npcDisabled'
+networkPolicyConfig
+    :: NetworkPolicyConfig
+networkPolicyConfig =
+    NetworkPolicyConfig'
+    { _npcDisabled = Nothing
+    }
+
+-- | Whether NetworkPolicy is enabled for this cluster.
+npcDisabled :: Lens' NetworkPolicyConfig (Maybe Bool)
+npcDisabled
+  = lens _npcDisabled (\ s a -> s{_npcDisabled = a})
+
+instance FromJSON NetworkPolicyConfig where
+        parseJSON
+          = withObject "NetworkPolicyConfig"
+              (\ o -> NetworkPolicyConfig' <$> (o .:? "disabled"))
+
+instance ToJSON NetworkPolicyConfig where
+        toJSON NetworkPolicyConfig'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _npcDisabled])
+
+-- | UpdateNodePoolRequests update a node pool\'s image and\/or version.
+--
+-- /See:/ 'updateNodePoolRequest' smart constructor.
+data UpdateNodePoolRequest = UpdateNodePoolRequest'
+    { _unprZone        :: !(Maybe Text)
+    , _unprNodePoolId  :: !(Maybe Text)
+    , _unprImageType   :: !(Maybe Text)
+    , _unprName        :: !(Maybe Text)
+    , _unprClusterId   :: !(Maybe Text)
+    , _unprNodeVersion :: !(Maybe Text)
+    , _unprProjectId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateNodePoolRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'unprZone'
+--
+-- * 'unprNodePoolId'
+--
+-- * 'unprImageType'
+--
+-- * 'unprName'
+--
+-- * 'unprClusterId'
+--
+-- * 'unprNodeVersion'
+--
+-- * 'unprProjectId'
+updateNodePoolRequest
+    :: UpdateNodePoolRequest
+updateNodePoolRequest =
+    UpdateNodePoolRequest'
+    { _unprZone = Nothing
+    , _unprNodePoolId = Nothing
+    , _unprImageType = Nothing
+    , _unprName = Nothing
+    , _unprClusterId = Nothing
+    , _unprNodeVersion = Nothing
+    , _unprProjectId = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+unprZone :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprZone = lens _unprZone (\ s a -> s{_unprZone = a})
+
+-- | Deprecated. The name of the node pool to upgrade. This field has been
+-- deprecated and replaced by the name field.
+unprNodePoolId :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprNodePoolId
+  = lens _unprNodePoolId
+      (\ s a -> s{_unprNodePoolId = a})
+
+-- | The desired image type for the node pool.
+unprImageType :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprImageType
+  = lens _unprImageType
+      (\ s a -> s{_unprImageType = a})
+
+-- | The name (project, location, cluster, node pool) of the node pool to
+-- update. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+unprName :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprName = lens _unprName (\ s a -> s{_unprName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+unprClusterId :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprClusterId
+  = lens _unprClusterId
+      (\ s a -> s{_unprClusterId = a})
+
+-- | The Kubernetes version to change the nodes to (typically an upgrade).
+-- Users may specify either explicit versions offered by Kubernetes Engine
+-- or version aliases, which have the following behavior: - \"latest\":
+-- picks the highest valid Kubernetes version - \"1.X\": picks the highest
+-- valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the
+-- highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks
+-- an explicit Kubernetes version - \"-\": picks the Kubernetes master
+-- version
+unprNodeVersion :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprNodeVersion
+  = lens _unprNodeVersion
+      (\ s a -> s{_unprNodeVersion = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+unprProjectId :: Lens' UpdateNodePoolRequest (Maybe Text)
+unprProjectId
+  = lens _unprProjectId
+      (\ s a -> s{_unprProjectId = a})
+
+instance FromJSON UpdateNodePoolRequest where
+        parseJSON
+          = withObject "UpdateNodePoolRequest"
+              (\ o ->
+                 UpdateNodePoolRequest' <$>
+                   (o .:? "zone") <*> (o .:? "nodePoolId") <*>
+                     (o .:? "imageType")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "nodeVersion")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON UpdateNodePoolRequest where
+        toJSON UpdateNodePoolRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _unprZone,
+                  ("nodePoolId" .=) <$> _unprNodePoolId,
+                  ("imageType" .=) <$> _unprImageType,
+                  ("name" .=) <$> _unprName,
+                  ("clusterId" .=) <$> _unprClusterId,
+                  ("nodeVersion" .=) <$> _unprNodeVersion,
+                  ("projectId" .=) <$> _unprProjectId])
+
+-- | UpdateMasterRequest updates the master of the cluster.
+--
+-- /See:/ 'updateMasterRequest' smart constructor.
+data UpdateMasterRequest = UpdateMasterRequest'
+    { _umrZone          :: !(Maybe Text)
+    , _umrName          :: !(Maybe Text)
+    , _umrClusterId     :: !(Maybe Text)
+    , _umrProjectId     :: !(Maybe Text)
+    , _umrMasterVersion :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateMasterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umrZone'
+--
+-- * 'umrName'
+--
+-- * 'umrClusterId'
+--
+-- * 'umrProjectId'
+--
+-- * 'umrMasterVersion'
+updateMasterRequest
+    :: UpdateMasterRequest
+updateMasterRequest =
+    UpdateMasterRequest'
+    { _umrZone = Nothing
+    , _umrName = Nothing
+    , _umrClusterId = Nothing
+    , _umrProjectId = Nothing
+    , _umrMasterVersion = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+umrZone :: Lens' UpdateMasterRequest (Maybe Text)
+umrZone = lens _umrZone (\ s a -> s{_umrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to update.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+umrName :: Lens' UpdateMasterRequest (Maybe Text)
+umrName = lens _umrName (\ s a -> s{_umrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+umrClusterId :: Lens' UpdateMasterRequest (Maybe Text)
+umrClusterId
+  = lens _umrClusterId (\ s a -> s{_umrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+umrProjectId :: Lens' UpdateMasterRequest (Maybe Text)
+umrProjectId
+  = lens _umrProjectId (\ s a -> s{_umrProjectId = a})
+
+-- | The Kubernetes version to change the master to. Users may specify either
+-- explicit versions offered by Kubernetes Engine or version aliases, which
+-- have the following behavior: - \"latest\": picks the highest valid
+-- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
+-- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
+-- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
+-- version - \"-\": picks the default Kubernetes version
+umrMasterVersion :: Lens' UpdateMasterRequest (Maybe Text)
+umrMasterVersion
+  = lens _umrMasterVersion
+      (\ s a -> s{_umrMasterVersion = a})
+
+instance FromJSON UpdateMasterRequest where
+        parseJSON
+          = withObject "UpdateMasterRequest"
+              (\ o ->
+                 UpdateMasterRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "masterVersion"))
+
+instance ToJSON UpdateMasterRequest where
+        toJSON UpdateMasterRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _umrZone, ("name" .=) <$> _umrName,
+                  ("clusterId" .=) <$> _umrClusterId,
+                  ("projectId" .=) <$> _umrProjectId,
+                  ("masterVersion" .=) <$> _umrMasterVersion])
+
+-- | StartIPRotationRequest creates a new IP for the cluster and then
+-- performs a node upgrade on each node pool to point to the new IP.
+--
+-- /See:/ 'startIPRotationRequest' smart constructor.
+data StartIPRotationRequest = StartIPRotationRequest'
+    { _sirrZone              :: !(Maybe Text)
+    , _sirrRotateCredentials :: !(Maybe Bool)
+    , _sirrName              :: !(Maybe Text)
+    , _sirrClusterId         :: !(Maybe Text)
+    , _sirrProjectId         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StartIPRotationRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sirrZone'
+--
+-- * 'sirrRotateCredentials'
+--
+-- * 'sirrName'
+--
+-- * 'sirrClusterId'
+--
+-- * 'sirrProjectId'
+startIPRotationRequest
+    :: StartIPRotationRequest
+startIPRotationRequest =
+    StartIPRotationRequest'
+    { _sirrZone = Nothing
+    , _sirrRotateCredentials = Nothing
+    , _sirrName = Nothing
+    , _sirrClusterId = Nothing
+    , _sirrProjectId = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+sirrZone :: Lens' StartIPRotationRequest (Maybe Text)
+sirrZone = lens _sirrZone (\ s a -> s{_sirrZone = a})
+
+-- | Whether to rotate credentials during IP rotation.
+sirrRotateCredentials :: Lens' StartIPRotationRequest (Maybe Bool)
+sirrRotateCredentials
+  = lens _sirrRotateCredentials
+      (\ s a -> s{_sirrRotateCredentials = a})
+
+-- | The name (project, location, cluster id) of the cluster to start IP
+-- rotation. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+sirrName :: Lens' StartIPRotationRequest (Maybe Text)
+sirrName = lens _sirrName (\ s a -> s{_sirrName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+sirrClusterId :: Lens' StartIPRotationRequest (Maybe Text)
+sirrClusterId
+  = lens _sirrClusterId
+      (\ s a -> s{_sirrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+sirrProjectId :: Lens' StartIPRotationRequest (Maybe Text)
+sirrProjectId
+  = lens _sirrProjectId
+      (\ s a -> s{_sirrProjectId = a})
+
+instance FromJSON StartIPRotationRequest where
+        parseJSON
+          = withObject "StartIPRotationRequest"
+              (\ o ->
+                 StartIPRotationRequest' <$>
+                   (o .:? "zone") <*> (o .:? "rotateCredentials") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON StartIPRotationRequest where
+        toJSON StartIPRotationRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _sirrZone,
+                  ("rotateCredentials" .=) <$> _sirrRotateCredentials,
+                  ("name" .=) <$> _sirrName,
+                  ("clusterId" .=) <$> _sirrClusterId,
+                  ("projectId" .=) <$> _sirrProjectId])
+
+-- | SetLegacyAbacRequest enables or disables the ABAC authorization
+-- mechanism for a cluster.
+--
+-- /See:/ 'setLegacyAbacRequest' smart constructor.
+data SetLegacyAbacRequest = SetLegacyAbacRequest'
+    { _slarEnabled   :: !(Maybe Bool)
+    , _slarZone      :: !(Maybe Text)
+    , _slarName      :: !(Maybe Text)
+    , _slarClusterId :: !(Maybe Text)
+    , _slarProjectId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetLegacyAbacRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slarEnabled'
+--
+-- * 'slarZone'
+--
+-- * 'slarName'
+--
+-- * 'slarClusterId'
+--
+-- * 'slarProjectId'
+setLegacyAbacRequest
+    :: SetLegacyAbacRequest
+setLegacyAbacRequest =
+    SetLegacyAbacRequest'
+    { _slarEnabled = Nothing
+    , _slarZone = Nothing
+    , _slarName = Nothing
+    , _slarClusterId = Nothing
+    , _slarProjectId = Nothing
+    }
+
+-- | Whether ABAC authorization will be enabled in the cluster.
+slarEnabled :: Lens' SetLegacyAbacRequest (Maybe Bool)
+slarEnabled
+  = lens _slarEnabled (\ s a -> s{_slarEnabled = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+slarZone :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarZone = lens _slarZone (\ s a -> s{_slarZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set legacy
+-- abac. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+slarName :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarName = lens _slarName (\ s a -> s{_slarName = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+slarClusterId :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarClusterId
+  = lens _slarClusterId
+      (\ s a -> s{_slarClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+slarProjectId :: Lens' SetLegacyAbacRequest (Maybe Text)
+slarProjectId
+  = lens _slarProjectId
+      (\ s a -> s{_slarProjectId = a})
+
+instance FromJSON SetLegacyAbacRequest where
+        parseJSON
+          = withObject "SetLegacyAbacRequest"
+              (\ o ->
+                 SetLegacyAbacRequest' <$>
+                   (o .:? "enabled") <*> (o .:? "zone") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetLegacyAbacRequest where
+        toJSON SetLegacyAbacRequest'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _slarEnabled,
+                  ("zone" .=) <$> _slarZone, ("name" .=) <$> _slarName,
+                  ("clusterId" .=) <$> _slarClusterId,
+                  ("projectId" .=) <$> _slarProjectId])
+
+-- | 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])
+
+-- | SetMasterAuthRequest updates the admin password of a cluster.
+--
+-- /See:/ 'setMasterAuthRequest' smart constructor.
+data SetMasterAuthRequest = SetMasterAuthRequest'
+    { _smarAction    :: !(Maybe SetMasterAuthRequestAction)
+    , _smarZone      :: !(Maybe Text)
+    , _smarName      :: !(Maybe Text)
+    , _smarClusterId :: !(Maybe Text)
+    , _smarProjectId :: !(Maybe Text)
+    , _smarUpdate    :: !(Maybe MasterAuth)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetMasterAuthRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smarAction'
+--
+-- * 'smarZone'
+--
+-- * 'smarName'
+--
+-- * 'smarClusterId'
+--
+-- * 'smarProjectId'
+--
+-- * 'smarUpdate'
+setMasterAuthRequest
+    :: SetMasterAuthRequest
+setMasterAuthRequest =
+    SetMasterAuthRequest'
+    { _smarAction = Nothing
+    , _smarZone = Nothing
+    , _smarName = Nothing
+    , _smarClusterId = Nothing
+    , _smarProjectId = Nothing
+    , _smarUpdate = Nothing
+    }
+
+-- | The exact form of action to be taken on the master auth.
+smarAction :: Lens' SetMasterAuthRequest (Maybe SetMasterAuthRequestAction)
+smarAction
+  = lens _smarAction (\ s a -> s{_smarAction = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+smarZone :: Lens' SetMasterAuthRequest (Maybe Text)
+smarZone = lens _smarZone (\ s a -> s{_smarZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set auth.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+smarName :: Lens' SetMasterAuthRequest (Maybe Text)
+smarName = lens _smarName (\ s a -> s{_smarName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+smarClusterId :: Lens' SetMasterAuthRequest (Maybe Text)
+smarClusterId
+  = lens _smarClusterId
+      (\ s a -> s{_smarClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+smarProjectId :: Lens' SetMasterAuthRequest (Maybe Text)
+smarProjectId
+  = lens _smarProjectId
+      (\ s a -> s{_smarProjectId = a})
+
+-- | A description of the update.
+smarUpdate :: Lens' SetMasterAuthRequest (Maybe MasterAuth)
+smarUpdate
+  = lens _smarUpdate (\ s a -> s{_smarUpdate = a})
+
+instance FromJSON SetMasterAuthRequest where
+        parseJSON
+          = withObject "SetMasterAuthRequest"
+              (\ o ->
+                 SetMasterAuthRequest' <$>
+                   (o .:? "action") <*> (o .:? "zone") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "update"))
+
+instance ToJSON SetMasterAuthRequest where
+        toJSON SetMasterAuthRequest'{..}
+          = object
+              (catMaybes
+                 [("action" .=) <$> _smarAction,
+                  ("zone" .=) <$> _smarZone, ("name" .=) <$> _smarName,
+                  ("clusterId" .=) <$> _smarClusterId,
+                  ("projectId" .=) <$> _smarProjectId,
+                  ("update" .=) <$> _smarUpdate])
+
+-- | ListOperationsResponse is the result of ListOperationsRequest.
+--
+-- /See:/ 'listOperationsResponse' smart constructor.
+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.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lorOperations'
+--
+-- * 'lorMissingZones'
+listOperationsResponse
+    :: ListOperationsResponse
+listOperationsResponse =
+    ListOperationsResponse'
+    { _lorOperations = Nothing
+    , _lorMissingZones = Nothing
+    }
+
+-- | A list of operations in the project in the specified zone.
+lorOperations :: Lens' ListOperationsResponse [Operation]
+lorOperations
+  = lens _lorOperations
+      (\ s a -> s{_lorOperations = a})
+      . _Default
+      . _Coerce
+
+-- | 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) <*>
+                     (o .:? "missingZones" .!= mempty))
+
+instance ToJSON ListOperationsResponse where
+        toJSON ListOperationsResponse'{..}
+          = object
+              (catMaybes
+                 [("operations" .=) <$> _lorOperations,
+                  ("missingZones" .=) <$> _lorMissingZones])
+
+-- | CreateClusterRequest creates a cluster.
+--
+-- /See:/ 'createClusterRequest' smart constructor.
+data CreateClusterRequest = CreateClusterRequest'
+    { _ccrParent    :: !(Maybe Text)
+    , _ccrCluster   :: !(Maybe Cluster)
+    , _ccrZone      :: !(Maybe Text)
+    , _ccrProjectId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrParent'
+--
+-- * 'ccrCluster'
+--
+-- * 'ccrZone'
+--
+-- * 'ccrProjectId'
+createClusterRequest
+    :: CreateClusterRequest
+createClusterRequest =
+    CreateClusterRequest'
+    { _ccrParent = Nothing
+    , _ccrCluster = Nothing
+    , _ccrZone = Nothing
+    , _ccrProjectId = Nothing
+    }
+
+-- | The parent (project and location) where the cluster will be created.
+-- Specified in the format \'projects\/*\/locations\/*\'.
+ccrParent :: Lens' CreateClusterRequest (Maybe Text)
+ccrParent
+  = lens _ccrParent (\ s a -> s{_ccrParent = a})
+
+-- | A [cluster
+-- resource](\/container-engine\/reference\/rest\/v1\/projects.zones.clusters)
+ccrCluster :: Lens' CreateClusterRequest (Maybe Cluster)
+ccrCluster
+  = lens _ccrCluster (\ s a -> s{_ccrCluster = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
+ccrZone :: Lens' CreateClusterRequest (Maybe Text)
+ccrZone = lens _ccrZone (\ s a -> s{_ccrZone = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
+ccrProjectId :: Lens' CreateClusterRequest (Maybe Text)
+ccrProjectId
+  = lens _ccrProjectId (\ s a -> s{_ccrProjectId = a})
+
+instance FromJSON CreateClusterRequest where
+        parseJSON
+          = withObject "CreateClusterRequest"
+              (\ o ->
+                 CreateClusterRequest' <$>
+                   (o .:? "parent") <*> (o .:? "cluster") <*>
+                     (o .:? "zone")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON CreateClusterRequest where
+        toJSON CreateClusterRequest'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _ccrParent,
+                  ("cluster" .=) <$> _ccrCluster,
+                  ("zone" .=) <$> _ccrZone,
+                  ("projectId" .=) <$> _ccrProjectId])
+
+-- | A Google Kubernetes Engine cluster.
+--
+-- /See:/ 'cluster' smart constructor.
+data Cluster = Cluster'
+    { _cStatus                         :: !(Maybe ClusterStatus)
+    , _cNodePools                      :: !(Maybe [NodePool])
+    , _cEnableKubernetesAlpha          :: !(Maybe Bool)
+    , _cResourceLabels                 :: !(Maybe ClusterResourceLabels)
+    , _cNodeConfig                     :: !(Maybe NodeConfig)
+    , _cNodeIPv4CIdRSize               :: !(Maybe (Textual Int32))
+    , _cClusterIPv4CIdR                :: !(Maybe Text)
+    , _cLocation                       :: !(Maybe Text)
+    , _cInitialNodeCount               :: !(Maybe (Textual Int32))
+    , _cCurrentNodeVersion             :: !(Maybe Text)
+    , _cNetwork                        :: !(Maybe Text)
+    , _cInitialClusterVersion          :: !(Maybe Text)
+    , _cZone                           :: !(Maybe Text)
+    , _cAddonsConfig                   :: !(Maybe AddonsConfig)
+    , _cServicesIPv4CIdR               :: !(Maybe Text)
+    , _cIPAllocationPolicy             :: !(Maybe IPAllocationPolicy)
+    , _cMasterAuthorizedNetworksConfig :: !(Maybe MasterAuthorizedNetworksConfig)
+    , _cLegacyAbac                     :: !(Maybe LegacyAbac)
+    , _cNetworkConfig                  :: !(Maybe NetworkConfig)
+    , _cMasterAuth                     :: !(Maybe MasterAuth)
+    , _cSelfLink                       :: !(Maybe Text)
+    , _cName                           :: !(Maybe Text)
+    , _cCurrentMasterVersion           :: !(Maybe Text)
+    , _cStatusMessage                  :: !(Maybe Text)
+    , _cSubnetwork                     :: !(Maybe Text)
+    , _cCurrentNodeCount               :: !(Maybe (Textual Int32))
+    , _cPrivateClusterConfig           :: !(Maybe PrivateClusterConfig)
+    , _cMaintenancePolicy              :: !(Maybe MaintenancePolicy)
+    , _cConditions                     :: !(Maybe [StatusCondition])
+    , _cEndpoint                       :: !(Maybe Text)
+    , _cExpireTime                     :: !(Maybe Text)
+    , _cNetworkPolicy                  :: !(Maybe NetworkPolicy)
+    , _cLocations                      :: !(Maybe [Text])
+    , _cLoggingService                 :: !(Maybe Text)
+    , _cLabelFingerprint               :: !(Maybe Text)
+    , _cDescription                    :: !(Maybe Text)
+    , _cInstanceGroupURLs              :: !(Maybe [Text])
+    , _cMonitoringService              :: !(Maybe Text)
+    , _cCreateTime                     :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Cluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cStatus'
+--
+-- * 'cNodePools'
+--
+-- * 'cEnableKubernetesAlpha'
+--
+-- * 'cResourceLabels'
+--
+-- * 'cNodeConfig'
+--
+-- * 'cNodeIPv4CIdRSize'
+--
+-- * 'cClusterIPv4CIdR'
+--
+-- * 'cLocation'
+--
+-- * 'cInitialNodeCount'
+--
+-- * 'cCurrentNodeVersion'
+--
+-- * 'cNetwork'
+--
+-- * 'cInitialClusterVersion'
+--
+-- * 'cZone'
+--
+-- * 'cAddonsConfig'
+--
+-- * 'cServicesIPv4CIdR'
+--
+-- * 'cIPAllocationPolicy'
+--
+-- * 'cMasterAuthorizedNetworksConfig'
+--
+-- * 'cLegacyAbac'
+--
+-- * 'cNetworkConfig'
+--
+-- * 'cMasterAuth'
+--
+-- * 'cSelfLink'
+--
+-- * 'cName'
+--
+-- * 'cCurrentMasterVersion'
+--
+-- * 'cStatusMessage'
+--
+-- * 'cSubnetwork'
+--
+-- * 'cCurrentNodeCount'
+--
+-- * 'cPrivateClusterConfig'
+--
+-- * 'cMaintenancePolicy'
+--
+-- * 'cConditions'
+--
+-- * 'cEndpoint'
+--
+-- * 'cExpireTime'
+--
+-- * 'cNetworkPolicy'
+--
+-- * 'cLocations'
+--
+-- * 'cLoggingService'
+--
+-- * 'cLabelFingerprint'
+--
+-- * 'cDescription'
+--
+-- * 'cInstanceGroupURLs'
+--
+-- * 'cMonitoringService'
+--
+-- * 'cCreateTime'
+cluster
+    :: Cluster
+cluster =
+    Cluster'
+    { _cStatus = Nothing
+    , _cNodePools = Nothing
+    , _cEnableKubernetesAlpha = Nothing
+    , _cResourceLabels = Nothing
+    , _cNodeConfig = Nothing
+    , _cNodeIPv4CIdRSize = Nothing
+    , _cClusterIPv4CIdR = Nothing
+    , _cLocation = Nothing
+    , _cInitialNodeCount = Nothing
+    , _cCurrentNodeVersion = Nothing
+    , _cNetwork = Nothing
+    , _cInitialClusterVersion = Nothing
+    , _cZone = Nothing
+    , _cAddonsConfig = Nothing
+    , _cServicesIPv4CIdR = Nothing
+    , _cIPAllocationPolicy = Nothing
+    , _cMasterAuthorizedNetworksConfig = Nothing
+    , _cLegacyAbac = Nothing
+    , _cNetworkConfig = Nothing
+    , _cMasterAuth = Nothing
+    , _cSelfLink = Nothing
+    , _cName = Nothing
+    , _cCurrentMasterVersion = Nothing
+    , _cStatusMessage = Nothing
+    , _cSubnetwork = Nothing
+    , _cCurrentNodeCount = Nothing
+    , _cPrivateClusterConfig = Nothing
+    , _cMaintenancePolicy = Nothing
+    , _cConditions = Nothing
+    , _cEndpoint = Nothing
+    , _cExpireTime = Nothing
+    , _cNetworkPolicy = Nothing
+    , _cLocations = Nothing
+    , _cLoggingService = Nothing
+    , _cLabelFingerprint = Nothing
+    , _cDescription = Nothing
+    , _cInstanceGroupURLs = Nothing
+    , _cMonitoringService = Nothing
+    , _cCreateTime = Nothing
+    }
+
+-- | [Output only] The current status of this cluster.
+cStatus :: Lens' Cluster (Maybe ClusterStatus)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
+
+-- | The node pools associated with this cluster. 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
+
+-- | Kubernetes alpha features are enabled on this cluster. This includes
+-- alpha API groups (e.g. v1alpha1) and features that may not be production
+-- ready in the kubernetes version of the master and nodes. The cluster has
+-- no SLA for uptime and master\/node upgrades are disabled. Alpha enabled
+-- clusters are automatically deleted thirty days after creation.
+cEnableKubernetesAlpha :: Lens' Cluster (Maybe Bool)
+cEnableKubernetesAlpha
+  = lens _cEnableKubernetesAlpha
+      (\ s a -> s{_cEnableKubernetesAlpha = a})
+
+-- | The resource labels for the cluster to use to annotate any related
+-- Google Compute Engine resources.
+cResourceLabels :: Lens' Cluster (Maybe ClusterResourceLabels)
+cResourceLabels
+  = lens _cResourceLabels
+      (\ s a -> s{_cResourceLabels = a})
+
+-- | 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\`
+-- range.
+cNodeIPv4CIdRSize :: Lens' Cluster (Maybe Int32)
+cNodeIPv4CIdRSize
+  = lens _cNodeIPv4CIdRSize
+      (\ s a -> s{_cNodeIPv4CIdRSize = a})
+      . mapping _Coerce
+
+-- | The IP address range of the container pods in this cluster, in
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`). Leave blank to have one automatically
+-- chosen or specify a \`\/14\` block in \`10.0.0.0\/8\`.
+cClusterIPv4CIdR :: Lens' Cluster (Maybe Text)
+cClusterIPv4CIdR
+  = lens _cClusterIPv4CIdR
+      (\ s a -> s{_cClusterIPv4CIdR = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/regions-zones\/regions-zones#available) or
+-- [region](\/compute\/docs\/regions-zones\/regions-zones#available) in
+-- which the cluster resides.
+cLocation :: Lens' Cluster (Maybe Text)
+cLocation
+  = lens _cLocation (\ s a -> s{_cLocation = a})
+
+-- | The number of nodes to create in this cluster. You must ensure that your
+-- Compute Engine </compute/docs/resource-quotas 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
+      (\ s a -> s{_cInitialNodeCount = a})
+      . mapping _Coerce
+
+-- | [Output only] Deprecated, use
+-- [NodePool.version](\/kubernetes-engine\/docs\/reference\/rest\/v1\/projects.zones.clusters.nodePool)
+-- instead. The current version of the node software components. If 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\/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})
+
+-- | The initial Kubernetes version for this cluster. Valid versions are
+-- those found in validMasterVersions returned by getServerConfig. The
+-- version can be upgraded over time; such upgrades are reflected in
+-- currentMasterVersion and currentNodeVersion. Users may specify either
+-- explicit versions offered by Kubernetes Engine or version aliases, which
+-- have the following behavior: - \"latest\": picks the highest valid
+-- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
+-- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
+-- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
+-- version - \"\",\"-\": picks the default Kubernetes version
+cInitialClusterVersion :: Lens' Cluster (Maybe Text)
+cInitialClusterVersion
+  = lens _cInitialClusterVersion
+      (\ s a -> s{_cInitialClusterVersion = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field is deprecated, use location instead.
+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.
+cServicesIPv4CIdR :: Lens' Cluster (Maybe Text)
+cServicesIPv4CIdR
+  = lens _cServicesIPv4CIdR
+      (\ s a -> s{_cServicesIPv4CIdR = a})
+
+-- | Configuration for cluster IP allocation.
+cIPAllocationPolicy :: Lens' Cluster (Maybe IPAllocationPolicy)
+cIPAllocationPolicy
+  = lens _cIPAllocationPolicy
+      (\ s a -> s{_cIPAllocationPolicy = a})
+
+-- | The configuration options for master authorized networks feature.
+cMasterAuthorizedNetworksConfig :: Lens' Cluster (Maybe MasterAuthorizedNetworksConfig)
+cMasterAuthorizedNetworksConfig
+  = lens _cMasterAuthorizedNetworksConfig
+      (\ s a -> s{_cMasterAuthorizedNetworksConfig = a})
+
+-- | Configuration for the legacy ABAC authorization mode.
+cLegacyAbac :: Lens' Cluster (Maybe LegacyAbac)
+cLegacyAbac
+  = lens _cLegacyAbac (\ s a -> s{_cLegacyAbac = a})
+
+-- | Configuration for cluster networking.
+cNetworkConfig :: Lens' Cluster (Maybe NetworkConfig)
+cNetworkConfig
+  = lens _cNetworkConfig
+      (\ s a -> s{_cNetworkConfig = a})
+
+-- | The authentication information for accessing the master endpoint. If
+-- unspecified, the defaults are used: For clusters before v1.12, if
+-- master_auth is unspecified, \`username\` will be set to \"admin\", a
+-- random password will be generated, and a client certificate will be
+-- issued.
+cMasterAuth :: Lens' Cluster (Maybe MasterAuth)
+cMasterAuth
+  = lens _cMasterAuth (\ s a -> s{_cMasterAuth = a})
+
+-- | [Output only] Server-defined URL for the resource.
+cSelfLink :: Lens' Cluster (Maybe Text)
+cSelfLink
+  = lens _cSelfLink (\ s a -> s{_cSelfLink = a})
+
+-- | The name of this cluster. The name must be unique within this project
+-- and zone, and can be up to 40 characters with the following
+-- restrictions: * Lowercase letters, numbers, and hyphens only. * Must
+-- start with a letter. * Must end with a number or a letter.
+cName :: Lens' Cluster (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a})
+
+-- | [Output only] The current software version of the master endpoint.
+cCurrentMasterVersion :: Lens' Cluster (Maybe Text)
+cCurrentMasterVersion
+  = lens _cCurrentMasterVersion
+      (\ s a -> s{_cCurrentMasterVersion = a})
+
+-- | [Output only] Additional information about the current status of this
+-- cluster, if available.
+cStatusMessage :: Lens' Cluster (Maybe Text)
+cStatusMessage
+  = lens _cStatusMessage
+      (\ s a -> s{_cStatusMessage = a})
+
+-- | 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. Deprecated.
+-- Call Kubernetes API directly to retrieve node information.
+cCurrentNodeCount :: Lens' Cluster (Maybe Int32)
+cCurrentNodeCount
+  = lens _cCurrentNodeCount
+      (\ s a -> s{_cCurrentNodeCount = a})
+      . mapping _Coerce
+
+-- | Configuration for private cluster.
+cPrivateClusterConfig :: Lens' Cluster (Maybe PrivateClusterConfig)
+cPrivateClusterConfig
+  = lens _cPrivateClusterConfig
+      (\ s a -> s{_cPrivateClusterConfig = a})
+
+-- | Configure the maintenance policy for this cluster.
+cMaintenancePolicy :: Lens' Cluster (Maybe MaintenancePolicy)
+cMaintenancePolicy
+  = lens _cMaintenancePolicy
+      (\ s a -> s{_cMaintenancePolicy = a})
+
+-- | Which conditions caused the current cluster state.
+cConditions :: Lens' Cluster [StatusCondition]
+cConditions
+  = lens _cConditions (\ s a -> s{_cConditions = a}) .
+      _Default
+      . _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})
+
+-- | [Output only] The time the cluster will be automatically deleted in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+cExpireTime :: Lens' Cluster (Maybe Text)
+cExpireTime
+  = lens _cExpireTime (\ s a -> s{_cExpireTime = a})
+
+-- | Configuration options for the NetworkPolicy feature.
+cNetworkPolicy :: Lens' Cluster (Maybe NetworkPolicy)
+cNetworkPolicy
+  = lens _cNetworkPolicy
+      (\ s a -> s{_cNetworkPolicy = a})
+
+-- | The list of Google Compute Engine
+-- [zones](\/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
+      (\ s a -> s{_cLoggingService = a})
+
+-- | The fingerprint of the set of labels for this cluster.
+cLabelFingerprint :: Lens' Cluster (Maybe Text)
+cLabelFingerprint
+  = lens _cLabelFingerprint
+      (\ s a -> s{_cLabelFingerprint = a})
+
+-- | An optional description of this cluster.
+cDescription :: Lens' Cluster (Maybe Text)
+cDescription
+  = lens _cDescription (\ s a -> s{_cDescription = a})
+
+-- | Deprecated. Use node_pools.instance_group_urls.
+cInstanceGroupURLs :: Lens' Cluster [Text]
+cInstanceGroupURLs
+  = lens _cInstanceGroupURLs
+      (\ s a -> s{_cInstanceGroupURLs = a})
+      . _Default
+      . _Coerce
+
+-- | 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
+      (\ s a -> s{_cMonitoringService = a})
+
+-- | [Output only] The time the cluster was created, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+cCreateTime :: Lens' Cluster (Maybe Text)
+cCreateTime
+  = lens _cCreateTime (\ s a -> s{_cCreateTime = a})
+
+instance FromJSON Cluster where
+        parseJSON
+          = withObject "Cluster"
+              (\ o ->
+                 Cluster' <$>
+                   (o .:? "status") <*> (o .:? "nodePools" .!= mempty)
+                     <*> (o .:? "enableKubernetesAlpha")
+                     <*> (o .:? "resourceLabels")
+                     <*> (o .:? "nodeConfig")
+                     <*> (o .:? "nodeIpv4CidrSize")
+                     <*> (o .:? "clusterIpv4Cidr")
+                     <*> (o .:? "location")
+                     <*> (o .:? "initialNodeCount")
+                     <*> (o .:? "currentNodeVersion")
+                     <*> (o .:? "network")
+                     <*> (o .:? "initialClusterVersion")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "addonsConfig")
+                     <*> (o .:? "servicesIpv4Cidr")
+                     <*> (o .:? "ipAllocationPolicy")
+                     <*> (o .:? "masterAuthorizedNetworksConfig")
+                     <*> (o .:? "legacyAbac")
+                     <*> (o .:? "networkConfig")
+                     <*> (o .:? "masterAuth")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "currentMasterVersion")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "subnetwork")
+                     <*> (o .:? "currentNodeCount")
+                     <*> (o .:? "privateClusterConfig")
+                     <*> (o .:? "maintenancePolicy")
+                     <*> (o .:? "conditions" .!= mempty)
+                     <*> (o .:? "endpoint")
+                     <*> (o .:? "expireTime")
+                     <*> (o .:? "networkPolicy")
+                     <*> (o .:? "locations" .!= mempty)
+                     <*> (o .:? "loggingService")
+                     <*> (o .:? "labelFingerprint")
+                     <*> (o .:? "description")
+                     <*> (o .:? "instanceGroupUrls" .!= mempty)
+                     <*> (o .:? "monitoringService")
+                     <*> (o .:? "createTime"))
+
+instance ToJSON Cluster where
+        toJSON Cluster'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _cStatus,
+                  ("nodePools" .=) <$> _cNodePools,
+                  ("enableKubernetesAlpha" .=) <$>
+                    _cEnableKubernetesAlpha,
+                  ("resourceLabels" .=) <$> _cResourceLabels,
+                  ("nodeConfig" .=) <$> _cNodeConfig,
+                  ("nodeIpv4CidrSize" .=) <$> _cNodeIPv4CIdRSize,
+                  ("clusterIpv4Cidr" .=) <$> _cClusterIPv4CIdR,
+                  ("location" .=) <$> _cLocation,
+                  ("initialNodeCount" .=) <$> _cInitialNodeCount,
+                  ("currentNodeVersion" .=) <$> _cCurrentNodeVersion,
+                  ("network" .=) <$> _cNetwork,
+                  ("initialClusterVersion" .=) <$>
+                    _cInitialClusterVersion,
+                  ("zone" .=) <$> _cZone,
+                  ("addonsConfig" .=) <$> _cAddonsConfig,
+                  ("servicesIpv4Cidr" .=) <$> _cServicesIPv4CIdR,
+                  ("ipAllocationPolicy" .=) <$> _cIPAllocationPolicy,
+                  ("masterAuthorizedNetworksConfig" .=) <$>
+                    _cMasterAuthorizedNetworksConfig,
+                  ("legacyAbac" .=) <$> _cLegacyAbac,
+                  ("networkConfig" .=) <$> _cNetworkConfig,
+                  ("masterAuth" .=) <$> _cMasterAuth,
+                  ("selfLink" .=) <$> _cSelfLink,
+                  ("name" .=) <$> _cName,
+                  ("currentMasterVersion" .=) <$>
+                    _cCurrentMasterVersion,
+                  ("statusMessage" .=) <$> _cStatusMessage,
+                  ("subnetwork" .=) <$> _cSubnetwork,
+                  ("currentNodeCount" .=) <$> _cCurrentNodeCount,
+                  ("privateClusterConfig" .=) <$>
+                    _cPrivateClusterConfig,
+                  ("maintenancePolicy" .=) <$> _cMaintenancePolicy,
+                  ("conditions" .=) <$> _cConditions,
+                  ("endpoint" .=) <$> _cEndpoint,
+                  ("expireTime" .=) <$> _cExpireTime,
+                  ("networkPolicy" .=) <$> _cNetworkPolicy,
+                  ("locations" .=) <$> _cLocations,
+                  ("loggingService" .=) <$> _cLoggingService,
+                  ("labelFingerprint" .=) <$> _cLabelFingerprint,
+                  ("description" .=) <$> _cDescription,
+                  ("instanceGroupUrls" .=) <$> _cInstanceGroupURLs,
+                  ("monitoringService" .=) <$> _cMonitoringService,
+                  ("createTime" .=) <$> _cCreateTime])
+
+-- | CancelOperationRequest cancels a single operation.
+--
+-- /See:/ 'cancelOperationRequest' smart constructor.
+data CancelOperationRequest = CancelOperationRequest'
+    { _corZone        :: !(Maybe Text)
+    , _corName        :: !(Maybe Text)
+    , _corProjectId   :: !(Maybe Text)
+    , _corOperationId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelOperationRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'corZone'
+--
+-- * 'corName'
+--
+-- * 'corProjectId'
+--
+-- * 'corOperationId'
+cancelOperationRequest
+    :: CancelOperationRequest
+cancelOperationRequest =
+    CancelOperationRequest'
+    { _corZone = Nothing
+    , _corName = Nothing
+    , _corProjectId = Nothing
+    , _corOperationId = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the operation resides.
+-- This field has been deprecated and replaced by the name field.
+corZone :: Lens' CancelOperationRequest (Maybe Text)
+corZone = lens _corZone (\ s a -> s{_corZone = a})
+
+-- | The name (project, location, operation id) of the operation to cancel.
+-- Specified in the format \'projects\/*\/locations\/*\/operations\/*\'.
+corName :: Lens' CancelOperationRequest (Maybe Text)
+corName = lens _corName (\ s a -> s{_corName = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+corProjectId :: Lens' CancelOperationRequest (Maybe Text)
+corProjectId
+  = lens _corProjectId (\ s a -> s{_corProjectId = a})
+
+-- | Deprecated. The server-assigned \`name\` of the operation. This field
+-- has been deprecated and replaced by the name field.
+corOperationId :: Lens' CancelOperationRequest (Maybe Text)
+corOperationId
+  = lens _corOperationId
+      (\ s a -> s{_corOperationId = a})
+
+instance FromJSON CancelOperationRequest where
+        parseJSON
+          = withObject "CancelOperationRequest"
+              (\ o ->
+                 CancelOperationRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "projectId")
+                     <*> (o .:? "operationId"))
+
+instance ToJSON CancelOperationRequest where
+        toJSON CancelOperationRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _corZone, ("name" .=) <$> _corName,
+                  ("projectId" .=) <$> _corProjectId,
+                  ("operationId" .=) <$> _corOperationId])
+
+-- | UpdateClusterRequest updates the settings of a cluster.
+--
+-- /See:/ 'updateClusterRequest' smart constructor.
+data UpdateClusterRequest = UpdateClusterRequest'
+    { _ucrZone      :: !(Maybe Text)
+    , _ucrName      :: !(Maybe Text)
+    , _ucrClusterId :: !(Maybe Text)
+    , _ucrProjectId :: !(Maybe Text)
+    , _ucrUpdate    :: !(Maybe ClusterUpdate)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateClusterRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ucrZone'
+--
+-- * 'ucrName'
+--
+-- * 'ucrClusterId'
+--
+-- * 'ucrProjectId'
+--
+-- * 'ucrUpdate'
+updateClusterRequest
+    :: UpdateClusterRequest
+updateClusterRequest =
+    UpdateClusterRequest'
+    { _ucrZone = Nothing
+    , _ucrName = Nothing
+    , _ucrClusterId = Nothing
+    , _ucrProjectId = Nothing
+    , _ucrUpdate = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+ucrZone :: Lens' UpdateClusterRequest (Maybe Text)
+ucrZone = lens _ucrZone (\ s a -> s{_ucrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to update.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+ucrName :: Lens' UpdateClusterRequest (Maybe Text)
+ucrName = lens _ucrName (\ s a -> s{_ucrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+ucrClusterId :: Lens' UpdateClusterRequest (Maybe Text)
+ucrClusterId
+  = lens _ucrClusterId (\ s a -> s{_ucrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+ucrProjectId :: Lens' UpdateClusterRequest (Maybe Text)
+ucrProjectId
+  = lens _ucrProjectId (\ s a -> s{_ucrProjectId = a})
+
+-- | A description of the update.
+ucrUpdate :: Lens' UpdateClusterRequest (Maybe ClusterUpdate)
+ucrUpdate
+  = lens _ucrUpdate (\ s a -> s{_ucrUpdate = a})
+
+instance FromJSON UpdateClusterRequest where
+        parseJSON
+          = withObject "UpdateClusterRequest"
+              (\ o ->
+                 UpdateClusterRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "update"))
+
+instance ToJSON UpdateClusterRequest where
+        toJSON UpdateClusterRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _ucrZone, ("name" .=) <$> _ucrName,
+                  ("clusterId" .=) <$> _ucrClusterId,
+                  ("projectId" .=) <$> _ucrProjectId,
+                  ("update" .=) <$> _ucrUpdate])
+
+-- | SetAddonsConfigRequest sets the addons associated with the cluster.
+--
+-- /See:/ 'setAddonsConfigRequest' smart constructor.
+data SetAddonsConfigRequest = SetAddonsConfigRequest'
+    { _sacrZone         :: !(Maybe Text)
+    , _sacrAddonsConfig :: !(Maybe AddonsConfig)
+    , _sacrName         :: !(Maybe Text)
+    , _sacrClusterId    :: !(Maybe Text)
+    , _sacrProjectId    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetAddonsConfigRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sacrZone'
+--
+-- * 'sacrAddonsConfig'
+--
+-- * 'sacrName'
+--
+-- * 'sacrClusterId'
+--
+-- * 'sacrProjectId'
+setAddonsConfigRequest
+    :: SetAddonsConfigRequest
+setAddonsConfigRequest =
+    SetAddonsConfigRequest'
+    { _sacrZone = Nothing
+    , _sacrAddonsConfig = Nothing
+    , _sacrName = Nothing
+    , _sacrClusterId = Nothing
+    , _sacrProjectId = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+sacrZone :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrZone = lens _sacrZone (\ s a -> s{_sacrZone = a})
+
+-- | The desired configurations for the various addons available to run in
+-- the cluster.
+sacrAddonsConfig :: Lens' SetAddonsConfigRequest (Maybe AddonsConfig)
+sacrAddonsConfig
+  = lens _sacrAddonsConfig
+      (\ s a -> s{_sacrAddonsConfig = a})
+
+-- | The name (project, location, cluster) of the cluster to set addons.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+sacrName :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrName = lens _sacrName (\ s a -> s{_sacrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+sacrClusterId :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrClusterId
+  = lens _sacrClusterId
+      (\ s a -> s{_sacrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+sacrProjectId :: Lens' SetAddonsConfigRequest (Maybe Text)
+sacrProjectId
+  = lens _sacrProjectId
+      (\ s a -> s{_sacrProjectId = a})
+
+instance FromJSON SetAddonsConfigRequest where
+        parseJSON
+          = withObject "SetAddonsConfigRequest"
+              (\ o ->
+                 SetAddonsConfigRequest' <$>
+                   (o .:? "zone") <*> (o .:? "addonsConfig") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetAddonsConfigRequest where
+        toJSON SetAddonsConfigRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _sacrZone,
+                  ("addonsConfig" .=) <$> _sacrAddonsConfig,
+                  ("name" .=) <$> _sacrName,
+                  ("clusterId" .=) <$> _sacrClusterId,
+                  ("projectId" .=) <$> _sacrProjectId])
+
+-- | Parameters that describe the nodes in a cluster.
+--
+-- /See:/ 'nodeConfig' smart constructor.
+data NodeConfig = NodeConfig'
+    { _ncLocalSsdCount  :: !(Maybe (Textual Int32))
+    , _ncDiskSizeGb     :: !(Maybe (Textual Int32))
+    , _ncTaints         :: !(Maybe [NodeTaint])
+    , _ncOAuthScopes    :: !(Maybe [Text])
+    , _ncServiceAccount :: !(Maybe Text)
+    , _ncAccelerators   :: !(Maybe [AcceleratorConfig])
+    , _ncImageType      :: !(Maybe Text)
+    , _ncMachineType    :: !(Maybe Text)
+    , _ncMetadata       :: !(Maybe NodeConfigMetadata)
+    , _ncDiskType       :: !(Maybe Text)
+    , _ncLabels         :: !(Maybe NodeConfigLabels)
+    , _ncMinCPUPlatform :: !(Maybe Text)
+    , _ncTags           :: !(Maybe [Text])
+    , _ncPreemptible    :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncLocalSsdCount'
+--
+-- * 'ncDiskSizeGb'
+--
+-- * 'ncTaints'
+--
+-- * 'ncOAuthScopes'
+--
+-- * 'ncServiceAccount'
+--
+-- * 'ncAccelerators'
+--
+-- * 'ncImageType'
+--
+-- * 'ncMachineType'
+--
+-- * 'ncMetadata'
+--
+-- * 'ncDiskType'
+--
+-- * 'ncLabels'
+--
+-- * 'ncMinCPUPlatform'
+--
+-- * 'ncTags'
+--
+-- * 'ncPreemptible'
+nodeConfig
+    :: NodeConfig
+nodeConfig =
+    NodeConfig'
+    { _ncLocalSsdCount = Nothing
+    , _ncDiskSizeGb = Nothing
+    , _ncTaints = Nothing
+    , _ncOAuthScopes = Nothing
+    , _ncServiceAccount = Nothing
+    , _ncAccelerators = Nothing
+    , _ncImageType = Nothing
+    , _ncMachineType = Nothing
+    , _ncMetadata = Nothing
+    , _ncDiskType = Nothing
+    , _ncLabels = Nothing
+    , _ncMinCPUPlatform = Nothing
+    , _ncTags = Nothing
+    , _ncPreemptible = Nothing
+    }
+
+-- | The number of local SSD disks to be attached to the node. The limit for
+-- this value is dependant upon the maximum number of disks available on a
+-- machine per zone. See:
+-- https:\/\/cloud.google.com\/compute\/docs\/disks\/local-ssd#local_ssd_limits
+-- for more information.
+ncLocalSsdCount :: Lens' NodeConfig (Maybe Int32)
+ncLocalSsdCount
+  = lens _ncLocalSsdCount
+      (\ s a -> s{_ncLocalSsdCount = a})
+      . mapping _Coerce
+
+-- | Size of the disk attached to each node, specified in GB. The smallest
+-- allowed disk size is 10GB. If unspecified, the default disk size is
+-- 100GB.
+ncDiskSizeGb :: Lens' NodeConfig (Maybe Int32)
+ncDiskSizeGb
+  = lens _ncDiskSizeGb (\ s a -> s{_ncDiskSizeGb = a})
+      . mapping _Coerce
+
+-- | List of kubernetes taints to be applied to each node. For more
+-- information, including usage and the valid values, see:
+-- https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/
+ncTaints :: Lens' NodeConfig [NodeTaint]
+ncTaints
+  = lens _ncTaints (\ s a -> s{_ncTaints = a}) .
+      _Default
+      . _Coerce
+
+-- | The set of Google API scopes to be made available on all of the node VMs
+-- under the \"default\" service account. The following scopes are
+-- recommended, but not required, and by default are not included: *
+-- \`https:\/\/www.googleapis.com\/auth\/compute\` is required for mounting
+-- persistent storage on your nodes. *
+-- \`https:\/\/www.googleapis.com\/auth\/devstorage.read_only\` is required
+-- for communicating with **gcr.io** (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
+      (\ s a -> s{_ncOAuthScopes = a})
+      . _Default
+      . _Coerce
+
+-- | The Google Cloud Platform Service Account to be used by the node VMs. If
+-- no Service Account is specified, the \"default\" service account is
+-- used.
+ncServiceAccount :: Lens' NodeConfig (Maybe Text)
+ncServiceAccount
+  = lens _ncServiceAccount
+      (\ s a -> s{_ncServiceAccount = a})
+
+-- | A list of hardware accelerators to be attached to each node. See
+-- https:\/\/cloud.google.com\/compute\/docs\/gpus for more information
+-- about support for GPUs.
+ncAccelerators :: Lens' NodeConfig [AcceleratorConfig]
+ncAccelerators
+  = lens _ncAccelerators
+      (\ s a -> s{_ncAccelerators = a})
+      . _Default
+      . _Coerce
+
+-- | The image type to use for this node. Note that for a given image type,
+-- the latest version of it will be used.
+ncImageType :: Lens' NodeConfig (Maybe Text)
+ncImageType
+  = lens _ncImageType (\ s a -> s{_ncImageType = a})
+
+-- | The name of a Google Compute Engine [machine
+-- type](\/compute\/docs\/machine-types) (e.g. \`n1-standard-1\`). If
+-- unspecified, the default machine type is \`n1-standard-1\`.
+ncMachineType :: Lens' NodeConfig (Maybe Text)
+ncMachineType
+  = lens _ncMachineType
+      (\ s a -> s{_ncMachineType = a})
+
+-- | 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 reserved keys:
+-- \"cluster-location\" \"cluster-name\" \"cluster-uid\" \"configure-sh\"
+-- \"enable-os-login\" \"gci-update-strategy\" \"gci-ensure-gke-docker\"
+-- \"instance-template\" \"kube-env\" \"startup-script\" \"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})
+
+-- | Type of the disk attached to each node (e.g. \'pd-standard\' or
+-- \'pd-ssd\') If unspecified, the default disk type is \'pd-standard\'
+ncDiskType :: Lens' NodeConfig (Maybe Text)
+ncDiskType
+  = lens _ncDiskType (\ s a -> s{_ncDiskType = a})
+
+-- | The map of Kubernetes labels (key\/value pairs) to be applied to each
+-- node. These will added in addition to any default label(s) that
+-- Kubernetes may apply to the node. In case of conflict in label keys, the
+-- applied set may differ depending on the Kubernetes version -- it\'s best
+-- to assume the behavior is undefined and conflicts should be avoided. For
+-- more information, including usage and the valid values, see:
+-- https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/labels\/
+ncLabels :: Lens' NodeConfig (Maybe NodeConfigLabels)
+ncLabels = lens _ncLabels (\ s a -> s{_ncLabels = a})
+
+-- | Minimum CPU platform to be used by this instance. The instance may be
+-- scheduled on the specified or newer CPU platform. Applicable values are
+-- the friendly names of CPU platforms, such as
+-- 'minCpuPlatform: \"Intel Haswell\"' or
+-- 'minCpuPlatform: \"Intel Sandy Bridge\"'. For more information, read
+-- [how to specify min CPU
+-- platform](https:\/\/cloud.google.com\/compute\/docs\/instances\/specify-min-cpu-platform)
+ncMinCPUPlatform :: Lens' NodeConfig (Maybe Text)
+ncMinCPUPlatform
+  = lens _ncMinCPUPlatform
+      (\ s a -> s{_ncMinCPUPlatform = a})
+
+-- | The list of instance tags applied to all nodes. Tags are used to
+-- identify valid sources or targets for network firewalls and are
+-- specified by the client during cluster or node pool creation. Each tag
+-- within the list must comply with RFC1035.
+ncTags :: Lens' NodeConfig [Text]
+ncTags
+  = lens _ncTags (\ s a -> s{_ncTags = a}) . _Default .
+      _Coerce
+
+-- | Whether the nodes are created as preemptible VM instances. See:
+-- https:\/\/cloud.google.com\/compute\/docs\/instances\/preemptible for
+-- more information about preemptible VM instances.
+ncPreemptible :: Lens' NodeConfig (Maybe Bool)
+ncPreemptible
+  = lens _ncPreemptible
+      (\ s a -> s{_ncPreemptible = a})
+
+instance FromJSON NodeConfig where
+        parseJSON
+          = withObject "NodeConfig"
+              (\ o ->
+                 NodeConfig' <$>
+                   (o .:? "localSsdCount") <*> (o .:? "diskSizeGb") <*>
+                     (o .:? "taints" .!= mempty)
+                     <*> (o .:? "oauthScopes" .!= mempty)
+                     <*> (o .:? "serviceAccount")
+                     <*> (o .:? "accelerators" .!= mempty)
+                     <*> (o .:? "imageType")
+                     <*> (o .:? "machineType")
+                     <*> (o .:? "metadata")
+                     <*> (o .:? "diskType")
+                     <*> (o .:? "labels")
+                     <*> (o .:? "minCpuPlatform")
+                     <*> (o .:? "tags" .!= mempty)
+                     <*> (o .:? "preemptible"))
+
+instance ToJSON NodeConfig where
+        toJSON NodeConfig'{..}
+          = object
+              (catMaybes
+                 [("localSsdCount" .=) <$> _ncLocalSsdCount,
+                  ("diskSizeGb" .=) <$> _ncDiskSizeGb,
+                  ("taints" .=) <$> _ncTaints,
+                  ("oauthScopes" .=) <$> _ncOAuthScopes,
+                  ("serviceAccount" .=) <$> _ncServiceAccount,
+                  ("accelerators" .=) <$> _ncAccelerators,
+                  ("imageType" .=) <$> _ncImageType,
+                  ("machineType" .=) <$> _ncMachineType,
+                  ("metadata" .=) <$> _ncMetadata,
+                  ("diskType" .=) <$> _ncDiskType,
+                  ("labels" .=) <$> _ncLabels,
+                  ("minCpuPlatform" .=) <$> _ncMinCPUPlatform,
+                  ("tags" .=) <$> _ncTags,
+                  ("preemptible" .=) <$> _ncPreemptible])
+
+-- | 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'
+    { _oNodepoolConditions :: !(Maybe [StatusCondition])
+    , _oStatus             :: !(Maybe OperationStatus)
+    , _oLocation           :: !(Maybe Text)
+    , _oStartTime          :: !(Maybe Text)
+    , _oZone               :: !(Maybe Text)
+    , _oSelfLink           :: !(Maybe Text)
+    , _oName               :: !(Maybe Text)
+    , _oStatusMessage      :: !(Maybe Text)
+    , _oEndTime            :: !(Maybe Text)
+    , _oClusterConditions  :: !(Maybe [StatusCondition])
+    , _oOperationType      :: !(Maybe OperationOperationType)
+    , _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.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'oNodepoolConditions'
+--
+-- * 'oStatus'
+--
+-- * 'oLocation'
+--
+-- * 'oStartTime'
+--
+-- * 'oZone'
+--
+-- * 'oSelfLink'
+--
+-- * 'oName'
+--
+-- * 'oStatusMessage'
+--
+-- * 'oEndTime'
+--
+-- * 'oClusterConditions'
+--
+-- * 'oOperationType'
+--
+-- * 'oTargetLink'
+--
+-- * 'oDetail'
+operation
+    :: Operation
+operation =
+    Operation'
+    { _oNodepoolConditions = Nothing
+    , _oStatus = Nothing
+    , _oLocation = Nothing
+    , _oStartTime = Nothing
+    , _oZone = Nothing
+    , _oSelfLink = Nothing
+    , _oName = Nothing
+    , _oStatusMessage = Nothing
+    , _oEndTime = Nothing
+    , _oClusterConditions = Nothing
+    , _oOperationType = Nothing
+    , _oTargetLink = Nothing
+    , _oDetail = Nothing
+    }
+
+-- | Which conditions caused the current node pool state.
+oNodepoolConditions :: Lens' Operation [StatusCondition]
+oNodepoolConditions
+  = lens _oNodepoolConditions
+      (\ s a -> s{_oNodepoolConditions = a})
+      . _Default
+      . _Coerce
+
+-- | The current status of the operation.
+oStatus :: Lens' Operation (Maybe OperationStatus)
+oStatus = lens _oStatus (\ s a -> s{_oStatus = a})
+
+-- | [Output only] The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/regions-zones\/regions-zones#available) or
+-- [region](\/compute\/docs\/regions-zones\/regions-zones#available) in
+-- which the cluster resides.
+oLocation :: Lens' Operation (Maybe Text)
+oLocation
+  = lens _oLocation (\ s a -> s{_oLocation = a})
+
+-- | [Output only] The time the operation started, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+oStartTime :: Lens' Operation (Maybe Text)
+oStartTime
+  = lens _oStartTime (\ s a -> s{_oStartTime = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the operation is
+-- taking place. This field is deprecated, use location instead.
+oZone :: Lens' Operation (Maybe Text)
+oZone = lens _oZone (\ s a -> s{_oZone = a})
+
+-- | Server-defined URL for the resource.
+oSelfLink :: Lens' Operation (Maybe Text)
+oSelfLink
+  = lens _oSelfLink (\ s a -> s{_oSelfLink = a})
+
+-- | The server-assigned ID for the operation.
+oName :: Lens' Operation (Maybe Text)
+oName = lens _oName (\ s a -> s{_oName = a})
+
+-- | If an error has occurred, a textual description of the error.
+oStatusMessage :: Lens' Operation (Maybe Text)
+oStatusMessage
+  = lens _oStatusMessage
+      (\ s a -> s{_oStatusMessage = a})
+
+-- | [Output only] The time the operation completed, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+oEndTime :: Lens' Operation (Maybe Text)
+oEndTime = lens _oEndTime (\ s a -> s{_oEndTime = a})
+
+-- | Which conditions caused the current cluster state.
+oClusterConditions :: Lens' Operation [StatusCondition]
+oClusterConditions
+  = lens _oClusterConditions
+      (\ s a -> s{_oClusterConditions = a})
+      . _Default
+      . _Coerce
+
+-- | The operation type.
+oOperationType :: Lens' Operation (Maybe OperationOperationType)
+oOperationType
+  = lens _oOperationType
+      (\ s a -> s{_oOperationType = a})
+
+-- | Server-defined URL for the target of the operation.
+oTargetLink :: Lens' Operation (Maybe Text)
+oTargetLink
+  = lens _oTargetLink (\ s a -> s{_oTargetLink = a})
+
+-- | 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' <$>
+                   (o .:? "nodepoolConditions" .!= mempty) <*>
+                     (o .:? "status")
+                     <*> (o .:? "location")
+                     <*> (o .:? "startTime")
+                     <*> (o .:? "zone")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "endTime")
+                     <*> (o .:? "clusterConditions" .!= mempty)
+                     <*> (o .:? "operationType")
+                     <*> (o .:? "targetLink")
+                     <*> (o .:? "detail"))
+
+instance ToJSON Operation where
+        toJSON Operation'{..}
+          = object
+              (catMaybes
+                 [("nodepoolConditions" .=) <$> _oNodepoolConditions,
+                  ("status" .=) <$> _oStatus,
+                  ("location" .=) <$> _oLocation,
+                  ("startTime" .=) <$> _oStartTime,
+                  ("zone" .=) <$> _oZone,
+                  ("selfLink" .=) <$> _oSelfLink,
+                  ("name" .=) <$> _oName,
+                  ("statusMessage" .=) <$> _oStatusMessage,
+                  ("endTime" .=) <$> _oEndTime,
+                  ("clusterConditions" .=) <$> _oClusterConditions,
+                  ("operationType" .=) <$> _oOperationType,
+                  ("targetLink" .=) <$> _oTargetLink,
+                  ("detail" .=) <$> _oDetail])
+
+-- | The resource labels for the cluster to use to annotate any related
+-- Google Compute Engine resources.
+--
+-- /See:/ 'clusterResourceLabels' smart constructor.
+newtype ClusterResourceLabels = ClusterResourceLabels'
+    { _crlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClusterResourceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crlAddtional'
+clusterResourceLabels
+    :: HashMap Text Text -- ^ 'crlAddtional'
+    -> ClusterResourceLabels
+clusterResourceLabels pCrlAddtional_ =
+    ClusterResourceLabels'
+    { _crlAddtional = _Coerce # pCrlAddtional_
+    }
+
+crlAddtional :: Lens' ClusterResourceLabels (HashMap Text Text)
+crlAddtional
+  = lens _crlAddtional (\ s a -> s{_crlAddtional = a})
+      . _Coerce
+
+instance FromJSON ClusterResourceLabels where
+        parseJSON
+          = withObject "ClusterResourceLabels"
+              (\ o ->
+                 ClusterResourceLabels' <$> (parseJSONObject o))
+
+instance ToJSON ClusterResourceLabels where
+        toJSON = toJSON . _crlAddtional
+
+-- | A generic empty message that you can re-use to avoid defining duplicated
+-- empty messages in your APIs. A typical example is to use it as the
+-- request or the response type of an API method. For instance: service Foo
+-- { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The
+-- JSON representation for \`Empty\` is empty JSON object \`{}\`.
+--
+-- /See:/ 'empty' smart constructor.
+data Empty =
+    Empty'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Empty' with the minimum fields required to make a request.
+--
+empty
+    :: Empty
+empty = Empty'
+
+instance FromJSON Empty where
+        parseJSON = withObject "Empty" (\ o -> pure Empty')
+
+instance ToJSON Empty where
+        toJSON = const emptyObject
+
+-- | SetNodePoolAutoscalingRequest sets the autoscaler settings of a node
+-- pool.
+--
+-- /See:/ 'setNodePoolAutoscalingRequest' smart constructor.
+data SetNodePoolAutoscalingRequest = SetNodePoolAutoscalingRequest'
+    { _snparAutoscaling :: !(Maybe NodePoolAutoscaling)
+    , _snparZone        :: !(Maybe Text)
+    , _snparNodePoolId  :: !(Maybe Text)
+    , _snparName        :: !(Maybe Text)
+    , _snparClusterId   :: !(Maybe Text)
+    , _snparProjectId   :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetNodePoolAutoscalingRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snparAutoscaling'
+--
+-- * 'snparZone'
+--
+-- * 'snparNodePoolId'
+--
+-- * 'snparName'
+--
+-- * 'snparClusterId'
+--
+-- * 'snparProjectId'
+setNodePoolAutoscalingRequest
+    :: SetNodePoolAutoscalingRequest
+setNodePoolAutoscalingRequest =
+    SetNodePoolAutoscalingRequest'
+    { _snparAutoscaling = Nothing
+    , _snparZone = Nothing
+    , _snparNodePoolId = Nothing
+    , _snparName = Nothing
+    , _snparClusterId = Nothing
+    , _snparProjectId = Nothing
+    }
+
+-- | Autoscaling configuration for the node pool.
+snparAutoscaling :: Lens' SetNodePoolAutoscalingRequest (Maybe NodePoolAutoscaling)
+snparAutoscaling
+  = lens _snparAutoscaling
+      (\ s a -> s{_snparAutoscaling = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snparZone :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparZone
+  = lens _snparZone (\ s a -> s{_snparZone = a})
+
+-- | Deprecated. The name of the node pool to upgrade. This field has been
+-- deprecated and replaced by the name field.
+snparNodePoolId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparNodePoolId
+  = lens _snparNodePoolId
+      (\ s a -> s{_snparNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool) of the node pool to set
+-- autoscaler settings. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+snparName :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparName
+  = lens _snparName (\ s a -> s{_snparName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+snparClusterId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparClusterId
+  = lens _snparClusterId
+      (\ s a -> s{_snparClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+snparProjectId :: Lens' SetNodePoolAutoscalingRequest (Maybe Text)
+snparProjectId
+  = lens _snparProjectId
+      (\ s a -> s{_snparProjectId = a})
+
+instance FromJSON SetNodePoolAutoscalingRequest where
+        parseJSON
+          = withObject "SetNodePoolAutoscalingRequest"
+              (\ o ->
+                 SetNodePoolAutoscalingRequest' <$>
+                   (o .:? "autoscaling") <*> (o .:? "zone") <*>
+                     (o .:? "nodePoolId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetNodePoolAutoscalingRequest where
+        toJSON SetNodePoolAutoscalingRequest'{..}
+          = object
+              (catMaybes
+                 [("autoscaling" .=) <$> _snparAutoscaling,
+                  ("zone" .=) <$> _snparZone,
+                  ("nodePoolId" .=) <$> _snparNodePoolId,
+                  ("name" .=) <$> _snparName,
+                  ("clusterId" .=) <$> _snparClusterId,
+                  ("projectId" .=) <$> _snparProjectId])
+
+-- | CompleteIPRotationRequest moves the cluster master back into single-IP
+-- mode.
+--
+-- /See:/ 'completeIPRotationRequest' smart constructor.
+data CompleteIPRotationRequest = CompleteIPRotationRequest'
+    { _cirrZone      :: !(Maybe Text)
+    , _cirrName      :: !(Maybe Text)
+    , _cirrClusterId :: !(Maybe Text)
+    , _cirrProjectId :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CompleteIPRotationRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirrZone'
+--
+-- * 'cirrName'
+--
+-- * 'cirrClusterId'
+--
+-- * 'cirrProjectId'
+completeIPRotationRequest
+    :: CompleteIPRotationRequest
+completeIPRotationRequest =
+    CompleteIPRotationRequest'
+    { _cirrZone = Nothing
+    , _cirrName = Nothing
+    , _cirrClusterId = Nothing
+    , _cirrProjectId = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+cirrZone :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrZone = lens _cirrZone (\ s a -> s{_cirrZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to complete IP
+-- rotation. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+cirrName :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrName = lens _cirrName (\ s a -> s{_cirrName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+cirrClusterId :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrClusterId
+  = lens _cirrClusterId
+      (\ s a -> s{_cirrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+cirrProjectId :: Lens' CompleteIPRotationRequest (Maybe Text)
+cirrProjectId
+  = lens _cirrProjectId
+      (\ s a -> s{_cirrProjectId = a})
+
+instance FromJSON CompleteIPRotationRequest where
+        parseJSON
+          = withObject "CompleteIPRotationRequest"
+              (\ o ->
+                 CompleteIPRotationRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON CompleteIPRotationRequest where
+        toJSON CompleteIPRotationRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _cirrZone,
+                  ("name" .=) <$> _cirrName,
+                  ("clusterId" .=) <$> _cirrClusterId,
+                  ("projectId" .=) <$> _cirrProjectId])
+
+-- | NodeManagement defines the set of node management services turned on for
+-- the node pool.
+--
+-- /See:/ 'nodeManagement' smart constructor.
+data NodeManagement = NodeManagement'
+    { _nmAutoUpgrade    :: !(Maybe Bool)
+    , _nmAutoRepair     :: !(Maybe Bool)
+    , _nmUpgradeOptions :: !(Maybe AutoUpgradeOptions)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeManagement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nmAutoUpgrade'
+--
+-- * 'nmAutoRepair'
+--
+-- * 'nmUpgradeOptions'
+nodeManagement
+    :: NodeManagement
+nodeManagement =
+    NodeManagement'
+    { _nmAutoUpgrade = Nothing
+    , _nmAutoRepair = Nothing
+    , _nmUpgradeOptions = Nothing
+    }
+
+-- | A flag that specifies whether node auto-upgrade is enabled for the node
+-- pool. If enabled, node auto-upgrade helps keep the nodes in your node
+-- pool up to date with the latest release version of Kubernetes.
+nmAutoUpgrade :: Lens' NodeManagement (Maybe Bool)
+nmAutoUpgrade
+  = lens _nmAutoUpgrade
+      (\ s a -> s{_nmAutoUpgrade = a})
+
+-- | A flag that specifies whether the node auto-repair is enabled for the
+-- node pool. If enabled, the nodes in this node pool will be monitored
+-- and, if they fail health checks too many times, an automatic repair
+-- action will be triggered.
+nmAutoRepair :: Lens' NodeManagement (Maybe Bool)
+nmAutoRepair
+  = lens _nmAutoRepair (\ s a -> s{_nmAutoRepair = a})
+
+-- | Specifies the Auto Upgrade knobs for the node pool.
+nmUpgradeOptions :: Lens' NodeManagement (Maybe AutoUpgradeOptions)
+nmUpgradeOptions
+  = lens _nmUpgradeOptions
+      (\ s a -> s{_nmUpgradeOptions = a})
+
+instance FromJSON NodeManagement where
+        parseJSON
+          = withObject "NodeManagement"
+              (\ o ->
+                 NodeManagement' <$>
+                   (o .:? "autoUpgrade") <*> (o .:? "autoRepair") <*>
+                     (o .:? "upgradeOptions"))
+
+instance ToJSON NodeManagement where
+        toJSON NodeManagement'{..}
+          = object
+              (catMaybes
+                 [("autoUpgrade" .=) <$> _nmAutoUpgrade,
+                  ("autoRepair" .=) <$> _nmAutoRepair,
+                  ("upgradeOptions" .=) <$> _nmUpgradeOptions])
+
+-- | Kubernetes taint is comprised of three fields: key, value, and effect.
+-- Effect can only be one of three types: NoSchedule, PreferNoSchedule or
+-- NoExecute. For more information, including usage and the valid values,
+-- see:
+-- https:\/\/kubernetes.io\/docs\/concepts\/configuration\/taint-and-toleration\/
+--
+-- /See:/ 'nodeTaint' smart constructor.
+data NodeTaint = NodeTaint'
+    { _ntEffect :: !(Maybe NodeTaintEffect)
+    , _ntValue  :: !(Maybe Text)
+    , _ntKey    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeTaint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ntEffect'
+--
+-- * 'ntValue'
+--
+-- * 'ntKey'
+nodeTaint
+    :: NodeTaint
+nodeTaint =
+    NodeTaint'
+    { _ntEffect = Nothing
+    , _ntValue = Nothing
+    , _ntKey = Nothing
+    }
+
+-- | Effect for taint.
+ntEffect :: Lens' NodeTaint (Maybe NodeTaintEffect)
+ntEffect = lens _ntEffect (\ s a -> s{_ntEffect = a})
+
+-- | Value for taint.
+ntValue :: Lens' NodeTaint (Maybe Text)
+ntValue = lens _ntValue (\ s a -> s{_ntValue = a})
+
+-- | Key for taint.
+ntKey :: Lens' NodeTaint (Maybe Text)
+ntKey = lens _ntKey (\ s a -> s{_ntKey = a})
+
+instance FromJSON NodeTaint where
+        parseJSON
+          = withObject "NodeTaint"
+              (\ o ->
+                 NodeTaint' <$>
+                   (o .:? "effect") <*> (o .:? "value") <*>
+                     (o .:? "key"))
+
+instance ToJSON NodeTaint where
+        toJSON NodeTaint'{..}
+          = object
+              (catMaybes
+                 [("effect" .=) <$> _ntEffect,
+                  ("value" .=) <$> _ntValue, ("key" .=) <$> _ntKey])
+
+-- | NodePoolAutoscaling contains information required by cluster autoscaler
+-- to adjust the size of the node pool to the current cluster usage.
+--
+-- /See:/ 'nodePoolAutoscaling' smart constructor.
+data NodePoolAutoscaling = NodePoolAutoscaling'
+    { _npaMaxNodeCount :: !(Maybe (Textual Int32))
+    , _npaEnabled      :: !(Maybe Bool)
+    , _npaMinNodeCount :: !(Maybe (Textual Int32))
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodePoolAutoscaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npaMaxNodeCount'
+--
+-- * 'npaEnabled'
+--
+-- * 'npaMinNodeCount'
+nodePoolAutoscaling
+    :: NodePoolAutoscaling
+nodePoolAutoscaling =
+    NodePoolAutoscaling'
+    { _npaMaxNodeCount = Nothing
+    , _npaEnabled = Nothing
+    , _npaMinNodeCount = Nothing
+    }
+
+-- | Maximum number of nodes in the NodePool. Must be >= min_node_count.
+-- There has to enough quota to scale up the cluster.
+npaMaxNodeCount :: Lens' NodePoolAutoscaling (Maybe Int32)
+npaMaxNodeCount
+  = lens _npaMaxNodeCount
+      (\ s a -> s{_npaMaxNodeCount = a})
+      . mapping _Coerce
+
+-- | Is autoscaling enabled for this node pool.
+npaEnabled :: Lens' NodePoolAutoscaling (Maybe Bool)
+npaEnabled
+  = lens _npaEnabled (\ s a -> s{_npaEnabled = a})
+
+-- | Minimum number of nodes in the NodePool. Must be >= 1 and \<=
+-- max_node_count.
+npaMinNodeCount :: Lens' NodePoolAutoscaling (Maybe Int32)
+npaMinNodeCount
+  = lens _npaMinNodeCount
+      (\ s a -> s{_npaMinNodeCount = a})
+      . mapping _Coerce
+
+instance FromJSON NodePoolAutoscaling where
+        parseJSON
+          = withObject "NodePoolAutoscaling"
+              (\ o ->
+                 NodePoolAutoscaling' <$>
+                   (o .:? "maxNodeCount") <*> (o .:? "enabled") <*>
+                     (o .:? "minNodeCount"))
+
+instance ToJSON NodePoolAutoscaling where
+        toJSON NodePoolAutoscaling'{..}
+          = object
+              (catMaybes
+                 [("maxNodeCount" .=) <$> _npaMaxNodeCount,
+                  ("enabled" .=) <$> _npaEnabled,
+                  ("minNodeCount" .=) <$> _npaMinNodeCount])
+
+-- | SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
+--
+-- /See:/ 'setMaintenancePolicyRequest' smart constructor.
+data SetMaintenancePolicyRequest = SetMaintenancePolicyRequest'
+    { _smprZone              :: !(Maybe Text)
+    , _smprName              :: !(Maybe Text)
+    , _smprClusterId         :: !(Maybe Text)
+    , _smprMaintenancePolicy :: !(Maybe MaintenancePolicy)
+    , _smprProjectId         :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetMaintenancePolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smprZone'
+--
+-- * 'smprName'
+--
+-- * 'smprClusterId'
+--
+-- * 'smprMaintenancePolicy'
+--
+-- * 'smprProjectId'
+setMaintenancePolicyRequest
+    :: SetMaintenancePolicyRequest
+setMaintenancePolicyRequest =
+    SetMaintenancePolicyRequest'
+    { _smprZone = Nothing
+    , _smprName = Nothing
+    , _smprClusterId = Nothing
+    , _smprMaintenancePolicy = Nothing
+    , _smprProjectId = Nothing
+    }
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+smprZone :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprZone = lens _smprZone (\ s a -> s{_smprZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set
+-- maintenance policy. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+smprName :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprName = lens _smprName (\ s a -> s{_smprName = a})
+
+-- | The name of the cluster to update.
+smprClusterId :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprClusterId
+  = lens _smprClusterId
+      (\ s a -> s{_smprClusterId = a})
+
+-- | The maintenance policy to be set for the cluster. An empty field clears
+-- the existing maintenance policy.
+smprMaintenancePolicy :: Lens' SetMaintenancePolicyRequest (Maybe MaintenancePolicy)
+smprMaintenancePolicy
+  = lens _smprMaintenancePolicy
+      (\ s a -> s{_smprMaintenancePolicy = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+smprProjectId :: Lens' SetMaintenancePolicyRequest (Maybe Text)
+smprProjectId
+  = lens _smprProjectId
+      (\ s a -> s{_smprProjectId = a})
+
+instance FromJSON SetMaintenancePolicyRequest where
+        parseJSON
+          = withObject "SetMaintenancePolicyRequest"
+              (\ o ->
+                 SetMaintenancePolicyRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "maintenancePolicy")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetMaintenancePolicyRequest where
+        toJSON SetMaintenancePolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _smprZone,
+                  ("name" .=) <$> _smprName,
+                  ("clusterId" .=) <$> _smprClusterId,
+                  ("maintenancePolicy" .=) <$> _smprMaintenancePolicy,
+                  ("projectId" .=) <$> _smprProjectId])
+
+-- | Configuration for the Kubernetes Dashboard.
+--
+-- /See:/ 'kubernetesDashboard' smart constructor.
+newtype KubernetesDashboard = KubernetesDashboard'
+    { _kdDisabled :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'KubernetesDashboard' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'kdDisabled'
+kubernetesDashboard
+    :: KubernetesDashboard
+kubernetesDashboard =
+    KubernetesDashboard'
+    { _kdDisabled = Nothing
+    }
+
+-- | Whether the Kubernetes Dashboard is enabled for this cluster.
+kdDisabled :: Lens' KubernetesDashboard (Maybe Bool)
+kdDisabled
+  = lens _kdDisabled (\ s a -> s{_kdDisabled = a})
+
+instance FromJSON KubernetesDashboard where
+        parseJSON
+          = withObject "KubernetesDashboard"
+              (\ o -> KubernetesDashboard' <$> (o .:? "disabled"))
+
+instance ToJSON KubernetesDashboard where
+        toJSON KubernetesDashboard'{..}
+          = object
+              (catMaybes [("disabled" .=) <$> _kdDisabled])
+
+-- | Configuration for client certificates on the cluster.
+--
+-- /See:/ 'clientCertificateConfig' smart constructor.
+newtype ClientCertificateConfig = ClientCertificateConfig'
+    { _cccIssueClientCertificate :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ClientCertificateConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cccIssueClientCertificate'
+clientCertificateConfig
+    :: ClientCertificateConfig
+clientCertificateConfig =
+    ClientCertificateConfig'
+    { _cccIssueClientCertificate = Nothing
+    }
+
+-- | Issue a client certificate.
+cccIssueClientCertificate :: Lens' ClientCertificateConfig (Maybe Bool)
+cccIssueClientCertificate
+  = lens _cccIssueClientCertificate
+      (\ s a -> s{_cccIssueClientCertificate = a})
+
+instance FromJSON ClientCertificateConfig where
+        parseJSON
+          = withObject "ClientCertificateConfig"
+              (\ o ->
+                 ClientCertificateConfig' <$>
+                   (o .:? "issueClientCertificate"))
+
+instance ToJSON ClientCertificateConfig where
+        toJSON ClientCertificateConfig'{..}
+          = object
+              (catMaybes
+                 [("issueClientCertificate" .=) <$>
+                    _cccIssueClientCertificate])
+
+-- | SetLabelsRequest sets the Google Cloud Platform labels on a Google
+-- Container Engine cluster, which will in turn set them for Google Compute
+-- Engine resources used by that cluster
+--
+-- /See:/ 'setLabelsRequest' smart constructor.
+data SetLabelsRequest = SetLabelsRequest'
+    { _slrResourceLabels   :: !(Maybe SetLabelsRequestResourceLabels)
+    , _slrZone             :: !(Maybe Text)
+    , _slrName             :: !(Maybe Text)
+    , _slrClusterId        :: !(Maybe Text)
+    , _slrProjectId        :: !(Maybe Text)
+    , _slrLabelFingerprint :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetLabelsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slrResourceLabels'
+--
+-- * 'slrZone'
+--
+-- * 'slrName'
+--
+-- * 'slrClusterId'
+--
+-- * 'slrProjectId'
+--
+-- * 'slrLabelFingerprint'
+setLabelsRequest
+    :: SetLabelsRequest
+setLabelsRequest =
+    SetLabelsRequest'
+    { _slrResourceLabels = Nothing
+    , _slrZone = Nothing
+    , _slrName = Nothing
+    , _slrClusterId = Nothing
+    , _slrProjectId = Nothing
+    , _slrLabelFingerprint = Nothing
+    }
+
+-- | The labels to set for that cluster.
+slrResourceLabels :: Lens' SetLabelsRequest (Maybe SetLabelsRequestResourceLabels)
+slrResourceLabels
+  = lens _slrResourceLabels
+      (\ s a -> s{_slrResourceLabels = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+slrZone :: Lens' SetLabelsRequest (Maybe Text)
+slrZone = lens _slrZone (\ s a -> s{_slrZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set labels.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+slrName :: Lens' SetLabelsRequest (Maybe Text)
+slrName = lens _slrName (\ s a -> s{_slrName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+slrClusterId :: Lens' SetLabelsRequest (Maybe Text)
+slrClusterId
+  = lens _slrClusterId (\ s a -> s{_slrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+slrProjectId :: Lens' SetLabelsRequest (Maybe Text)
+slrProjectId
+  = lens _slrProjectId (\ s a -> s{_slrProjectId = a})
+
+-- | The fingerprint of the previous set of labels for this resource, used to
+-- detect conflicts. The fingerprint is initially generated by Kubernetes
+-- Engine and changes after every request to modify or update labels. You
+-- must always provide an up-to-date fingerprint hash when updating or
+-- changing labels. Make a 'get()' request to the resource to get the
+-- latest fingerprint.
+slrLabelFingerprint :: Lens' SetLabelsRequest (Maybe Text)
+slrLabelFingerprint
+  = lens _slrLabelFingerprint
+      (\ s a -> s{_slrLabelFingerprint = a})
+
+instance FromJSON SetLabelsRequest where
+        parseJSON
+          = withObject "SetLabelsRequest"
+              (\ o ->
+                 SetLabelsRequest' <$>
+                   (o .:? "resourceLabels") <*> (o .:? "zone") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "labelFingerprint"))
+
+instance ToJSON SetLabelsRequest where
+        toJSON SetLabelsRequest'{..}
+          = object
+              (catMaybes
+                 [("resourceLabels" .=) <$> _slrResourceLabels,
+                  ("zone" .=) <$> _slrZone, ("name" .=) <$> _slrName,
+                  ("clusterId" .=) <$> _slrClusterId,
+                  ("projectId" .=) <$> _slrProjectId,
+                  ("labelFingerprint" .=) <$> _slrLabelFingerprint])
+
+-- | MaintenanceWindow defines the maintenance window to be used for the
+-- cluster.
+--
+-- /See:/ 'maintenanceWindow' smart constructor.
+newtype MaintenanceWindow = MaintenanceWindow'
+    { _mwDailyMaintenanceWindow :: Maybe DailyMaintenanceWindow
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MaintenanceWindow' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwDailyMaintenanceWindow'
+maintenanceWindow
+    :: MaintenanceWindow
+maintenanceWindow =
+    MaintenanceWindow'
+    { _mwDailyMaintenanceWindow = Nothing
+    }
+
+-- | DailyMaintenanceWindow specifies a daily maintenance operation window.
+mwDailyMaintenanceWindow :: Lens' MaintenanceWindow (Maybe DailyMaintenanceWindow)
+mwDailyMaintenanceWindow
+  = lens _mwDailyMaintenanceWindow
+      (\ s a -> s{_mwDailyMaintenanceWindow = a})
+
+instance FromJSON MaintenanceWindow where
+        parseJSON
+          = withObject "MaintenanceWindow"
+              (\ o ->
+                 MaintenanceWindow' <$>
+                   (o .:? "dailyMaintenanceWindow"))
+
+instance ToJSON MaintenanceWindow where
+        toJSON MaintenanceWindow'{..}
+          = object
+              (catMaybes
+                 [("dailyMaintenanceWindow" .=) <$>
+                    _mwDailyMaintenanceWindow])
+
+-- | Configuration for controlling how IPs are allocated in the cluster.
+--
+-- /See:/ 'ipAllocationPolicy' smart constructor.
+data IPAllocationPolicy = IPAllocationPolicy'
+    { _iapServicesSecondaryRangeName :: !(Maybe Text)
+    , _iapNodeIPv4CIdR               :: !(Maybe Text)
+    , _iapUseIPAliases               :: !(Maybe Bool)
+    , _iapClusterIPv4CIdR            :: !(Maybe Text)
+    , _iapSubnetworkName             :: !(Maybe Text)
+    , _iapClusterSecondaryRangeName  :: !(Maybe Text)
+    , _iapNodeIPv4CIdRBlock          :: !(Maybe Text)
+    , _iapServicesIPv4CIdR           :: !(Maybe Text)
+    , _iapClusterIPv4CIdRBlock       :: !(Maybe Text)
+    , _iapServicesIPv4CIdRBlock      :: !(Maybe Text)
+    , _iapCreateSubnetwork           :: !(Maybe Bool)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IPAllocationPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iapServicesSecondaryRangeName'
+--
+-- * 'iapNodeIPv4CIdR'
+--
+-- * 'iapUseIPAliases'
+--
+-- * 'iapClusterIPv4CIdR'
+--
+-- * 'iapSubnetworkName'
+--
+-- * 'iapClusterSecondaryRangeName'
+--
+-- * 'iapNodeIPv4CIdRBlock'
+--
+-- * 'iapServicesIPv4CIdR'
+--
+-- * 'iapClusterIPv4CIdRBlock'
+--
+-- * 'iapServicesIPv4CIdRBlock'
+--
+-- * 'iapCreateSubnetwork'
+ipAllocationPolicy
+    :: IPAllocationPolicy
+ipAllocationPolicy =
+    IPAllocationPolicy'
+    { _iapServicesSecondaryRangeName = Nothing
+    , _iapNodeIPv4CIdR = Nothing
+    , _iapUseIPAliases = Nothing
+    , _iapClusterIPv4CIdR = Nothing
+    , _iapSubnetworkName = Nothing
+    , _iapClusterSecondaryRangeName = Nothing
+    , _iapNodeIPv4CIdRBlock = Nothing
+    , _iapServicesIPv4CIdR = Nothing
+    , _iapClusterIPv4CIdRBlock = Nothing
+    , _iapServicesIPv4CIdRBlock = Nothing
+    , _iapCreateSubnetwork = Nothing
+    }
+
+-- | The name of the secondary range to be used as for the services CIDR
+-- block. The secondary range will be used for service ClusterIPs. This
+-- must be an existing secondary range associated with the cluster
+-- subnetwork. This field is only applicable with use_ip_aliases is true
+-- and create_subnetwork is false.
+iapServicesSecondaryRangeName :: Lens' IPAllocationPolicy (Maybe Text)
+iapServicesSecondaryRangeName
+  = lens _iapServicesSecondaryRangeName
+      (\ s a -> s{_iapServicesSecondaryRangeName = a})
+
+-- | This field is deprecated, use node_ipv4_cidr_block.
+iapNodeIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
+iapNodeIPv4CIdR
+  = lens _iapNodeIPv4CIdR
+      (\ s a -> s{_iapNodeIPv4CIdR = a})
+
+-- | Whether alias IPs will be used for pod IPs in the cluster.
+iapUseIPAliases :: Lens' IPAllocationPolicy (Maybe Bool)
+iapUseIPAliases
+  = lens _iapUseIPAliases
+      (\ s a -> s{_iapUseIPAliases = a})
+
+-- | This field is deprecated, use cluster_ipv4_cidr_block.
+iapClusterIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
+iapClusterIPv4CIdR
+  = lens _iapClusterIPv4CIdR
+      (\ s a -> s{_iapClusterIPv4CIdR = a})
+
+-- | A custom subnetwork name to be used if \`create_subnetwork\` is true. If
+-- this field is empty, then an automatic name will be chosen for the new
+-- subnetwork.
+iapSubnetworkName :: Lens' IPAllocationPolicy (Maybe Text)
+iapSubnetworkName
+  = lens _iapSubnetworkName
+      (\ s a -> s{_iapSubnetworkName = a})
+
+-- | The name of the secondary range to be used for the cluster CIDR block.
+-- The secondary range will be used for pod IP addresses. This must be an
+-- existing secondary range associated with the cluster subnetwork. This
+-- field is only applicable with use_ip_aliases is true and
+-- create_subnetwork is false.
+iapClusterSecondaryRangeName :: Lens' IPAllocationPolicy (Maybe Text)
+iapClusterSecondaryRangeName
+  = lens _iapClusterSecondaryRangeName
+      (\ s a -> s{_iapClusterSecondaryRangeName = a})
+
+-- | The IP address range of the instance IPs in this cluster. This is
+-- applicable only if \`create_subnetwork\` is true. Set to blank to have a
+-- range chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to
+-- have a range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapNodeIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapNodeIPv4CIdRBlock
+  = lens _iapNodeIPv4CIdRBlock
+      (\ s a -> s{_iapNodeIPv4CIdRBlock = a})
+
+-- | This field is deprecated, use services_ipv4_cidr_block.
+iapServicesIPv4CIdR :: Lens' IPAllocationPolicy (Maybe Text)
+iapServicesIPv4CIdR
+  = lens _iapServicesIPv4CIdR
+      (\ s a -> s{_iapServicesIPv4CIdR = a})
+
+-- | The IP address range for the cluster pod IPs. If this field is set, then
+-- \`cluster.cluster_ipv4_cidr\` must be left blank. This field is only
+-- applicable when \`use_ip_aliases\` is true. Set to blank to have a range
+-- chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to have a
+-- range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapClusterIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapClusterIPv4CIdRBlock
+  = lens _iapClusterIPv4CIdRBlock
+      (\ s a -> s{_iapClusterIPv4CIdRBlock = a})
+
+-- | The IP address range of the services IPs in this cluster. If blank, a
+-- range will be automatically chosen with the default size. This field is
+-- only applicable when \`use_ip_aliases\` is true. Set to blank to have a
+-- range chosen with the default size. Set to \/netmask (e.g. \`\/14\`) to
+-- have a range chosen with a specific netmask. Set to a
+-- [CIDR](http:\/\/en.wikipedia.org\/wiki\/Classless_Inter-Domain_Routing)
+-- notation (e.g. \`10.96.0.0\/14\`) from the RFC-1918 private networks
+-- (e.g. \`10.0.0.0\/8\`, \`172.16.0.0\/12\`, \`192.168.0.0\/16\`) to pick
+-- a specific range to use.
+iapServicesIPv4CIdRBlock :: Lens' IPAllocationPolicy (Maybe Text)
+iapServicesIPv4CIdRBlock
+  = lens _iapServicesIPv4CIdRBlock
+      (\ s a -> s{_iapServicesIPv4CIdRBlock = a})
+
+-- | Whether a new subnetwork will be created automatically for the cluster.
+-- This field is only applicable when \`use_ip_aliases\` is true.
+iapCreateSubnetwork :: Lens' IPAllocationPolicy (Maybe Bool)
+iapCreateSubnetwork
+  = lens _iapCreateSubnetwork
+      (\ s a -> s{_iapCreateSubnetwork = a})
+
+instance FromJSON IPAllocationPolicy where
+        parseJSON
+          = withObject "IPAllocationPolicy"
+              (\ o ->
+                 IPAllocationPolicy' <$>
+                   (o .:? "servicesSecondaryRangeName") <*>
+                     (o .:? "nodeIpv4Cidr")
+                     <*> (o .:? "useIpAliases")
+                     <*> (o .:? "clusterIpv4Cidr")
+                     <*> (o .:? "subnetworkName")
+                     <*> (o .:? "clusterSecondaryRangeName")
+                     <*> (o .:? "nodeIpv4CidrBlock")
+                     <*> (o .:? "servicesIpv4Cidr")
+                     <*> (o .:? "clusterIpv4CidrBlock")
+                     <*> (o .:? "servicesIpv4CidrBlock")
+                     <*> (o .:? "createSubnetwork"))
+
+instance ToJSON IPAllocationPolicy where
+        toJSON IPAllocationPolicy'{..}
+          = object
+              (catMaybes
+                 [("servicesSecondaryRangeName" .=) <$>
+                    _iapServicesSecondaryRangeName,
+                  ("nodeIpv4Cidr" .=) <$> _iapNodeIPv4CIdR,
+                  ("useIpAliases" .=) <$> _iapUseIPAliases,
+                  ("clusterIpv4Cidr" .=) <$> _iapClusterIPv4CIdR,
+                  ("subnetworkName" .=) <$> _iapSubnetworkName,
+                  ("clusterSecondaryRangeName" .=) <$>
+                    _iapClusterSecondaryRangeName,
+                  ("nodeIpv4CidrBlock" .=) <$> _iapNodeIPv4CIdRBlock,
+                  ("servicesIpv4Cidr" .=) <$> _iapServicesIPv4CIdR,
+                  ("clusterIpv4CidrBlock" .=) <$>
+                    _iapClusterIPv4CIdRBlock,
+                  ("servicesIpv4CidrBlock" .=) <$>
+                    _iapServicesIPv4CIdRBlock,
+                  ("createSubnetwork" .=) <$> _iapCreateSubnetwork])
+
+-- | Configuration for the addons that can be automatically spun up in the
+-- cluster, enabling additional functionality.
+--
+-- /See:/ 'addonsConfig' smart constructor.
+data AddonsConfig = AddonsConfig'
+    { _acNetworkPolicyConfig      :: !(Maybe NetworkPolicyConfig)
+    , _acHorizontalPodAutoscaling :: !(Maybe HorizontalPodAutoscaling)
+    , _acHTTPLoadBalancing        :: !(Maybe HTTPLoadBalancing)
+    , _acKubernetesDashboard      :: !(Maybe KubernetesDashboard)
+    } 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:
+--
+-- * 'acNetworkPolicyConfig'
+--
+-- * 'acHorizontalPodAutoscaling'
+--
+-- * 'acHTTPLoadBalancing'
+--
+-- * 'acKubernetesDashboard'
+addonsConfig
+    :: AddonsConfig
+addonsConfig =
+    AddonsConfig'
+    { _acNetworkPolicyConfig = Nothing
+    , _acHorizontalPodAutoscaling = Nothing
+    , _acHTTPLoadBalancing = Nothing
+    , _acKubernetesDashboard = Nothing
+    }
+
+-- | Configuration for NetworkPolicy. This only tracks whether the addon is
+-- enabled or not on the Master, it does not track whether network policy
+-- is enabled for the nodes.
+acNetworkPolicyConfig :: Lens' AddonsConfig (Maybe NetworkPolicyConfig)
+acNetworkPolicyConfig
+  = lens _acNetworkPolicyConfig
+      (\ s a -> s{_acNetworkPolicyConfig = a})
+
+-- | 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})
+
+-- | Configuration for the Kubernetes Dashboard.
+acKubernetesDashboard :: Lens' AddonsConfig (Maybe KubernetesDashboard)
+acKubernetesDashboard
+  = lens _acKubernetesDashboard
+      (\ s a -> s{_acKubernetesDashboard = a})
+
+instance FromJSON AddonsConfig where
+        parseJSON
+          = withObject "AddonsConfig"
+              (\ o ->
+                 AddonsConfig' <$>
+                   (o .:? "networkPolicyConfig") <*>
+                     (o .:? "horizontalPodAutoscaling")
+                     <*> (o .:? "httpLoadBalancing")
+                     <*> (o .:? "kubernetesDashboard"))
+
+instance ToJSON AddonsConfig where
+        toJSON AddonsConfig'{..}
+          = object
+              (catMaybes
+                 [("networkPolicyConfig" .=) <$>
+                    _acNetworkPolicyConfig,
+                  ("horizontalPodAutoscaling" .=) <$>
+                    _acHorizontalPodAutoscaling,
+                  ("httpLoadBalancing" .=) <$> _acHTTPLoadBalancing,
+                  ("kubernetesDashboard" .=) <$>
+                    _acKubernetesDashboard])
+
+-- | NetworkConfig reports the relative names of network & subnetwork.
+--
+-- /See:/ 'networkConfig' smart constructor.
+data NetworkConfig = NetworkConfig'
+    { _ncNetwork    :: !(Maybe Text)
+    , _ncSubnetwork :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncNetwork'
+--
+-- * 'ncSubnetwork'
+networkConfig
+    :: NetworkConfig
+networkConfig =
+    NetworkConfig'
+    { _ncNetwork = Nothing
+    , _ncSubnetwork = Nothing
+    }
+
+-- | Output only. The relative name of the Google Compute Engine
+-- network(\/compute\/docs\/networks-and-firewalls#networks) to which the
+-- cluster is connected. Example:
+-- projects\/my-project\/global\/networks\/my-network
+ncNetwork :: Lens' NetworkConfig (Maybe Text)
+ncNetwork
+  = lens _ncNetwork (\ s a -> s{_ncNetwork = a})
+
+-- | Output only. The relative name of the Google Compute Engine
+-- [subnetwork](\/compute\/docs\/vpc) to which the cluster is connected.
+-- Example:
+-- projects\/my-project\/regions\/us-central1\/subnetworks\/my-subnet
+ncSubnetwork :: Lens' NetworkConfig (Maybe Text)
+ncSubnetwork
+  = lens _ncSubnetwork (\ s a -> s{_ncSubnetwork = a})
+
+instance FromJSON NetworkConfig where
+        parseJSON
+          = withObject "NetworkConfig"
+              (\ o ->
+                 NetworkConfig' <$>
+                   (o .:? "network") <*> (o .:? "subnetwork"))
+
+instance ToJSON NetworkConfig where
+        toJSON NetworkConfig'{..}
+          = object
+              (catMaybes
+                 [("network" .=) <$> _ncNetwork,
+                  ("subnetwork" .=) <$> _ncSubnetwork])
+
+-- | 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 NodePoolStatus)
+    , _npAutoscaling       :: !(Maybe NodePoolAutoscaling)
+    , _npConfig            :: !(Maybe NodeConfig)
+    , _npInitialNodeCount  :: !(Maybe (Textual Int32))
+    , _npManagement        :: !(Maybe NodeManagement)
+    , _npSelfLink          :: !(Maybe Text)
+    , _npName              :: !(Maybe Text)
+    , _npStatusMessage     :: !(Maybe Text)
+    , _npVersion           :: !(Maybe Text)
+    , _npConditions        :: !(Maybe [StatusCondition])
+    , _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'
+--
+-- * 'npAutoscaling'
+--
+-- * 'npConfig'
+--
+-- * 'npInitialNodeCount'
+--
+-- * 'npManagement'
+--
+-- * 'npSelfLink'
+--
+-- * 'npName'
+--
+-- * 'npStatusMessage'
+--
+-- * 'npVersion'
+--
+-- * 'npConditions'
+--
+-- * 'npInstanceGroupURLs'
+nodePool
+    :: NodePool
+nodePool =
+    NodePool'
+    { _npStatus = Nothing
+    , _npAutoscaling = Nothing
+    , _npConfig = Nothing
+    , _npInitialNodeCount = Nothing
+    , _npManagement = Nothing
+    , _npSelfLink = Nothing
+    , _npName = Nothing
+    , _npStatusMessage = Nothing
+    , _npVersion = Nothing
+    , _npConditions = Nothing
+    , _npInstanceGroupURLs = Nothing
+    }
+
+-- | [Output only] The status of the nodes in this pool instance.
+npStatus :: Lens' NodePool (Maybe NodePoolStatus)
+npStatus = lens _npStatus (\ s a -> s{_npStatus = a})
+
+-- | Autoscaler configuration for this NodePool. Autoscaler is enabled only
+-- if a valid configuration is present.
+npAutoscaling :: Lens' NodePool (Maybe NodePoolAutoscaling)
+npAutoscaling
+  = lens _npAutoscaling
+      (\ s a -> s{_npAutoscaling = 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 </compute/docs/resource-quotas 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
+
+-- | NodeManagement configuration for this NodePool.
+npManagement :: Lens' NodePool (Maybe NodeManagement)
+npManagement
+  = lens _npManagement (\ s a -> s{_npManagement = a})
+
+-- | [Output only] 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})
+
+-- | Which conditions caused the current node pool state.
+npConditions :: Lens' NodePool [StatusCondition]
+npConditions
+  = lens _npConditions (\ s a -> s{_npConditions = a})
+      . _Default
+      . _Coerce
+
+-- | [Output only] The resource URLs of the [managed instance
+-- groups](\/compute\/docs\/instance-groups\/creating-groups-of-managed-instances)
+-- 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 .:? "autoscaling") <*>
+                     (o .:? "config")
+                     <*> (o .:? "initialNodeCount")
+                     <*> (o .:? "management")
+                     <*> (o .:? "selfLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "statusMessage")
+                     <*> (o .:? "version")
+                     <*> (o .:? "conditions" .!= mempty)
+                     <*> (o .:? "instanceGroupUrls" .!= mempty))
+
+instance ToJSON NodePool where
+        toJSON NodePool'{..}
+          = object
+              (catMaybes
+                 [("status" .=) <$> _npStatus,
+                  ("autoscaling" .=) <$> _npAutoscaling,
+                  ("config" .=) <$> _npConfig,
+                  ("initialNodeCount" .=) <$> _npInitialNodeCount,
+                  ("management" .=) <$> _npManagement,
+                  ("selfLink" .=) <$> _npSelfLink,
+                  ("name" .=) <$> _npName,
+                  ("statusMessage" .=) <$> _npStatusMessage,
+                  ("version" .=) <$> _npVersion,
+                  ("conditions" .=) <$> _npConditions,
+                  ("instanceGroupUrls" .=) <$> _npInstanceGroupURLs])
+
+-- | SetNodePoolManagementRequest sets the node management properties of a
+-- node pool.
+--
+-- /See:/ 'setNodePoolManagementRequest' smart constructor.
+data SetNodePoolManagementRequest = SetNodePoolManagementRequest'
+    { _snpmrManagement :: !(Maybe NodeManagement)
+    , _snpmrZone       :: !(Maybe Text)
+    , _snpmrNodePoolId :: !(Maybe Text)
+    , _snpmrName       :: !(Maybe Text)
+    , _snpmrClusterId  :: !(Maybe Text)
+    , _snpmrProjectId  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetNodePoolManagementRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snpmrManagement'
+--
+-- * 'snpmrZone'
+--
+-- * 'snpmrNodePoolId'
+--
+-- * 'snpmrName'
+--
+-- * 'snpmrClusterId'
+--
+-- * 'snpmrProjectId'
+setNodePoolManagementRequest
+    :: SetNodePoolManagementRequest
+setNodePoolManagementRequest =
+    SetNodePoolManagementRequest'
+    { _snpmrManagement = Nothing
+    , _snpmrZone = Nothing
+    , _snpmrNodePoolId = Nothing
+    , _snpmrName = Nothing
+    , _snpmrClusterId = Nothing
+    , _snpmrProjectId = Nothing
+    }
+
+-- | NodeManagement configuration for the node pool.
+snpmrManagement :: Lens' SetNodePoolManagementRequest (Maybe NodeManagement)
+snpmrManagement
+  = lens _snpmrManagement
+      (\ s a -> s{_snpmrManagement = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snpmrZone :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrZone
+  = lens _snpmrZone (\ s a -> s{_snpmrZone = a})
+
+-- | Deprecated. The name of the node pool to update. This field has been
+-- deprecated and replaced by the name field.
+snpmrNodePoolId :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrNodePoolId
+  = lens _snpmrNodePoolId
+      (\ s a -> s{_snpmrNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- set management properties. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+snpmrName :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrName
+  = lens _snpmrName (\ s a -> s{_snpmrName = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+snpmrClusterId :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrClusterId
+  = lens _snpmrClusterId
+      (\ s a -> s{_snpmrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+snpmrProjectId :: Lens' SetNodePoolManagementRequest (Maybe Text)
+snpmrProjectId
+  = lens _snpmrProjectId
+      (\ s a -> s{_snpmrProjectId = a})
+
+instance FromJSON SetNodePoolManagementRequest where
+        parseJSON
+          = withObject "SetNodePoolManagementRequest"
+              (\ o ->
+                 SetNodePoolManagementRequest' <$>
+                   (o .:? "management") <*> (o .:? "zone") <*>
+                     (o .:? "nodePoolId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetNodePoolManagementRequest where
+        toJSON SetNodePoolManagementRequest'{..}
+          = object
+              (catMaybes
+                 [("management" .=) <$> _snpmrManagement,
+                  ("zone" .=) <$> _snpmrZone,
+                  ("nodePoolId" .=) <$> _snpmrNodePoolId,
+                  ("name" .=) <$> _snpmrName,
+                  ("clusterId" .=) <$> _snpmrClusterId,
+                  ("projectId" .=) <$> _snpmrProjectId])
+
+-- | Configuration options for the master authorized networks feature.
+-- Enabled master authorized networks will disallow all external traffic to
+-- access Kubernetes master through HTTPS except traffic from the given
+-- CIDR blocks, Google Compute Engine Public IPs and Google Prod IPs.
+--
+-- /See:/ 'masterAuthorizedNetworksConfig' smart constructor.
+data MasterAuthorizedNetworksConfig = MasterAuthorizedNetworksConfig'
+    { _mancEnabled    :: !(Maybe Bool)
+    , _mancCIdRBlocks :: !(Maybe [CIdRBlock])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MasterAuthorizedNetworksConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mancEnabled'
+--
+-- * 'mancCIdRBlocks'
+masterAuthorizedNetworksConfig
+    :: MasterAuthorizedNetworksConfig
+masterAuthorizedNetworksConfig =
+    MasterAuthorizedNetworksConfig'
+    { _mancEnabled = Nothing
+    , _mancCIdRBlocks = Nothing
+    }
+
+-- | Whether or not master authorized networks is enabled.
+mancEnabled :: Lens' MasterAuthorizedNetworksConfig (Maybe Bool)
+mancEnabled
+  = lens _mancEnabled (\ s a -> s{_mancEnabled = a})
+
+-- | cidr_blocks define up to 10 external networks that could access
+-- Kubernetes master through HTTPS.
+mancCIdRBlocks :: Lens' MasterAuthorizedNetworksConfig [CIdRBlock]
+mancCIdRBlocks
+  = lens _mancCIdRBlocks
+      (\ s a -> s{_mancCIdRBlocks = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON MasterAuthorizedNetworksConfig
+         where
+        parseJSON
+          = withObject "MasterAuthorizedNetworksConfig"
+              (\ o ->
+                 MasterAuthorizedNetworksConfig' <$>
+                   (o .:? "enabled") <*>
+                     (o .:? "cidrBlocks" .!= mempty))
+
+instance ToJSON MasterAuthorizedNetworksConfig where
+        toJSON MasterAuthorizedNetworksConfig'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _mancEnabled,
+                  ("cidrBlocks" .=) <$> _mancCIdRBlocks])
+
+-- | Configuration for the legacy Attribute Based Access Control
+-- authorization mode.
+--
+-- /See:/ 'legacyAbac' smart constructor.
+newtype LegacyAbac = LegacyAbac'
+    { _laEnabled :: Maybe Bool
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LegacyAbac' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laEnabled'
+legacyAbac
+    :: LegacyAbac
+legacyAbac =
+    LegacyAbac'
+    { _laEnabled = Nothing
+    }
+
+-- | Whether the ABAC authorizer is enabled for this cluster. When enabled,
+-- identities in the system, including service accounts, nodes, and
+-- controllers, will have statically granted permissions beyond those
+-- provided by the RBAC configuration or IAM.
+laEnabled :: Lens' LegacyAbac (Maybe Bool)
+laEnabled
+  = lens _laEnabled (\ s a -> s{_laEnabled = a})
+
+instance FromJSON LegacyAbac where
+        parseJSON
+          = withObject "LegacyAbac"
+              (\ o -> LegacyAbac' <$> (o .:? "enabled"))
+
+instance ToJSON LegacyAbac where
+        toJSON LegacyAbac'{..}
+          = object (catMaybes [("enabled" .=) <$> _laEnabled])
+
+-- | The authentication information for accessing the master endpoint.
+-- Authentication can be done using HTTP basic auth or using client
+-- certificates.
+--
+-- /See:/ 'masterAuth' smart constructor.
+data MasterAuth = MasterAuth'
+    { _maClientKey               :: !(Maybe Text)
+    , _maUsername                :: !(Maybe Text)
+    , _maClientCertificateConfig :: !(Maybe ClientCertificateConfig)
+    , _maClientCertificate       :: !(Maybe Text)
+    , _maPassword                :: !(Maybe Text)
+    , _maClusterCaCertificate    :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MasterAuth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'maClientKey'
+--
+-- * 'maUsername'
+--
+-- * 'maClientCertificateConfig'
+--
+-- * 'maClientCertificate'
+--
+-- * 'maPassword'
+--
+-- * 'maClusterCaCertificate'
+masterAuth
+    :: MasterAuth
+masterAuth =
+    MasterAuth'
+    { _maClientKey = Nothing
+    , _maUsername = Nothing
+    , _maClientCertificateConfig = Nothing
+    , _maClientCertificate = Nothing
+    , _maPassword = Nothing
+    , _maClusterCaCertificate = Nothing
+    }
+
+-- | [Output only] Base64-encoded private key used by clients to authenticate
+-- to the cluster endpoint.
+maClientKey :: Lens' MasterAuth (Maybe Text)
+maClientKey
+  = lens _maClientKey (\ s a -> s{_maClientKey = a})
+
+-- | The username to use for HTTP basic authentication to the master
+-- endpoint. For clusters v1.6.0 and later, basic authentication can be
+-- disabled by leaving username unspecified (or setting it to the empty
+-- string).
+maUsername :: Lens' MasterAuth (Maybe Text)
+maUsername
+  = lens _maUsername (\ s a -> s{_maUsername = a})
+
+-- | Configuration for client certificate authentication on the cluster. For
+-- clusters before v1.12, if no configuration is specified, a client
+-- certificate is issued.
+maClientCertificateConfig :: Lens' MasterAuth (Maybe ClientCertificateConfig)
+maClientCertificateConfig
+  = lens _maClientCertificateConfig
+      (\ s a -> s{_maClientCertificateConfig = a})
+
+-- | [Output only] Base64-encoded public certificate used by clients to
+-- authenticate to the cluster endpoint.
+maClientCertificate :: Lens' MasterAuth (Maybe Text)
+maClientCertificate
+  = lens _maClientCertificate
+      (\ s a -> s{_maClientCertificate = a})
+
+-- | The password to use for HTTP basic authentication to the master
+-- endpoint. Because the master endpoint is open to the Internet, you
+-- should create a strong password. If a password is provided for cluster
+-- creation, username must be non-empty.
+maPassword :: Lens' MasterAuth (Maybe Text)
+maPassword
+  = lens _maPassword (\ s a -> s{_maPassword = a})
+
+-- | [Output only] Base64-encoded public certificate that is the root of
+-- trust for the cluster.
+maClusterCaCertificate :: Lens' MasterAuth (Maybe Text)
+maClusterCaCertificate
+  = lens _maClusterCaCertificate
+      (\ s a -> s{_maClusterCaCertificate = a})
+
+instance FromJSON MasterAuth where
+        parseJSON
+          = withObject "MasterAuth"
+              (\ o ->
+                 MasterAuth' <$>
+                   (o .:? "clientKey") <*> (o .:? "username") <*>
+                     (o .:? "clientCertificateConfig")
+                     <*> (o .:? "clientCertificate")
+                     <*> (o .:? "password")
+                     <*> (o .:? "clusterCaCertificate"))
+
+instance ToJSON MasterAuth where
+        toJSON MasterAuth'{..}
+          = object
+              (catMaybes
+                 [("clientKey" .=) <$> _maClientKey,
+                  ("username" .=) <$> _maUsername,
+                  ("clientCertificateConfig" .=) <$>
+                    _maClientCertificateConfig,
+                  ("clientCertificate" .=) <$> _maClientCertificate,
+                  ("password" .=) <$> _maPassword,
+                  ("clusterCaCertificate" .=) <$>
+                    _maClusterCaCertificate])
+
+-- | StatusCondition describes why a cluster or a node pool has a certain
+-- status (e.g., ERROR or DEGRADED).
+--
+-- /See:/ 'statusCondition' smart constructor.
+data StatusCondition = StatusCondition'
+    { _scCode    :: !(Maybe StatusConditionCode)
+    , _scMessage :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StatusCondition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scCode'
+--
+-- * 'scMessage'
+statusCondition
+    :: StatusCondition
+statusCondition =
+    StatusCondition'
+    { _scCode = Nothing
+    , _scMessage = Nothing
+    }
+
+-- | Machine-friendly representation of the condition
+scCode :: Lens' StatusCondition (Maybe StatusConditionCode)
+scCode = lens _scCode (\ s a -> s{_scCode = a})
+
+-- | Human-friendly representation of the condition
+scMessage :: Lens' StatusCondition (Maybe Text)
+scMessage
+  = lens _scMessage (\ s a -> s{_scMessage = a})
+
+instance FromJSON StatusCondition where
+        parseJSON
+          = withObject "StatusCondition"
+              (\ o ->
+                 StatusCondition' <$>
+                   (o .:? "code") <*> (o .:? "message"))
+
+instance ToJSON StatusCondition where
+        toJSON StatusCondition'{..}
+          = object
+              (catMaybes
+                 [("code" .=) <$> _scCode,
+                  ("message" .=) <$> _scMessage])
+
+-- | 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 reserved keys:
+-- \"cluster-location\" \"cluster-name\" \"cluster-uid\" \"configure-sh\"
+-- \"enable-os-login\" \"gci-update-strategy\" \"gci-ensure-gke-docker\"
+-- \"instance-template\" \"kube-env\" \"startup-script\" \"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
+
+-- | The map of Kubernetes labels (key\/value pairs) to be applied to each
+-- node. These will added in addition to any default label(s) that
+-- Kubernetes may apply to the node. In case of conflict in label keys, the
+-- applied set may differ depending on the Kubernetes version -- it\'s best
+-- to assume the behavior is undefined and conflicts should be avoided. For
+-- more information, including usage and the valid values, see:
+-- https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/labels\/
+--
+-- /See:/ 'nodeConfigLabels' smart constructor.
+newtype NodeConfigLabels = NodeConfigLabels'
+    { _nclAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NodeConfigLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'nclAddtional'
+nodeConfigLabels
+    :: HashMap Text Text -- ^ 'nclAddtional'
+    -> NodeConfigLabels
+nodeConfigLabels pNclAddtional_ =
+    NodeConfigLabels'
+    { _nclAddtional = _Coerce # pNclAddtional_
+    }
+
+nclAddtional :: Lens' NodeConfigLabels (HashMap Text Text)
+nclAddtional
+  = lens _nclAddtional (\ s a -> s{_nclAddtional = a})
+      . _Coerce
+
+instance FromJSON NodeConfigLabels where
+        parseJSON
+          = withObject "NodeConfigLabels"
+              (\ o -> NodeConfigLabels' <$> (parseJSONObject o))
+
+instance ToJSON NodeConfigLabels where
+        toJSON = toJSON . _nclAddtional
+
+-- | Kubernetes Engine service configuration.
+--
+-- /See:/ 'serverConfig' smart constructor.
+data ServerConfig = ServerConfig'
+    { _scDefaultImageType      :: !(Maybe Text)
+    , _scValidNodeVersions     :: !(Maybe [Text])
+    , _scValidImageTypes       :: !(Maybe [Text])
+    , _scDefaultClusterVersion :: !(Maybe Text)
+    , _scValidMasterVersions   :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServerConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scDefaultImageType'
+--
+-- * 'scValidNodeVersions'
+--
+-- * 'scValidImageTypes'
+--
+-- * 'scDefaultClusterVersion'
+--
+-- * 'scValidMasterVersions'
+serverConfig
+    :: ServerConfig
+serverConfig =
+    ServerConfig'
+    { _scDefaultImageType = Nothing
+    , _scValidNodeVersions = Nothing
+    , _scValidImageTypes = Nothing
+    , _scDefaultClusterVersion = Nothing
+    , _scValidMasterVersions = Nothing
+    }
+
+-- | Default image type.
+scDefaultImageType :: Lens' ServerConfig (Maybe Text)
+scDefaultImageType
+  = lens _scDefaultImageType
+      (\ s a -> s{_scDefaultImageType = a})
+
+-- | List of valid node upgrade target versions.
+scValidNodeVersions :: Lens' ServerConfig [Text]
+scValidNodeVersions
+  = lens _scValidNodeVersions
+      (\ s a -> s{_scValidNodeVersions = a})
+      . _Default
+      . _Coerce
+
+-- | List of valid image types.
+scValidImageTypes :: Lens' ServerConfig [Text]
+scValidImageTypes
+  = lens _scValidImageTypes
+      (\ s a -> s{_scValidImageTypes = a})
+      . _Default
+      . _Coerce
+
+-- | Version of Kubernetes the service deploys by default.
+scDefaultClusterVersion :: Lens' ServerConfig (Maybe Text)
+scDefaultClusterVersion
+  = lens _scDefaultClusterVersion
+      (\ s a -> s{_scDefaultClusterVersion = a})
+
+-- | List of valid master versions.
+scValidMasterVersions :: Lens' ServerConfig [Text]
+scValidMasterVersions
+  = lens _scValidMasterVersions
+      (\ s a -> s{_scValidMasterVersions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON ServerConfig where
+        parseJSON
+          = withObject "ServerConfig"
+              (\ o ->
+                 ServerConfig' <$>
+                   (o .:? "defaultImageType") <*>
+                     (o .:? "validNodeVersions" .!= mempty)
+                     <*> (o .:? "validImageTypes" .!= mempty)
+                     <*> (o .:? "defaultClusterVersion")
+                     <*> (o .:? "validMasterVersions" .!= mempty))
+
+instance ToJSON ServerConfig where
+        toJSON ServerConfig'{..}
+          = object
+              (catMaybes
+                 [("defaultImageType" .=) <$> _scDefaultImageType,
+                  ("validNodeVersions" .=) <$> _scValidNodeVersions,
+                  ("validImageTypes" .=) <$> _scValidImageTypes,
+                  ("defaultClusterVersion" .=) <$>
+                    _scDefaultClusterVersion,
+                  ("validMasterVersions" .=) <$>
+                    _scValidMasterVersions])
+
+-- | AutoUpgradeOptions defines the set of options for the user to control
+-- how the Auto Upgrades will proceed.
+--
+-- /See:/ 'autoUpgradeOptions' smart constructor.
+data AutoUpgradeOptions = AutoUpgradeOptions'
+    { _auoAutoUpgradeStartTime :: !(Maybe Text)
+    , _auoDescription          :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoUpgradeOptions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'auoAutoUpgradeStartTime'
+--
+-- * 'auoDescription'
+autoUpgradeOptions
+    :: AutoUpgradeOptions
+autoUpgradeOptions =
+    AutoUpgradeOptions'
+    { _auoAutoUpgradeStartTime = Nothing
+    , _auoDescription = Nothing
+    }
+
+-- | [Output only] This field is set when upgrades are about to commence with
+-- the approximate start time for the upgrades, in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) text format.
+auoAutoUpgradeStartTime :: Lens' AutoUpgradeOptions (Maybe Text)
+auoAutoUpgradeStartTime
+  = lens _auoAutoUpgradeStartTime
+      (\ s a -> s{_auoAutoUpgradeStartTime = a})
+
+-- | [Output only] This field is set when upgrades are about to commence with
+-- the description of the upgrade.
+auoDescription :: Lens' AutoUpgradeOptions (Maybe Text)
+auoDescription
+  = lens _auoDescription
+      (\ s a -> s{_auoDescription = a})
+
+instance FromJSON AutoUpgradeOptions where
+        parseJSON
+          = withObject "AutoUpgradeOptions"
+              (\ o ->
+                 AutoUpgradeOptions' <$>
+                   (o .:? "autoUpgradeStartTime") <*>
+                     (o .:? "description"))
+
+instance ToJSON AutoUpgradeOptions where
+        toJSON AutoUpgradeOptions'{..}
+          = object
+              (catMaybes
+                 [("autoUpgradeStartTime" .=) <$>
+                    _auoAutoUpgradeStartTime,
+                  ("description" .=) <$> _auoDescription])
+
+-- | SetNodePoolSizeRequest sets the size a node pool.
+--
+-- /See:/ 'setNodePoolSizeRequest' smart constructor.
+data SetNodePoolSizeRequest = SetNodePoolSizeRequest'
+    { _snpsrNodeCount  :: !(Maybe (Textual Int32))
+    , _snpsrZone       :: !(Maybe Text)
+    , _snpsrNodePoolId :: !(Maybe Text)
+    , _snpsrName       :: !(Maybe Text)
+    , _snpsrClusterId  :: !(Maybe Text)
+    , _snpsrProjectId  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetNodePoolSizeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snpsrNodeCount'
+--
+-- * 'snpsrZone'
+--
+-- * 'snpsrNodePoolId'
+--
+-- * 'snpsrName'
+--
+-- * 'snpsrClusterId'
+--
+-- * 'snpsrProjectId'
+setNodePoolSizeRequest
+    :: SetNodePoolSizeRequest
+setNodePoolSizeRequest =
+    SetNodePoolSizeRequest'
+    { _snpsrNodeCount = Nothing
+    , _snpsrZone = Nothing
+    , _snpsrNodePoolId = Nothing
+    , _snpsrName = Nothing
+    , _snpsrClusterId = Nothing
+    , _snpsrProjectId = Nothing
+    }
+
+-- | The desired node count for the pool.
+snpsrNodeCount :: Lens' SetNodePoolSizeRequest (Maybe Int32)
+snpsrNodeCount
+  = lens _snpsrNodeCount
+      (\ s a -> s{_snpsrNodeCount = a})
+      . mapping _Coerce
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snpsrZone :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrZone
+  = lens _snpsrZone (\ s a -> s{_snpsrZone = a})
+
+-- | Deprecated. The name of the node pool to update. This field has been
+-- deprecated and replaced by the name field.
+snpsrNodePoolId :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrNodePoolId
+  = lens _snpsrNodePoolId
+      (\ s a -> s{_snpsrNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- set size. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+snpsrName :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrName
+  = lens _snpsrName (\ s a -> s{_snpsrName = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+snpsrClusterId :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrClusterId
+  = lens _snpsrClusterId
+      (\ s a -> s{_snpsrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+snpsrProjectId :: Lens' SetNodePoolSizeRequest (Maybe Text)
+snpsrProjectId
+  = lens _snpsrProjectId
+      (\ s a -> s{_snpsrProjectId = a})
+
+instance FromJSON SetNodePoolSizeRequest where
+        parseJSON
+          = withObject "SetNodePoolSizeRequest"
+              (\ o ->
+                 SetNodePoolSizeRequest' <$>
+                   (o .:? "nodeCount") <*> (o .:? "zone") <*>
+                     (o .:? "nodePoolId")
+                     <*> (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON SetNodePoolSizeRequest where
+        toJSON SetNodePoolSizeRequest'{..}
+          = object
+              (catMaybes
+                 [("nodeCount" .=) <$> _snpsrNodeCount,
+                  ("zone" .=) <$> _snpsrZone,
+                  ("nodePoolId" .=) <$> _snpsrNodePoolId,
+                  ("name" .=) <$> _snpsrName,
+                  ("clusterId" .=) <$> _snpsrClusterId,
+                  ("projectId" .=) <$> _snpsrProjectId])
+
+-- | SetMonitoringServiceRequest sets the monitoring service of a cluster.
+--
+-- /See:/ 'setMonitoringServiceRequest' smart constructor.
+data SetMonitoringServiceRequest = SetMonitoringServiceRequest'
+    { _smsrZone              :: !(Maybe Text)
+    , _smsrName              :: !(Maybe Text)
+    , _smsrClusterId         :: !(Maybe Text)
+    , _smsrProjectId         :: !(Maybe Text)
+    , _smsrMonitoringService :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetMonitoringServiceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'smsrZone'
+--
+-- * 'smsrName'
+--
+-- * 'smsrClusterId'
+--
+-- * 'smsrProjectId'
+--
+-- * 'smsrMonitoringService'
+setMonitoringServiceRequest
+    :: SetMonitoringServiceRequest
+setMonitoringServiceRequest =
+    SetMonitoringServiceRequest'
+    { _smsrZone = Nothing
+    , _smsrName = Nothing
+    , _smsrClusterId = Nothing
+    , _smsrProjectId = Nothing
+    , _smsrMonitoringService = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+smsrZone :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrZone = lens _smsrZone (\ s a -> s{_smsrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set monitoring.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+smsrName :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrName = lens _smsrName (\ s a -> s{_smsrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+smsrClusterId :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrClusterId
+  = lens _smsrClusterId
+      (\ s a -> s{_smsrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+smsrProjectId :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrProjectId
+  = lens _smsrProjectId
+      (\ s a -> s{_smsrProjectId = 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
+smsrMonitoringService :: Lens' SetMonitoringServiceRequest (Maybe Text)
+smsrMonitoringService
+  = lens _smsrMonitoringService
+      (\ s a -> s{_smsrMonitoringService = a})
+
+instance FromJSON SetMonitoringServiceRequest where
+        parseJSON
+          = withObject "SetMonitoringServiceRequest"
+              (\ o ->
+                 SetMonitoringServiceRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "monitoringService"))
+
+instance ToJSON SetMonitoringServiceRequest where
+        toJSON SetMonitoringServiceRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _smsrZone,
+                  ("name" .=) <$> _smsrName,
+                  ("clusterId" .=) <$> _smsrClusterId,
+                  ("projectId" .=) <$> _smsrProjectId,
+                  ("monitoringService" .=) <$> _smsrMonitoringService])
+
+-- | SetLoggingServiceRequest sets the logging service of a cluster.
+--
+-- /See:/ 'setLoggingServiceRequest' smart constructor.
+data SetLoggingServiceRequest = SetLoggingServiceRequest'
+    { _slsrZone           :: !(Maybe Text)
+    , _slsrName           :: !(Maybe Text)
+    , _slsrClusterId      :: !(Maybe Text)
+    , _slsrProjectId      :: !(Maybe Text)
+    , _slsrLoggingService :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetLoggingServiceRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slsrZone'
+--
+-- * 'slsrName'
+--
+-- * 'slsrClusterId'
+--
+-- * 'slsrProjectId'
+--
+-- * 'slsrLoggingService'
+setLoggingServiceRequest
+    :: SetLoggingServiceRequest
+setLoggingServiceRequest =
+    SetLoggingServiceRequest'
+    { _slsrZone = Nothing
+    , _slsrName = Nothing
+    , _slsrClusterId = Nothing
+    , _slsrProjectId = Nothing
+    , _slsrLoggingService = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+slsrZone :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrZone = lens _slsrZone (\ s a -> s{_slsrZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set logging.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+slsrName :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrName = lens _slsrName (\ s a -> s{_slsrName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+slsrClusterId :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrClusterId
+  = lens _slsrClusterId
+      (\ s a -> s{_slsrClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+slsrProjectId :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrProjectId
+  = lens _slsrProjectId
+      (\ s a -> s{_slsrProjectId = a})
+
+-- | The logging service the cluster should use to write metrics. Currently
+-- available options: * \"logging.googleapis.com\" - the Google Cloud
+-- Logging service * \"none\" - no metrics will be exported from the
+-- cluster
+slsrLoggingService :: Lens' SetLoggingServiceRequest (Maybe Text)
+slsrLoggingService
+  = lens _slsrLoggingService
+      (\ s a -> s{_slsrLoggingService = a})
+
+instance FromJSON SetLoggingServiceRequest where
+        parseJSON
+          = withObject "SetLoggingServiceRequest"
+              (\ o ->
+                 SetLoggingServiceRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "loggingService"))
+
+instance ToJSON SetLoggingServiceRequest where
+        toJSON SetLoggingServiceRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _slsrZone,
+                  ("name" .=) <$> _slsrName,
+                  ("clusterId" .=) <$> _slsrClusterId,
+                  ("projectId" .=) <$> _slsrProjectId,
+                  ("loggingService" .=) <$> _slsrLoggingService])
+
+-- | MaintenancePolicy defines the maintenance policy to be used for the
+-- cluster.
+--
+-- /See:/ 'maintenancePolicy' smart constructor.
+newtype MaintenancePolicy = MaintenancePolicy'
+    { _mpWindow :: Maybe MaintenanceWindow
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MaintenancePolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mpWindow'
+maintenancePolicy
+    :: MaintenancePolicy
+maintenancePolicy =
+    MaintenancePolicy'
+    { _mpWindow = Nothing
+    }
+
+-- | Specifies the maintenance window in which maintenance may be performed.
+mpWindow :: Lens' MaintenancePolicy (Maybe MaintenanceWindow)
+mpWindow = lens _mpWindow (\ s a -> s{_mpWindow = a})
+
+instance FromJSON MaintenancePolicy where
+        parseJSON
+          = withObject "MaintenancePolicy"
+              (\ o -> MaintenancePolicy' <$> (o .:? "window"))
+
+instance ToJSON MaintenancePolicy where
+        toJSON MaintenancePolicy'{..}
+          = object (catMaybes [("window" .=) <$> _mpWindow])
+
+-- | CidrBlock contains an optional name and one CIDR block.
+--
+-- /See:/ 'cIdRBlock' smart constructor.
+data CIdRBlock = CIdRBlock'
+    { _cirbCIdRBlock   :: !(Maybe Text)
+    , _cirbDisplayName :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CIdRBlock' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirbCIdRBlock'
+--
+-- * 'cirbDisplayName'
+cIdRBlock
+    :: CIdRBlock
+cIdRBlock =
+    CIdRBlock'
+    { _cirbCIdRBlock = Nothing
+    , _cirbDisplayName = Nothing
+    }
+
+-- | cidr_block must be specified in CIDR notation.
+cirbCIdRBlock :: Lens' CIdRBlock (Maybe Text)
+cirbCIdRBlock
+  = lens _cirbCIdRBlock
+      (\ s a -> s{_cirbCIdRBlock = a})
+
+-- | display_name is an optional field for users to identify CIDR blocks.
+cirbDisplayName :: Lens' CIdRBlock (Maybe Text)
+cirbDisplayName
+  = lens _cirbDisplayName
+      (\ s a -> s{_cirbDisplayName = a})
+
+instance FromJSON CIdRBlock where
+        parseJSON
+          = withObject "CIdRBlock"
+              (\ o ->
+                 CIdRBlock' <$>
+                   (o .:? "cidrBlock") <*> (o .:? "displayName"))
+
+instance ToJSON CIdRBlock where
+        toJSON CIdRBlock'{..}
+          = object
+              (catMaybes
+                 [("cidrBlock" .=) <$> _cirbCIdRBlock,
+                  ("displayName" .=) <$> _cirbDisplayName])
+
+-- | AcceleratorConfig represents a Hardware Accelerator request.
+--
+-- /See:/ 'acceleratorConfig' smart constructor.
+data AcceleratorConfig = AcceleratorConfig'
+    { _acAcceleratorCount :: !(Maybe (Textual Int64))
+    , _acAcceleratorType  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AcceleratorConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acAcceleratorCount'
+--
+-- * 'acAcceleratorType'
+acceleratorConfig
+    :: AcceleratorConfig
+acceleratorConfig =
+    AcceleratorConfig'
+    { _acAcceleratorCount = Nothing
+    , _acAcceleratorType = Nothing
+    }
+
+-- | The number of the accelerator cards exposed to an instance.
+acAcceleratorCount :: Lens' AcceleratorConfig (Maybe Int64)
+acAcceleratorCount
+  = lens _acAcceleratorCount
+      (\ s a -> s{_acAcceleratorCount = a})
+      . mapping _Coerce
+
+-- | The accelerator type resource name. List of supported accelerators
+-- [here](\/compute\/docs\/gpus\/#Introduction)
+acAcceleratorType :: Lens' AcceleratorConfig (Maybe Text)
+acAcceleratorType
+  = lens _acAcceleratorType
+      (\ s a -> s{_acAcceleratorType = a})
+
+instance FromJSON AcceleratorConfig where
+        parseJSON
+          = withObject "AcceleratorConfig"
+              (\ o ->
+                 AcceleratorConfig' <$>
+                   (o .:? "acceleratorCount") <*>
+                     (o .:? "acceleratorType"))
+
+instance ToJSON AcceleratorConfig where
+        toJSON AcceleratorConfig'{..}
+          = object
+              (catMaybes
+                 [("acceleratorCount" .=) <$> _acAcceleratorCount,
+                  ("acceleratorType" .=) <$> _acAcceleratorType])
+
+-- | SetLocationsRequest sets the locations of the cluster.
+--
+-- /See:/ 'setLocationsRequest' smart constructor.
+data SetLocationsRequest = SetLocationsRequest'
+    { _sZone      :: !(Maybe Text)
+    , _sName      :: !(Maybe Text)
+    , _sClusterId :: !(Maybe Text)
+    , _sProjectId :: !(Maybe Text)
+    , _sLocations :: !(Maybe [Text])
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetLocationsRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sZone'
+--
+-- * 'sName'
+--
+-- * 'sClusterId'
+--
+-- * 'sProjectId'
+--
+-- * 'sLocations'
+setLocationsRequest
+    :: SetLocationsRequest
+setLocationsRequest =
+    SetLocationsRequest'
+    { _sZone = Nothing
+    , _sName = Nothing
+    , _sClusterId = Nothing
+    , _sProjectId = Nothing
+    , _sLocations = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+sZone :: Lens' SetLocationsRequest (Maybe Text)
+sZone = lens _sZone (\ s a -> s{_sZone = a})
+
+-- | The name (project, location, cluster) of the cluster to set locations.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+sName :: Lens' SetLocationsRequest (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+sClusterId :: Lens' SetLocationsRequest (Maybe Text)
+sClusterId
+  = lens _sClusterId (\ s a -> s{_sClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+sProjectId :: Lens' SetLocationsRequest (Maybe Text)
+sProjectId
+  = lens _sProjectId (\ s a -> s{_sProjectId = a})
+
+-- | The desired list of Google Compute Engine
+-- [zones](\/compute\/docs\/zones#available) in which the cluster\'s nodes
+-- should be located. Changing the locations a cluster is in will result in
+-- nodes being either created or removed from the cluster, depending on
+-- whether locations are being added or removed. This list must always
+-- include the cluster\'s primary zone.
+sLocations :: Lens' SetLocationsRequest [Text]
+sLocations
+  = lens _sLocations (\ s a -> s{_sLocations = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON SetLocationsRequest where
+        parseJSON
+          = withObject "SetLocationsRequest"
+              (\ o ->
+                 SetLocationsRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "locations" .!= mempty))
+
+instance ToJSON SetLocationsRequest where
+        toJSON SetLocationsRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _sZone, ("name" .=) <$> _sName,
+                  ("clusterId" .=) <$> _sClusterId,
+                  ("projectId" .=) <$> _sProjectId,
+                  ("locations" .=) <$> _sLocations])
+
+-- | SetNetworkPolicyRequest enables\/disables network policy for a cluster.
+--
+-- /See:/ 'setNetworkPolicyRequest' smart constructor.
+data SetNetworkPolicyRequest = SetNetworkPolicyRequest'
+    { _snprZone          :: !(Maybe Text)
+    , _snprName          :: !(Maybe Text)
+    , _snprClusterId     :: !(Maybe Text)
+    , _snprProjectId     :: !(Maybe Text)
+    , _snprNetworkPolicy :: !(Maybe NetworkPolicy)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetNetworkPolicyRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'snprZone'
+--
+-- * 'snprName'
+--
+-- * 'snprClusterId'
+--
+-- * 'snprProjectId'
+--
+-- * 'snprNetworkPolicy'
+setNetworkPolicyRequest
+    :: SetNetworkPolicyRequest
+setNetworkPolicyRequest =
+    SetNetworkPolicyRequest'
+    { _snprZone = Nothing
+    , _snprName = Nothing
+    , _snprClusterId = Nothing
+    , _snprProjectId = Nothing
+    , _snprNetworkPolicy = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+snprZone :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprZone = lens _snprZone (\ s a -> s{_snprZone = a})
+
+-- | The name (project, location, cluster id) of the cluster to set
+-- networking policy. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+snprName :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprName = lens _snprName (\ s a -> s{_snprName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+snprClusterId :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprClusterId
+  = lens _snprClusterId
+      (\ s a -> s{_snprClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+snprProjectId :: Lens' SetNetworkPolicyRequest (Maybe Text)
+snprProjectId
+  = lens _snprProjectId
+      (\ s a -> s{_snprProjectId = a})
+
+-- | Configuration options for the NetworkPolicy feature.
+snprNetworkPolicy :: Lens' SetNetworkPolicyRequest (Maybe NetworkPolicy)
+snprNetworkPolicy
+  = lens _snprNetworkPolicy
+      (\ s a -> s{_snprNetworkPolicy = a})
+
+instance FromJSON SetNetworkPolicyRequest where
+        parseJSON
+          = withObject "SetNetworkPolicyRequest"
+              (\ o ->
+                 SetNetworkPolicyRequest' <$>
+                   (o .:? "zone") <*> (o .:? "name") <*>
+                     (o .:? "clusterId")
+                     <*> (o .:? "projectId")
+                     <*> (o .:? "networkPolicy"))
+
+instance ToJSON SetNetworkPolicyRequest where
+        toJSON SetNetworkPolicyRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _snprZone,
+                  ("name" .=) <$> _snprName,
+                  ("clusterId" .=) <$> _snprClusterId,
+                  ("projectId" .=) <$> _snprProjectId,
+                  ("networkPolicy" .=) <$> _snprNetworkPolicy])
+
+-- | Configuration options for private clusters.
+--
+-- /See:/ 'privateClusterConfig' smart constructor.
+data PrivateClusterConfig = PrivateClusterConfig'
+    { _pccEnablePrivateNodes    :: !(Maybe Bool)
+    , _pccEnablePrivateEndpoint :: !(Maybe Bool)
+    , _pccPublicEndpoint        :: !(Maybe Text)
+    , _pccMasterIPv4CIdRBlock   :: !(Maybe Text)
+    , _pccPrivateEndpoint       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'PrivateClusterConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pccEnablePrivateNodes'
+--
+-- * 'pccEnablePrivateEndpoint'
+--
+-- * 'pccPublicEndpoint'
+--
+-- * 'pccMasterIPv4CIdRBlock'
+--
+-- * 'pccPrivateEndpoint'
+privateClusterConfig
+    :: PrivateClusterConfig
+privateClusterConfig =
+    PrivateClusterConfig'
+    { _pccEnablePrivateNodes = Nothing
+    , _pccEnablePrivateEndpoint = Nothing
+    , _pccPublicEndpoint = Nothing
+    , _pccMasterIPv4CIdRBlock = Nothing
+    , _pccPrivateEndpoint = Nothing
+    }
+
+-- | Whether nodes have internal IP addresses only. If enabled, all nodes are
+-- given only RFC 1918 private addresses and communicate with the master
+-- via private networking.
+pccEnablePrivateNodes :: Lens' PrivateClusterConfig (Maybe Bool)
+pccEnablePrivateNodes
+  = lens _pccEnablePrivateNodes
+      (\ s a -> s{_pccEnablePrivateNodes = a})
+
+-- | Whether the master\'s internal IP address is used as the cluster
+-- endpoint.
+pccEnablePrivateEndpoint :: Lens' PrivateClusterConfig (Maybe Bool)
+pccEnablePrivateEndpoint
+  = lens _pccEnablePrivateEndpoint
+      (\ s a -> s{_pccEnablePrivateEndpoint = a})
+
+-- | Output only. The external IP address of this cluster\'s master endpoint.
+pccPublicEndpoint :: Lens' PrivateClusterConfig (Maybe Text)
+pccPublicEndpoint
+  = lens _pccPublicEndpoint
+      (\ s a -> s{_pccPublicEndpoint = a})
+
+-- | The IP range in CIDR notation to use for the hosted master network. This
+-- range will be used for assigning internal IP addresses to the master or
+-- set of masters, as well as the ILB VIP. This range must not overlap with
+-- any other ranges in use within the cluster\'s network.
+pccMasterIPv4CIdRBlock :: Lens' PrivateClusterConfig (Maybe Text)
+pccMasterIPv4CIdRBlock
+  = lens _pccMasterIPv4CIdRBlock
+      (\ s a -> s{_pccMasterIPv4CIdRBlock = a})
+
+-- | Output only. The internal IP address of this cluster\'s master endpoint.
+pccPrivateEndpoint :: Lens' PrivateClusterConfig (Maybe Text)
+pccPrivateEndpoint
+  = lens _pccPrivateEndpoint
+      (\ s a -> s{_pccPrivateEndpoint = a})
+
+instance FromJSON PrivateClusterConfig where
+        parseJSON
+          = withObject "PrivateClusterConfig"
+              (\ o ->
+                 PrivateClusterConfig' <$>
+                   (o .:? "enablePrivateNodes") <*>
+                     (o .:? "enablePrivateEndpoint")
+                     <*> (o .:? "publicEndpoint")
+                     <*> (o .:? "masterIpv4CidrBlock")
+                     <*> (o .:? "privateEndpoint"))
+
+instance ToJSON PrivateClusterConfig where
+        toJSON PrivateClusterConfig'{..}
+          = object
+              (catMaybes
+                 [("enablePrivateNodes" .=) <$>
+                    _pccEnablePrivateNodes,
+                  ("enablePrivateEndpoint" .=) <$>
+                    _pccEnablePrivateEndpoint,
+                  ("publicEndpoint" .=) <$> _pccPublicEndpoint,
+                  ("masterIpv4CidrBlock" .=) <$>
+                    _pccMasterIPv4CIdRBlock,
+                  ("privateEndpoint" .=) <$> _pccPrivateEndpoint])
+
+-- | Time window specified for daily maintenance operations.
+--
+-- /See:/ 'dailyMaintenanceWindow' smart constructor.
+data DailyMaintenanceWindow = DailyMaintenanceWindow'
+    { _dmwStartTime :: !(Maybe Text)
+    , _dmwDuration  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DailyMaintenanceWindow' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmwStartTime'
+--
+-- * 'dmwDuration'
+dailyMaintenanceWindow
+    :: DailyMaintenanceWindow
+dailyMaintenanceWindow =
+    DailyMaintenanceWindow'
+    { _dmwStartTime = Nothing
+    , _dmwDuration = Nothing
+    }
+
+-- | Time within the maintenance window to start the maintenance operations.
+-- Time format should be in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) format \"HH:MM”,
+-- where HH : [00-23] and MM : [00-59] GMT.
+dmwStartTime :: Lens' DailyMaintenanceWindow (Maybe Text)
+dmwStartTime
+  = lens _dmwStartTime (\ s a -> s{_dmwStartTime = a})
+
+-- | [Output only] Duration of the time window, automatically chosen to be
+-- smallest possible in the given scenario. Duration will be in
+-- [RFC3339](https:\/\/www.ietf.org\/rfc\/rfc3339.txt) format \"PTnHnMnS\".
+dmwDuration :: Lens' DailyMaintenanceWindow (Maybe Text)
+dmwDuration
+  = lens _dmwDuration (\ s a -> s{_dmwDuration = a})
+
+instance FromJSON DailyMaintenanceWindow where
+        parseJSON
+          = withObject "DailyMaintenanceWindow"
+              (\ o ->
+                 DailyMaintenanceWindow' <$>
+                   (o .:? "startTime") <*> (o .:? "duration"))
+
+instance ToJSON DailyMaintenanceWindow where
+        toJSON DailyMaintenanceWindow'{..}
+          = object
+              (catMaybes
+                 [("startTime" .=) <$> _dmwStartTime,
+                  ("duration" .=) <$> _dmwDuration])
+
+-- | ListClustersResponse is the result of ListClustersRequest.
+--
+-- /See:/ 'listClustersResponse' smart constructor.
+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.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcrClusters'
+--
+-- * 'lcrMissingZones'
+listClustersResponse
+    :: ListClustersResponse
+listClustersResponse =
+    ListClustersResponse'
+    { _lcrClusters = Nothing
+    , _lcrMissingZones = Nothing
+    }
+
+-- | A list of clusters in the project in the specified zone, or across all
+-- ones.
+lcrClusters :: Lens' ListClustersResponse [Cluster]
+lcrClusters
+  = lens _lcrClusters (\ s a -> s{_lcrClusters = a}) .
+      _Default
+      . _Coerce
+
+-- | 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) <*>
+                     (o .:? "missingZones" .!= mempty))
+
+instance ToJSON ListClustersResponse where
+        toJSON ListClustersResponse'{..}
+          = object
+              (catMaybes
+                 [("clusters" .=) <$> _lcrClusters,
+                  ("missingZones" .=) <$> _lcrMissingZones])
+
+-- | 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.
+data ClusterUpdate = ClusterUpdate'
+    { _cuDesiredNodePoolAutoscaling            :: !(Maybe NodePoolAutoscaling)
+    , _cuDesiredAddonsConfig                   :: !(Maybe AddonsConfig)
+    , _cuDesiredNodePoolId                     :: !(Maybe Text)
+    , _cuDesiredMasterAuthorizedNetworksConfig :: !(Maybe MasterAuthorizedNetworksConfig)
+    , _cuDesiredImageType                      :: !(Maybe Text)
+    , _cuDesiredNodeVersion                    :: !(Maybe Text)
+    , _cuDesiredMasterVersion                  :: !(Maybe Text)
+    , _cuDesiredLocations                      :: !(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:
+--
+-- * 'cuDesiredNodePoolAutoscaling'
+--
+-- * 'cuDesiredAddonsConfig'
+--
+-- * 'cuDesiredNodePoolId'
+--
+-- * 'cuDesiredMasterAuthorizedNetworksConfig'
+--
+-- * 'cuDesiredImageType'
+--
+-- * 'cuDesiredNodeVersion'
+--
+-- * 'cuDesiredMasterVersion'
+--
+-- * 'cuDesiredLocations'
+--
+-- * 'cuDesiredMonitoringService'
+clusterUpdate
+    :: ClusterUpdate
+clusterUpdate =
+    ClusterUpdate'
+    { _cuDesiredNodePoolAutoscaling = Nothing
+    , _cuDesiredAddonsConfig = Nothing
+    , _cuDesiredNodePoolId = Nothing
+    , _cuDesiredMasterAuthorizedNetworksConfig = Nothing
+    , _cuDesiredImageType = Nothing
+    , _cuDesiredNodeVersion = Nothing
+    , _cuDesiredMasterVersion = Nothing
+    , _cuDesiredLocations = Nothing
+    , _cuDesiredMonitoringService = Nothing
+    }
+
+-- | Autoscaler configuration for the node pool specified in
+-- desired_node_pool_id. If there is only one pool in the cluster and
+-- desired_node_pool_id is not provided then the change applies to that
+-- single node pool.
+cuDesiredNodePoolAutoscaling :: Lens' ClusterUpdate (Maybe NodePoolAutoscaling)
+cuDesiredNodePoolAutoscaling
+  = lens _cuDesiredNodePoolAutoscaling
+      (\ s a -> s{_cuDesiredNodePoolAutoscaling = a})
+
+-- | 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
+-- \"desired_node_version\", \"desired_image_family\" or
+-- \"desired_node_pool_autoscaling\" 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 desired configuration options for master authorized networks
+-- feature.
+cuDesiredMasterAuthorizedNetworksConfig :: Lens' ClusterUpdate (Maybe MasterAuthorizedNetworksConfig)
+cuDesiredMasterAuthorizedNetworksConfig
+  = lens _cuDesiredMasterAuthorizedNetworksConfig
+      (\ s a ->
+         s{_cuDesiredMasterAuthorizedNetworksConfig = a})
+
+-- | The desired image type for the node pool. NOTE: Set the
+-- \"desired_node_pool\" field as well.
+cuDesiredImageType :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredImageType
+  = lens _cuDesiredImageType
+      (\ s a -> s{_cuDesiredImageType = a})
+
+-- | The Kubernetes version to change the nodes to (typically an upgrade).
+-- Users may specify either explicit versions offered by Kubernetes Engine
+-- or version aliases, which have the following behavior: - \"latest\":
+-- picks the highest valid Kubernetes version - \"1.X\": picks the highest
+-- valid patch+gke.N patch in the 1.X version - \"1.X.Y\": picks the
+-- highest valid gke.N patch in the 1.X.Y version - \"1.X.Y-gke.N\": picks
+-- an explicit Kubernetes version - \"-\": picks the Kubernetes master
+-- version
+cuDesiredNodeVersion :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredNodeVersion
+  = lens _cuDesiredNodeVersion
+      (\ s a -> s{_cuDesiredNodeVersion = a})
+
+-- | The Kubernetes version to change the master to. Users may specify either
+-- explicit versions offered by Kubernetes Engine or version aliases, which
+-- have the following behavior: - \"latest\": picks the highest valid
+-- Kubernetes version - \"1.X\": picks the highest valid patch+gke.N patch
+-- in the 1.X version - \"1.X.Y\": picks the highest valid gke.N patch in
+-- the 1.X.Y version - \"1.X.Y-gke.N\": picks an explicit Kubernetes
+-- version - \"-\": picks the default Kubernetes version
+cuDesiredMasterVersion :: Lens' ClusterUpdate (Maybe Text)
+cuDesiredMasterVersion
+  = lens _cuDesiredMasterVersion
+      (\ s a -> s{_cuDesiredMasterVersion = a})
+
+-- | The desired list of Google Compute Engine
+-- [zones](\/compute\/docs\/zones#available) in which the cluster\'s nodes
+-- should be located. Changing the locations a cluster is in will result in
+-- nodes being either created or removed from the cluster, depending on
+-- whether locations are being added or removed. This list must always
+-- include the cluster\'s primary zone.
+cuDesiredLocations :: Lens' ClusterUpdate [Text]
+cuDesiredLocations
+  = lens _cuDesiredLocations
+      (\ s a -> s{_cuDesiredLocations = a})
+      . _Default
+      . _Coerce
+
+-- | 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 .:? "desiredNodePoolAutoscaling") <*>
+                     (o .:? "desiredAddonsConfig")
+                     <*> (o .:? "desiredNodePoolId")
+                     <*> (o .:? "desiredMasterAuthorizedNetworksConfig")
+                     <*> (o .:? "desiredImageType")
+                     <*> (o .:? "desiredNodeVersion")
+                     <*> (o .:? "desiredMasterVersion")
+                     <*> (o .:? "desiredLocations" .!= mempty)
+                     <*> (o .:? "desiredMonitoringService"))
+
+instance ToJSON ClusterUpdate where
+        toJSON ClusterUpdate'{..}
+          = object
+              (catMaybes
+                 [("desiredNodePoolAutoscaling" .=) <$>
+                    _cuDesiredNodePoolAutoscaling,
+                  ("desiredAddonsConfig" .=) <$>
+                    _cuDesiredAddonsConfig,
+                  ("desiredNodePoolId" .=) <$> _cuDesiredNodePoolId,
+                  ("desiredMasterAuthorizedNetworksConfig" .=) <$>
+                    _cuDesiredMasterAuthorizedNetworksConfig,
+                  ("desiredImageType" .=) <$> _cuDesiredImageType,
+                  ("desiredNodeVersion" .=) <$> _cuDesiredNodeVersion,
+                  ("desiredMasterVersion" .=) <$>
+                    _cuDesiredMasterVersion,
+                  ("desiredLocations" .=) <$> _cuDesiredLocations,
+                  ("desiredMonitoringService" .=) <$>
+                    _cuDesiredMonitoringService])
+
+-- | RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or
+-- Failed NodePool upgrade. This will be an no-op if the last upgrade
+-- successfully completed.
+--
+-- /See:/ 'rollbackNodePoolUpgradeRequest' smart constructor.
+data RollbackNodePoolUpgradeRequest = RollbackNodePoolUpgradeRequest'
+    { _rnpurZone       :: !(Maybe Text)
+    , _rnpurNodePoolId :: !(Maybe Text)
+    , _rnpurName       :: !(Maybe Text)
+    , _rnpurClusterId  :: !(Maybe Text)
+    , _rnpurProjectId  :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RollbackNodePoolUpgradeRequest' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rnpurZone'
+--
+-- * 'rnpurNodePoolId'
+--
+-- * 'rnpurName'
+--
+-- * 'rnpurClusterId'
+--
+-- * 'rnpurProjectId'
+rollbackNodePoolUpgradeRequest
+    :: RollbackNodePoolUpgradeRequest
+rollbackNodePoolUpgradeRequest =
+    RollbackNodePoolUpgradeRequest'
+    { _rnpurZone = Nothing
+    , _rnpurNodePoolId = Nothing
+    , _rnpurName = Nothing
+    , _rnpurClusterId = Nothing
+    , _rnpurProjectId = Nothing
+    }
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+rnpurZone :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurZone
+  = lens _rnpurZone (\ s a -> s{_rnpurZone = a})
+
+-- | Deprecated. The name of the node pool to rollback. This field has been
+-- deprecated and replaced by the name field.
+rnpurNodePoolId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurNodePoolId
+  = lens _rnpurNodePoolId
+      (\ s a -> s{_rnpurNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node poll to
+-- rollback upgrade. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+rnpurName :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurName
+  = lens _rnpurName (\ s a -> s{_rnpurName = a})
+
+-- | Deprecated. The name of the cluster to rollback. This field has been
+-- deprecated and replaced by the name field.
+rnpurClusterId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurClusterId
+  = lens _rnpurClusterId
+      (\ s a -> s{_rnpurClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+rnpurProjectId :: Lens' RollbackNodePoolUpgradeRequest (Maybe Text)
+rnpurProjectId
+  = lens _rnpurProjectId
+      (\ s a -> s{_rnpurProjectId = a})
+
+instance FromJSON RollbackNodePoolUpgradeRequest
+         where
+        parseJSON
+          = withObject "RollbackNodePoolUpgradeRequest"
+              (\ o ->
+                 RollbackNodePoolUpgradeRequest' <$>
+                   (o .:? "zone") <*> (o .:? "nodePoolId") <*>
+                     (o .:? "name")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON RollbackNodePoolUpgradeRequest where
+        toJSON RollbackNodePoolUpgradeRequest'{..}
+          = object
+              (catMaybes
+                 [("zone" .=) <$> _rnpurZone,
+                  ("nodePoolId" .=) <$> _rnpurNodePoolId,
+                  ("name" .=) <$> _rnpurName,
+                  ("clusterId" .=) <$> _rnpurClusterId,
+                  ("projectId" .=) <$> _rnpurProjectId])
+
+-- | Configuration options for the NetworkPolicy feature.
+-- https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/networkpolicies\/
+--
+-- /See:/ 'networkPolicy' smart constructor.
+data NetworkPolicy = NetworkPolicy'
+    { _npEnabled  :: !(Maybe Bool)
+    , _npProvider :: !(Maybe NetworkPolicyProvider)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'npEnabled'
+--
+-- * 'npProvider'
+networkPolicy
+    :: NetworkPolicy
+networkPolicy =
+    NetworkPolicy'
+    { _npEnabled = Nothing
+    , _npProvider = Nothing
+    }
+
+-- | Whether network policy is enabled on the cluster.
+npEnabled :: Lens' NetworkPolicy (Maybe Bool)
+npEnabled
+  = lens _npEnabled (\ s a -> s{_npEnabled = a})
+
+-- | The selected network policy provider.
+npProvider :: Lens' NetworkPolicy (Maybe NetworkPolicyProvider)
+npProvider
+  = lens _npProvider (\ s a -> s{_npProvider = a})
+
+instance FromJSON NetworkPolicy where
+        parseJSON
+          = withObject "NetworkPolicy"
+              (\ o ->
+                 NetworkPolicy' <$>
+                   (o .:? "enabled") <*> (o .:? "provider"))
+
+instance ToJSON NetworkPolicy where
+        toJSON NetworkPolicy'{..}
+          = object
+              (catMaybes
+                 [("enabled" .=) <$> _npEnabled,
+                  ("provider" .=) <$> _npProvider])
+
+-- | 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.
+data CreateNodePoolRequest = CreateNodePoolRequest'
+    { _cnprParent    :: !(Maybe Text)
+    , _cnprZone      :: !(Maybe Text)
+    , _cnprNodePool  :: !(Maybe NodePool)
+    , _cnprClusterId :: !(Maybe Text)
+    , _cnprProjectId :: !(Maybe Text)
+    } 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:
+--
+-- * 'cnprParent'
+--
+-- * 'cnprZone'
+--
+-- * 'cnprNodePool'
+--
+-- * 'cnprClusterId'
+--
+-- * 'cnprProjectId'
+createNodePoolRequest
+    :: CreateNodePoolRequest
+createNodePoolRequest =
+    CreateNodePoolRequest'
+    { _cnprParent = Nothing
+    , _cnprZone = Nothing
+    , _cnprNodePool = Nothing
+    , _cnprClusterId = Nothing
+    , _cnprProjectId = Nothing
+    }
+
+-- | The parent (project, location, cluster id) where the node pool will be
+-- created. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+cnprParent :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprParent
+  = lens _cnprParent (\ s a -> s{_cnprParent = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
+cnprZone :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprZone = lens _cnprZone (\ s a -> s{_cnprZone = a})
+
+-- | The node pool to create.
+cnprNodePool :: Lens' CreateNodePoolRequest (Maybe NodePool)
+cnprNodePool
+  = lens _cnprNodePool (\ s a -> s{_cnprNodePool = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the parent field.
+cnprClusterId :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprClusterId
+  = lens _cnprClusterId
+      (\ s a -> s{_cnprClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the parent field.
+cnprProjectId :: Lens' CreateNodePoolRequest (Maybe Text)
+cnprProjectId
+  = lens _cnprProjectId
+      (\ s a -> s{_cnprProjectId = a})
+
+instance FromJSON CreateNodePoolRequest where
+        parseJSON
+          = withObject "CreateNodePoolRequest"
+              (\ o ->
+                 CreateNodePoolRequest' <$>
+                   (o .:? "parent") <*> (o .:? "zone") <*>
+                     (o .:? "nodePool")
+                     <*> (o .:? "clusterId")
+                     <*> (o .:? "projectId"))
+
+instance ToJSON CreateNodePoolRequest where
+        toJSON CreateNodePoolRequest'{..}
+          = object
+              (catMaybes
+                 [("parent" .=) <$> _cnprParent,
+                  ("zone" .=) <$> _cnprZone,
+                  ("nodePool" .=) <$> _cnprNodePool,
+                  ("clusterId" .=) <$> _cnprClusterId,
+                  ("projectId" .=) <$> _cnprProjectId])
+
+-- | The labels to set for that cluster.
+--
+-- /See:/ 'setLabelsRequestResourceLabels' smart constructor.
+newtype SetLabelsRequestResourceLabels = SetLabelsRequestResourceLabels'
+    { _slrrlAddtional :: HashMap Text Text
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetLabelsRequestResourceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slrrlAddtional'
+setLabelsRequestResourceLabels
+    :: HashMap Text Text -- ^ 'slrrlAddtional'
+    -> SetLabelsRequestResourceLabels
+setLabelsRequestResourceLabels pSlrrlAddtional_ =
+    SetLabelsRequestResourceLabels'
+    { _slrrlAddtional = _Coerce # pSlrrlAddtional_
+    }
+
+slrrlAddtional :: Lens' SetLabelsRequestResourceLabels (HashMap Text Text)
+slrrlAddtional
+  = lens _slrrlAddtional
+      (\ s a -> s{_slrrlAddtional = a})
+      . _Coerce
+
+instance FromJSON SetLabelsRequestResourceLabels
+         where
+        parseJSON
+          = withObject "SetLabelsRequestResourceLabels"
+              (\ o ->
+                 SetLabelsRequestResourceLabels' <$>
+                   (parseJSONObject o))
+
+instance ToJSON SetLabelsRequestResourceLabels where
+        toJSON = toJSON . _slrrlAddtional
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
@@ -16,4 +16,457 @@
 --
 module Network.Google.Container.Types.Sum where
 
-import           Network.Google.Prelude
+import           Network.Google.Prelude hiding (Bytes)
+
+-- | Machine-friendly representation of the condition
+data StatusConditionCode
+    = Unknown
+      -- ^ @UNKNOWN@
+      -- UNKNOWN indicates a generic condition.
+    | GceStockout
+      -- ^ @GCE_STOCKOUT@
+      -- GCE_STOCKOUT indicates a Google Compute Engine stockout.
+    | GkeServiceAccountDeleted
+      -- ^ @GKE_SERVICE_ACCOUNT_DELETED@
+      -- GKE_SERVICE_ACCOUNT_DELETED indicates that the user deleted their robot
+      -- service account.
+    | GceQuotaExceeded
+      -- ^ @GCE_QUOTA_EXCEEDED@
+      -- Google Compute Engine quota was exceeded.
+    | SetByOperator
+      -- ^ @SET_BY_OPERATOR@
+      -- Cluster state was manually changed by an SRE due to a system logic
+      -- error. More codes TBA
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable StatusConditionCode
+
+instance FromHttpApiData StatusConditionCode where
+    parseQueryParam = \case
+        "UNKNOWN" -> Right Unknown
+        "GCE_STOCKOUT" -> Right GceStockout
+        "GKE_SERVICE_ACCOUNT_DELETED" -> Right GkeServiceAccountDeleted
+        "GCE_QUOTA_EXCEEDED" -> Right GceQuotaExceeded
+        "SET_BY_OPERATOR" -> Right SetByOperator
+        x -> Left ("Unable to parse StatusConditionCode from: " <> x)
+
+instance ToHttpApiData StatusConditionCode where
+    toQueryParam = \case
+        Unknown -> "UNKNOWN"
+        GceStockout -> "GCE_STOCKOUT"
+        GkeServiceAccountDeleted -> "GKE_SERVICE_ACCOUNT_DELETED"
+        GceQuotaExceeded -> "GCE_QUOTA_EXCEEDED"
+        SetByOperator -> "SET_BY_OPERATOR"
+
+instance FromJSON StatusConditionCode where
+    parseJSON = parseJSONText "StatusConditionCode"
+
+instance ToJSON StatusConditionCode where
+    toJSON = toJSONText
+
+-- | The operation type.
+data OperationOperationType
+    = TypeUnspecified
+      -- ^ @TYPE_UNSPECIFIED@
+      -- Not set.
+    | CreateCluster
+      -- ^ @CREATE_CLUSTER@
+      -- Cluster create.
+    | DeleteCluster
+      -- ^ @DELETE_CLUSTER@
+      -- Cluster delete.
+    | UpgradeMaster
+      -- ^ @UPGRADE_MASTER@
+      -- A master upgrade.
+    | UpgradeNodes
+      -- ^ @UPGRADE_NODES@
+      -- A node upgrade.
+    | RepairCluster
+      -- ^ @REPAIR_CLUSTER@
+      -- Cluster repair.
+    | UpdateCluster
+      -- ^ @UPDATE_CLUSTER@
+      -- Cluster update.
+    | CreateNodePool
+      -- ^ @CREATE_NODE_POOL@
+      -- Node pool create.
+    | DeleteNodePool
+      -- ^ @DELETE_NODE_POOL@
+      -- Node pool delete.
+    | SetNodePoolManagement
+      -- ^ @SET_NODE_POOL_MANAGEMENT@
+      -- Set node pool management.
+    | AutoRepairNodes
+      -- ^ @AUTO_REPAIR_NODES@
+      -- Automatic node pool repair.
+    | AutoUpgradeNodes
+      -- ^ @AUTO_UPGRADE_NODES@
+      -- Automatic node upgrade.
+    | SetLabels
+      -- ^ @SET_LABELS@
+      -- Set labels.
+    | SetMasterAuth
+      -- ^ @SET_MASTER_AUTH@
+      -- Set\/generate master auth materials
+    | SetNodePoolSize
+      -- ^ @SET_NODE_POOL_SIZE@
+      -- Set node pool size.
+    | SetNetworkPolicy
+      -- ^ @SET_NETWORK_POLICY@
+      -- Updates network policy for a cluster.
+    | SetMaintenancePolicy
+      -- ^ @SET_MAINTENANCE_POLICY@
+      -- Set the maintenance policy.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationOperationType
+
+instance FromHttpApiData OperationOperationType where
+    parseQueryParam = \case
+        "TYPE_UNSPECIFIED" -> Right TypeUnspecified
+        "CREATE_CLUSTER" -> Right CreateCluster
+        "DELETE_CLUSTER" -> Right DeleteCluster
+        "UPGRADE_MASTER" -> Right UpgradeMaster
+        "UPGRADE_NODES" -> Right UpgradeNodes
+        "REPAIR_CLUSTER" -> Right RepairCluster
+        "UPDATE_CLUSTER" -> Right UpdateCluster
+        "CREATE_NODE_POOL" -> Right CreateNodePool
+        "DELETE_NODE_POOL" -> Right DeleteNodePool
+        "SET_NODE_POOL_MANAGEMENT" -> Right SetNodePoolManagement
+        "AUTO_REPAIR_NODES" -> Right AutoRepairNodes
+        "AUTO_UPGRADE_NODES" -> Right AutoUpgradeNodes
+        "SET_LABELS" -> Right SetLabels
+        "SET_MASTER_AUTH" -> Right SetMasterAuth
+        "SET_NODE_POOL_SIZE" -> Right SetNodePoolSize
+        "SET_NETWORK_POLICY" -> Right SetNetworkPolicy
+        "SET_MAINTENANCE_POLICY" -> Right SetMaintenancePolicy
+        x -> Left ("Unable to parse OperationOperationType from: " <> x)
+
+instance ToHttpApiData OperationOperationType where
+    toQueryParam = \case
+        TypeUnspecified -> "TYPE_UNSPECIFIED"
+        CreateCluster -> "CREATE_CLUSTER"
+        DeleteCluster -> "DELETE_CLUSTER"
+        UpgradeMaster -> "UPGRADE_MASTER"
+        UpgradeNodes -> "UPGRADE_NODES"
+        RepairCluster -> "REPAIR_CLUSTER"
+        UpdateCluster -> "UPDATE_CLUSTER"
+        CreateNodePool -> "CREATE_NODE_POOL"
+        DeleteNodePool -> "DELETE_NODE_POOL"
+        SetNodePoolManagement -> "SET_NODE_POOL_MANAGEMENT"
+        AutoRepairNodes -> "AUTO_REPAIR_NODES"
+        AutoUpgradeNodes -> "AUTO_UPGRADE_NODES"
+        SetLabels -> "SET_LABELS"
+        SetMasterAuth -> "SET_MASTER_AUTH"
+        SetNodePoolSize -> "SET_NODE_POOL_SIZE"
+        SetNetworkPolicy -> "SET_NETWORK_POLICY"
+        SetMaintenancePolicy -> "SET_MAINTENANCE_POLICY"
+
+instance FromJSON OperationOperationType where
+    parseJSON = parseJSONText "OperationOperationType"
+
+instance ToJSON OperationOperationType where
+    toJSON = toJSONText
+
+-- | The current status of the operation.
+data OperationStatus
+    = StatusUnspecified
+      -- ^ @STATUS_UNSPECIFIED@
+      -- Not set.
+    | Pending
+      -- ^ @PENDING@
+      -- The operation has been created.
+    | Running
+      -- ^ @RUNNING@
+      -- The operation is currently running.
+    | Done
+      -- ^ @DONE@
+      -- The operation is done, either cancelled or completed.
+    | Aborting
+      -- ^ @ABORTING@
+      -- The operation is aborting.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable OperationStatus
+
+instance FromHttpApiData OperationStatus where
+    parseQueryParam = \case
+        "STATUS_UNSPECIFIED" -> Right StatusUnspecified
+        "PENDING" -> Right Pending
+        "RUNNING" -> Right Running
+        "DONE" -> Right Done
+        "ABORTING" -> Right Aborting
+        x -> Left ("Unable to parse OperationStatus from: " <> x)
+
+instance ToHttpApiData OperationStatus where
+    toQueryParam = \case
+        StatusUnspecified -> "STATUS_UNSPECIFIED"
+        Pending -> "PENDING"
+        Running -> "RUNNING"
+        Done -> "DONE"
+        Aborting -> "ABORTING"
+
+instance FromJSON OperationStatus where
+    parseJSON = parseJSONText "OperationStatus"
+
+instance ToJSON OperationStatus where
+    toJSON = toJSONText
+
+-- | The selected network policy provider.
+data NetworkPolicyProvider
+    = ProviderUnspecified
+      -- ^ @PROVIDER_UNSPECIFIED@
+      -- Not set
+    | Calico
+      -- ^ @CALICO@
+      -- Tigera (Calico Felix).
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NetworkPolicyProvider
+
+instance FromHttpApiData NetworkPolicyProvider where
+    parseQueryParam = \case
+        "PROVIDER_UNSPECIFIED" -> Right ProviderUnspecified
+        "CALICO" -> Right Calico
+        x -> Left ("Unable to parse NetworkPolicyProvider from: " <> x)
+
+instance ToHttpApiData NetworkPolicyProvider where
+    toQueryParam = \case
+        ProviderUnspecified -> "PROVIDER_UNSPECIFIED"
+        Calico -> "CALICO"
+
+instance FromJSON NetworkPolicyProvider where
+    parseJSON = parseJSONText "NetworkPolicyProvider"
+
+instance ToJSON NetworkPolicyProvider where
+    toJSON = toJSONText
+
+-- | V1 error format.
+data Xgafv
+    = X1
+      -- ^ @1@
+      -- v1 error format
+    | X2
+      -- ^ @2@
+      -- v2 error format
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable Xgafv
+
+instance FromHttpApiData Xgafv where
+    parseQueryParam = \case
+        "1" -> Right X1
+        "2" -> Right X2
+        x -> Left ("Unable to parse Xgafv from: " <> x)
+
+instance ToHttpApiData Xgafv where
+    toQueryParam = \case
+        X1 -> "1"
+        X2 -> "2"
+
+instance FromJSON Xgafv where
+    parseJSON = parseJSONText "Xgafv"
+
+instance ToJSON Xgafv where
+    toJSON = toJSONText
+
+-- | [Output only] The status of the nodes in this pool instance.
+data NodePoolStatus
+    = NPSStatusUnspecified
+      -- ^ @STATUS_UNSPECIFIED@
+      -- Not set.
+    | NPSProvisioning
+      -- ^ @PROVISIONING@
+      -- The PROVISIONING state indicates the node pool is being created.
+    | NPSRunning
+      -- ^ @RUNNING@
+      -- The RUNNING state indicates the node pool has been created and is fully
+      -- usable.
+    | NPSRunningWithError
+      -- ^ @RUNNING_WITH_ERROR@
+      -- The RUNNING_WITH_ERROR state indicates the node pool has been created
+      -- and is partially usable. Some error state has occurred and some
+      -- functionality may be impaired. Customer may need to reissue a request or
+      -- trigger a new update.
+    | NPSReconciling
+      -- ^ @RECONCILING@
+      -- The RECONCILING state indicates that some work is actively being done on
+      -- the node pool, such as upgrading node software. Details can be found in
+      -- the \`statusMessage\` field.
+    | NPSStopping
+      -- ^ @STOPPING@
+      -- The STOPPING state indicates the node pool is being deleted.
+    | NPSError'
+      -- ^ @ERROR@
+      -- The ERROR state indicates the node pool may be unusable. Details can be
+      -- found in the \`statusMessage\` field.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodePoolStatus
+
+instance FromHttpApiData NodePoolStatus where
+    parseQueryParam = \case
+        "STATUS_UNSPECIFIED" -> Right NPSStatusUnspecified
+        "PROVISIONING" -> Right NPSProvisioning
+        "RUNNING" -> Right NPSRunning
+        "RUNNING_WITH_ERROR" -> Right NPSRunningWithError
+        "RECONCILING" -> Right NPSReconciling
+        "STOPPING" -> Right NPSStopping
+        "ERROR" -> Right NPSError'
+        x -> Left ("Unable to parse NodePoolStatus from: " <> x)
+
+instance ToHttpApiData NodePoolStatus where
+    toQueryParam = \case
+        NPSStatusUnspecified -> "STATUS_UNSPECIFIED"
+        NPSProvisioning -> "PROVISIONING"
+        NPSRunning -> "RUNNING"
+        NPSRunningWithError -> "RUNNING_WITH_ERROR"
+        NPSReconciling -> "RECONCILING"
+        NPSStopping -> "STOPPING"
+        NPSError' -> "ERROR"
+
+instance FromJSON NodePoolStatus where
+    parseJSON = parseJSONText "NodePoolStatus"
+
+instance ToJSON NodePoolStatus where
+    toJSON = toJSONText
+
+-- | [Output only] The current status of this cluster.
+data ClusterStatus
+    = CSStatusUnspecified
+      -- ^ @STATUS_UNSPECIFIED@
+      -- Not set.
+    | CSProvisioning
+      -- ^ @PROVISIONING@
+      -- The PROVISIONING state indicates the cluster is being created.
+    | CSRunning
+      -- ^ @RUNNING@
+      -- The RUNNING state indicates the cluster has been created and is fully
+      -- usable.
+    | CSReconciling
+      -- ^ @RECONCILING@
+      -- The RECONCILING state indicates that some work is actively being done on
+      -- the cluster, such as upgrading the master or node software. Details can
+      -- be found in the \`statusMessage\` field.
+    | CSStopping
+      -- ^ @STOPPING@
+      -- The STOPPING state indicates the cluster is being deleted.
+    | CSError'
+      -- ^ @ERROR@
+      -- The ERROR state indicates the cluster may be unusable. Details can be
+      -- found in the \`statusMessage\` field.
+    | CSDegraded
+      -- ^ @DEGRADED@
+      -- The DEGRADED state indicates the cluster requires user action to restore
+      -- full functionality. Details can be found in the \`statusMessage\` field.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable ClusterStatus
+
+instance FromHttpApiData ClusterStatus where
+    parseQueryParam = \case
+        "STATUS_UNSPECIFIED" -> Right CSStatusUnspecified
+        "PROVISIONING" -> Right CSProvisioning
+        "RUNNING" -> Right CSRunning
+        "RECONCILING" -> Right CSReconciling
+        "STOPPING" -> Right CSStopping
+        "ERROR" -> Right CSError'
+        "DEGRADED" -> Right CSDegraded
+        x -> Left ("Unable to parse ClusterStatus from: " <> x)
+
+instance ToHttpApiData ClusterStatus where
+    toQueryParam = \case
+        CSStatusUnspecified -> "STATUS_UNSPECIFIED"
+        CSProvisioning -> "PROVISIONING"
+        CSRunning -> "RUNNING"
+        CSReconciling -> "RECONCILING"
+        CSStopping -> "STOPPING"
+        CSError' -> "ERROR"
+        CSDegraded -> "DEGRADED"
+
+instance FromJSON ClusterStatus where
+    parseJSON = parseJSONText "ClusterStatus"
+
+instance ToJSON ClusterStatus where
+    toJSON = toJSONText
+
+-- | Effect for taint.
+data NodeTaintEffect
+    = EffectUnspecified
+      -- ^ @EFFECT_UNSPECIFIED@
+      -- Not set
+    | NoSchedule
+      -- ^ @NO_SCHEDULE@
+      -- NoSchedule
+    | PreferNoSchedule
+      -- ^ @PREFER_NO_SCHEDULE@
+      -- PreferNoSchedule
+    | NoExecute
+      -- ^ @NO_EXECUTE@
+      -- NoExecute
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable NodeTaintEffect
+
+instance FromHttpApiData NodeTaintEffect where
+    parseQueryParam = \case
+        "EFFECT_UNSPECIFIED" -> Right EffectUnspecified
+        "NO_SCHEDULE" -> Right NoSchedule
+        "PREFER_NO_SCHEDULE" -> Right PreferNoSchedule
+        "NO_EXECUTE" -> Right NoExecute
+        x -> Left ("Unable to parse NodeTaintEffect from: " <> x)
+
+instance ToHttpApiData NodeTaintEffect where
+    toQueryParam = \case
+        EffectUnspecified -> "EFFECT_UNSPECIFIED"
+        NoSchedule -> "NO_SCHEDULE"
+        PreferNoSchedule -> "PREFER_NO_SCHEDULE"
+        NoExecute -> "NO_EXECUTE"
+
+instance FromJSON NodeTaintEffect where
+    parseJSON = parseJSONText "NodeTaintEffect"
+
+instance ToJSON NodeTaintEffect where
+    toJSON = toJSONText
+
+-- | The exact form of action to be taken on the master auth.
+data SetMasterAuthRequestAction
+    = SMARAUnknown
+      -- ^ @UNKNOWN@
+      -- Operation is unknown and will error out.
+    | SMARASetPassword
+      -- ^ @SET_PASSWORD@
+      -- Set the password to a user generated value.
+    | SMARAGeneratePassword
+      -- ^ @GENERATE_PASSWORD@
+      -- Generate a new password and set it to that.
+    | SMARASetUsername
+      -- ^ @SET_USERNAME@
+      -- Set the username. If an empty username is provided, basic authentication
+      -- is disabled for the cluster. If a non-empty username is provided, basic
+      -- authentication is enabled, with either a provided password or a
+      -- generated one.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
+
+instance Hashable SetMasterAuthRequestAction
+
+instance FromHttpApiData SetMasterAuthRequestAction where
+    parseQueryParam = \case
+        "UNKNOWN" -> Right SMARAUnknown
+        "SET_PASSWORD" -> Right SMARASetPassword
+        "GENERATE_PASSWORD" -> Right SMARAGeneratePassword
+        "SET_USERNAME" -> Right SMARASetUsername
+        x -> Left ("Unable to parse SetMasterAuthRequestAction from: " <> x)
+
+instance ToHttpApiData SetMasterAuthRequestAction where
+    toQueryParam = \case
+        SMARAUnknown -> "UNKNOWN"
+        SMARASetPassword -> "SET_PASSWORD"
+        SMARAGeneratePassword -> "GENERATE_PASSWORD"
+        SMARASetUsername -> "SET_USERNAME"
+
+instance FromJSON SetMasterAuthRequestAction where
+    parseJSON = parseJSONText "SetMasterAuthRequestAction"
+
+instance ToJSON SetMasterAuthRequestAction where
+    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/CompleteIPRotation.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
+-- 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)
+--
+-- Completes master IP rotation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.completeIpRotation@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersCompleteIPRotationResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersCompleteIPRotation
+    , ProjectsLocationsClustersCompleteIPRotation
+
+    -- * Request Lenses
+    , plccirXgafv
+    , plccirUploadProtocol
+    , plccirAccessToken
+    , plccirUploadType
+    , plccirPayload
+    , plccirName
+    , plccirCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.completeIpRotation@ method which the
+-- 'ProjectsLocationsClustersCompleteIPRotation' request conforms to.
+type ProjectsLocationsClustersCompleteIPRotationResource
+     =
+     "v1" :>
+       CaptureMode "name" "completeIpRotation" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] CompleteIPRotationRequest :>
+                       Post '[JSON] Operation
+
+-- | Completes master IP rotation.
+--
+-- /See:/ 'projectsLocationsClustersCompleteIPRotation' smart constructor.
+data ProjectsLocationsClustersCompleteIPRotation = ProjectsLocationsClustersCompleteIPRotation'
+    { _plccirXgafv          :: !(Maybe Xgafv)
+    , _plccirUploadProtocol :: !(Maybe Text)
+    , _plccirAccessToken    :: !(Maybe Text)
+    , _plccirUploadType     :: !(Maybe Text)
+    , _plccirPayload        :: !CompleteIPRotationRequest
+    , _plccirName           :: !Text
+    , _plccirCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersCompleteIPRotation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plccirXgafv'
+--
+-- * 'plccirUploadProtocol'
+--
+-- * 'plccirAccessToken'
+--
+-- * 'plccirUploadType'
+--
+-- * 'plccirPayload'
+--
+-- * 'plccirName'
+--
+-- * 'plccirCallback'
+projectsLocationsClustersCompleteIPRotation
+    :: CompleteIPRotationRequest -- ^ 'plccirPayload'
+    -> Text -- ^ 'plccirName'
+    -> ProjectsLocationsClustersCompleteIPRotation
+projectsLocationsClustersCompleteIPRotation pPlccirPayload_ pPlccirName_ =
+    ProjectsLocationsClustersCompleteIPRotation'
+    { _plccirXgafv = Nothing
+    , _plccirUploadProtocol = Nothing
+    , _plccirAccessToken = Nothing
+    , _plccirUploadType = Nothing
+    , _plccirPayload = pPlccirPayload_
+    , _plccirName = pPlccirName_
+    , _plccirCallback = Nothing
+    }
+
+-- | V1 error format.
+plccirXgafv :: Lens' ProjectsLocationsClustersCompleteIPRotation (Maybe Xgafv)
+plccirXgafv
+  = lens _plccirXgafv (\ s a -> s{_plccirXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plccirUploadProtocol :: Lens' ProjectsLocationsClustersCompleteIPRotation (Maybe Text)
+plccirUploadProtocol
+  = lens _plccirUploadProtocol
+      (\ s a -> s{_plccirUploadProtocol = a})
+
+-- | OAuth access token.
+plccirAccessToken :: Lens' ProjectsLocationsClustersCompleteIPRotation (Maybe Text)
+plccirAccessToken
+  = lens _plccirAccessToken
+      (\ s a -> s{_plccirAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plccirUploadType :: Lens' ProjectsLocationsClustersCompleteIPRotation (Maybe Text)
+plccirUploadType
+  = lens _plccirUploadType
+      (\ s a -> s{_plccirUploadType = a})
+
+-- | Multipart request metadata.
+plccirPayload :: Lens' ProjectsLocationsClustersCompleteIPRotation CompleteIPRotationRequest
+plccirPayload
+  = lens _plccirPayload
+      (\ s a -> s{_plccirPayload = a})
+
+-- | The name (project, location, cluster id) of the cluster to complete IP
+-- rotation. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plccirName :: Lens' ProjectsLocationsClustersCompleteIPRotation Text
+plccirName
+  = lens _plccirName (\ s a -> s{_plccirName = a})
+
+-- | JSONP
+plccirCallback :: Lens' ProjectsLocationsClustersCompleteIPRotation (Maybe Text)
+plccirCallback
+  = lens _plccirCallback
+      (\ s a -> s{_plccirCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersCompleteIPRotation where
+        type Rs ProjectsLocationsClustersCompleteIPRotation =
+             Operation
+        type Scopes
+               ProjectsLocationsClustersCompleteIPRotation
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersCompleteIPRotation'{..}
+          = go _plccirName _plccirXgafv _plccirUploadProtocol
+              _plccirAccessToken
+              _plccirUploadType
+              _plccirCallback
+              (Just AltJSON)
+              _plccirPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersCompleteIPRotationResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Create.hs
@@ -0,0 +1,180 @@
+{-# 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.Locations.Clusters.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 cluster, consisting of the specified number and type of Google
+-- 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/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.create@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersCreate
+    , ProjectsLocationsClustersCreate
+
+    -- * Request Lenses
+    , plccParent
+    , plccXgafv
+    , plccUploadProtocol
+    , plccAccessToken
+    , plccUploadType
+    , plccPayload
+    , plccCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.create@ method which the
+-- 'ProjectsLocationsClustersCreate' request conforms to.
+type ProjectsLocationsClustersCreateResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "clusters" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CreateClusterRequest :>
+                         Post '[JSON] Operation
+
+-- | Creates a cluster, consisting of the specified number and type of Google
+-- Compute Engine instances. 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:/ 'projectsLocationsClustersCreate' smart constructor.
+data ProjectsLocationsClustersCreate = ProjectsLocationsClustersCreate'
+    { _plccParent         :: !Text
+    , _plccXgafv          :: !(Maybe Xgafv)
+    , _plccUploadProtocol :: !(Maybe Text)
+    , _plccAccessToken    :: !(Maybe Text)
+    , _plccUploadType     :: !(Maybe Text)
+    , _plccPayload        :: !CreateClusterRequest
+    , _plccCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plccParent'
+--
+-- * 'plccXgafv'
+--
+-- * 'plccUploadProtocol'
+--
+-- * 'plccAccessToken'
+--
+-- * 'plccUploadType'
+--
+-- * 'plccPayload'
+--
+-- * 'plccCallback'
+projectsLocationsClustersCreate
+    :: Text -- ^ 'plccParent'
+    -> CreateClusterRequest -- ^ 'plccPayload'
+    -> ProjectsLocationsClustersCreate
+projectsLocationsClustersCreate pPlccParent_ pPlccPayload_ =
+    ProjectsLocationsClustersCreate'
+    { _plccParent = pPlccParent_
+    , _plccXgafv = Nothing
+    , _plccUploadProtocol = Nothing
+    , _plccAccessToken = Nothing
+    , _plccUploadType = Nothing
+    , _plccPayload = pPlccPayload_
+    , _plccCallback = Nothing
+    }
+
+-- | The parent (project and location) where the cluster will be created.
+-- Specified in the format \'projects\/*\/locations\/*\'.
+plccParent :: Lens' ProjectsLocationsClustersCreate Text
+plccParent
+  = lens _plccParent (\ s a -> s{_plccParent = a})
+
+-- | V1 error format.
+plccXgafv :: Lens' ProjectsLocationsClustersCreate (Maybe Xgafv)
+plccXgafv
+  = lens _plccXgafv (\ s a -> s{_plccXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plccUploadProtocol :: Lens' ProjectsLocationsClustersCreate (Maybe Text)
+plccUploadProtocol
+  = lens _plccUploadProtocol
+      (\ s a -> s{_plccUploadProtocol = a})
+
+-- | OAuth access token.
+plccAccessToken :: Lens' ProjectsLocationsClustersCreate (Maybe Text)
+plccAccessToken
+  = lens _plccAccessToken
+      (\ s a -> s{_plccAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plccUploadType :: Lens' ProjectsLocationsClustersCreate (Maybe Text)
+plccUploadType
+  = lens _plccUploadType
+      (\ s a -> s{_plccUploadType = a})
+
+-- | Multipart request metadata.
+plccPayload :: Lens' ProjectsLocationsClustersCreate CreateClusterRequest
+plccPayload
+  = lens _plccPayload (\ s a -> s{_plccPayload = a})
+
+-- | JSONP
+plccCallback :: Lens' ProjectsLocationsClustersCreate (Maybe Text)
+plccCallback
+  = lens _plccCallback (\ s a -> s{_plccCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersCreate where
+        type Rs ProjectsLocationsClustersCreate = Operation
+        type Scopes ProjectsLocationsClustersCreate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersCreate'{..}
+          = go _plccParent _plccXgafv _plccUploadProtocol
+              _plccAccessToken
+              _plccUploadType
+              _plccCallback
+              (Just AltJSON)
+              _plccPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Delete.hs
@@ -0,0 +1,198 @@
+{-# 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.Locations.Clusters.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 the cluster, including the Kubernetes endpoint and all worker
+-- nodes. Firewalls and routes that were configured during cluster creation
+-- 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/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.delete@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersDelete
+    , ProjectsLocationsClustersDelete
+
+    -- * Request Lenses
+    , plcdXgafv
+    , plcdUploadProtocol
+    , plcdAccessToken
+    , plcdUploadType
+    , plcdZone
+    , plcdName
+    , plcdClusterId
+    , plcdProjectId
+    , plcdCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.delete@ method which the
+-- 'ProjectsLocationsClustersDelete' request conforms to.
+type ProjectsLocationsClustersDeleteResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "zone" Text :>
+                   QueryParam "clusterId" Text :>
+                     QueryParam "projectId" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes the cluster, including the Kubernetes endpoint and all worker
+-- nodes. Firewalls and routes that were configured during cluster creation
+-- are also deleted. 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:/ 'projectsLocationsClustersDelete' smart constructor.
+data ProjectsLocationsClustersDelete = ProjectsLocationsClustersDelete'
+    { _plcdXgafv          :: !(Maybe Xgafv)
+    , _plcdUploadProtocol :: !(Maybe Text)
+    , _plcdAccessToken    :: !(Maybe Text)
+    , _plcdUploadType     :: !(Maybe Text)
+    , _plcdZone           :: !(Maybe Text)
+    , _plcdName           :: !Text
+    , _plcdClusterId      :: !(Maybe Text)
+    , _plcdProjectId      :: !(Maybe Text)
+    , _plcdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcdXgafv'
+--
+-- * 'plcdUploadProtocol'
+--
+-- * 'plcdAccessToken'
+--
+-- * 'plcdUploadType'
+--
+-- * 'plcdZone'
+--
+-- * 'plcdName'
+--
+-- * 'plcdClusterId'
+--
+-- * 'plcdProjectId'
+--
+-- * 'plcdCallback'
+projectsLocationsClustersDelete
+    :: Text -- ^ 'plcdName'
+    -> ProjectsLocationsClustersDelete
+projectsLocationsClustersDelete pPlcdName_ =
+    ProjectsLocationsClustersDelete'
+    { _plcdXgafv = Nothing
+    , _plcdUploadProtocol = Nothing
+    , _plcdAccessToken = Nothing
+    , _plcdUploadType = Nothing
+    , _plcdZone = Nothing
+    , _plcdName = pPlcdName_
+    , _plcdClusterId = Nothing
+    , _plcdProjectId = Nothing
+    , _plcdCallback = Nothing
+    }
+
+-- | V1 error format.
+plcdXgafv :: Lens' ProjectsLocationsClustersDelete (Maybe Xgafv)
+plcdXgafv
+  = lens _plcdXgafv (\ s a -> s{_plcdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcdUploadProtocol :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdUploadProtocol
+  = lens _plcdUploadProtocol
+      (\ s a -> s{_plcdUploadProtocol = a})
+
+-- | OAuth access token.
+plcdAccessToken :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdAccessToken
+  = lens _plcdAccessToken
+      (\ s a -> s{_plcdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcdUploadType :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdUploadType
+  = lens _plcdUploadType
+      (\ s a -> s{_plcdUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+plcdZone :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdZone = lens _plcdZone (\ s a -> s{_plcdZone = a})
+
+-- | The name (project, location, cluster) of the cluster to delete.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcdName :: Lens' ProjectsLocationsClustersDelete Text
+plcdName = lens _plcdName (\ s a -> s{_plcdName = a})
+
+-- | Deprecated. The name of the cluster to delete. This field has been
+-- deprecated and replaced by the name field.
+plcdClusterId :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdClusterId
+  = lens _plcdClusterId
+      (\ s a -> s{_plcdClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+plcdProjectId :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdProjectId
+  = lens _plcdProjectId
+      (\ s a -> s{_plcdProjectId = a})
+
+-- | JSONP
+plcdCallback :: Lens' ProjectsLocationsClustersDelete (Maybe Text)
+plcdCallback
+  = lens _plcdCallback (\ s a -> s{_plcdCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersDelete where
+        type Rs ProjectsLocationsClustersDelete = Operation
+        type Scopes ProjectsLocationsClustersDelete =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersDelete'{..}
+          = go _plcdName _plcdXgafv _plcdUploadProtocol
+              _plcdAccessToken
+              _plcdUploadType
+              _plcdZone
+              _plcdClusterId
+              _plcdProjectId
+              _plcdCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Get.hs
@@ -0,0 +1,189 @@
+{-# 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.Locations.Clusters.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the details of a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.get@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersGetResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersGet
+    , ProjectsLocationsClustersGet
+
+    -- * Request Lenses
+    , plcgXgafv
+    , plcgUploadProtocol
+    , plcgAccessToken
+    , plcgUploadType
+    , plcgZone
+    , plcgName
+    , plcgClusterId
+    , plcgProjectId
+    , plcgCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.get@ method which the
+-- 'ProjectsLocationsClustersGet' request conforms to.
+type ProjectsLocationsClustersGetResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "zone" Text :>
+                   QueryParam "clusterId" Text :>
+                     QueryParam "projectId" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] Cluster
+
+-- | Gets the details of a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersGet' smart constructor.
+data ProjectsLocationsClustersGet = ProjectsLocationsClustersGet'
+    { _plcgXgafv          :: !(Maybe Xgafv)
+    , _plcgUploadProtocol :: !(Maybe Text)
+    , _plcgAccessToken    :: !(Maybe Text)
+    , _plcgUploadType     :: !(Maybe Text)
+    , _plcgZone           :: !(Maybe Text)
+    , _plcgName           :: !Text
+    , _plcgClusterId      :: !(Maybe Text)
+    , _plcgProjectId      :: !(Maybe Text)
+    , _plcgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcgXgafv'
+--
+-- * 'plcgUploadProtocol'
+--
+-- * 'plcgAccessToken'
+--
+-- * 'plcgUploadType'
+--
+-- * 'plcgZone'
+--
+-- * 'plcgName'
+--
+-- * 'plcgClusterId'
+--
+-- * 'plcgProjectId'
+--
+-- * 'plcgCallback'
+projectsLocationsClustersGet
+    :: Text -- ^ 'plcgName'
+    -> ProjectsLocationsClustersGet
+projectsLocationsClustersGet pPlcgName_ =
+    ProjectsLocationsClustersGet'
+    { _plcgXgafv = Nothing
+    , _plcgUploadProtocol = Nothing
+    , _plcgAccessToken = Nothing
+    , _plcgUploadType = Nothing
+    , _plcgZone = Nothing
+    , _plcgName = pPlcgName_
+    , _plcgClusterId = Nothing
+    , _plcgProjectId = Nothing
+    , _plcgCallback = Nothing
+    }
+
+-- | V1 error format.
+plcgXgafv :: Lens' ProjectsLocationsClustersGet (Maybe Xgafv)
+plcgXgafv
+  = lens _plcgXgafv (\ s a -> s{_plcgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcgUploadProtocol :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgUploadProtocol
+  = lens _plcgUploadProtocol
+      (\ s a -> s{_plcgUploadProtocol = a})
+
+-- | OAuth access token.
+plcgAccessToken :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgAccessToken
+  = lens _plcgAccessToken
+      (\ s a -> s{_plcgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcgUploadType :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgUploadType
+  = lens _plcgUploadType
+      (\ s a -> s{_plcgUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+plcgZone :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgZone = lens _plcgZone (\ s a -> s{_plcgZone = a})
+
+-- | The name (project, location, cluster) of the cluster to retrieve.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcgName :: Lens' ProjectsLocationsClustersGet Text
+plcgName = lens _plcgName (\ s a -> s{_plcgName = a})
+
+-- | Deprecated. The name of the cluster to retrieve. This field has been
+-- deprecated and replaced by the name field.
+plcgClusterId :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgClusterId
+  = lens _plcgClusterId
+      (\ s a -> s{_plcgClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+plcgProjectId :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgProjectId
+  = lens _plcgProjectId
+      (\ s a -> s{_plcgProjectId = a})
+
+-- | JSONP
+plcgCallback :: Lens' ProjectsLocationsClustersGet (Maybe Text)
+plcgCallback
+  = lens _plcgCallback (\ s a -> s{_plcgCallback = a})
+
+instance GoogleRequest ProjectsLocationsClustersGet
+         where
+        type Rs ProjectsLocationsClustersGet = Cluster
+        type Scopes ProjectsLocationsClustersGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersGet'{..}
+          = go _plcgName _plcgXgafv _plcgUploadProtocol
+              _plcgAccessToken
+              _plcgUploadType
+              _plcgZone
+              _plcgClusterId
+              _plcgProjectId
+              _plcgCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsLocationsClustersGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/List.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Clusters.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 all clusters owned by a project in either the specified zone or
+-- all zones.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.list@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.List
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersListResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersList
+    , ProjectsLocationsClustersList
+
+    -- * Request Lenses
+    , plclParent
+    , plclXgafv
+    , plclUploadProtocol
+    , plclAccessToken
+    , plclUploadType
+    , plclZone
+    , plclProjectId
+    , plclCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.list@ method which the
+-- 'ProjectsLocationsClustersList' request conforms to.
+type ProjectsLocationsClustersListResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "clusters" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "zone" Text :>
+                     QueryParam "projectId" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListClustersResponse
+
+-- | Lists all clusters owned by a project in either the specified zone or
+-- all zones.
+--
+-- /See:/ 'projectsLocationsClustersList' smart constructor.
+data ProjectsLocationsClustersList = ProjectsLocationsClustersList'
+    { _plclParent         :: !Text
+    , _plclXgafv          :: !(Maybe Xgafv)
+    , _plclUploadProtocol :: !(Maybe Text)
+    , _plclAccessToken    :: !(Maybe Text)
+    , _plclUploadType     :: !(Maybe Text)
+    , _plclZone           :: !(Maybe Text)
+    , _plclProjectId      :: !(Maybe Text)
+    , _plclCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plclParent'
+--
+-- * 'plclXgafv'
+--
+-- * 'plclUploadProtocol'
+--
+-- * 'plclAccessToken'
+--
+-- * 'plclUploadType'
+--
+-- * 'plclZone'
+--
+-- * 'plclProjectId'
+--
+-- * 'plclCallback'
+projectsLocationsClustersList
+    :: Text -- ^ 'plclParent'
+    -> ProjectsLocationsClustersList
+projectsLocationsClustersList pPlclParent_ =
+    ProjectsLocationsClustersList'
+    { _plclParent = pPlclParent_
+    , _plclXgafv = Nothing
+    , _plclUploadProtocol = Nothing
+    , _plclAccessToken = Nothing
+    , _plclUploadType = Nothing
+    , _plclZone = Nothing
+    , _plclProjectId = Nothing
+    , _plclCallback = Nothing
+    }
+
+-- | The parent (project and location) where the clusters will be listed.
+-- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
+-- matches all zones and all regions.
+plclParent :: Lens' ProjectsLocationsClustersList Text
+plclParent
+  = lens _plclParent (\ s a -> s{_plclParent = a})
+
+-- | V1 error format.
+plclXgafv :: Lens' ProjectsLocationsClustersList (Maybe Xgafv)
+plclXgafv
+  = lens _plclXgafv (\ s a -> s{_plclXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plclUploadProtocol :: Lens' ProjectsLocationsClustersList (Maybe Text)
+plclUploadProtocol
+  = lens _plclUploadProtocol
+      (\ s a -> s{_plclUploadProtocol = a})
+
+-- | OAuth access token.
+plclAccessToken :: Lens' ProjectsLocationsClustersList (Maybe Text)
+plclAccessToken
+  = lens _plclAccessToken
+      (\ s a -> s{_plclAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plclUploadType :: Lens' ProjectsLocationsClustersList (Maybe Text)
+plclUploadType
+  = lens _plclUploadType
+      (\ s a -> s{_plclUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides,
+-- or \"-\" for all zones. This field has been deprecated and replaced by
+-- the parent field.
+plclZone :: Lens' ProjectsLocationsClustersList (Maybe Text)
+plclZone = lens _plclZone (\ s a -> s{_plclZone = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
+plclProjectId :: Lens' ProjectsLocationsClustersList (Maybe Text)
+plclProjectId
+  = lens _plclProjectId
+      (\ s a -> s{_plclProjectId = a})
+
+-- | JSONP
+plclCallback :: Lens' ProjectsLocationsClustersList (Maybe Text)
+plclCallback
+  = lens _plclCallback (\ s a -> s{_plclCallback = a})
+
+instance GoogleRequest ProjectsLocationsClustersList
+         where
+        type Rs ProjectsLocationsClustersList =
+             ListClustersResponse
+        type Scopes ProjectsLocationsClustersList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersList'{..}
+          = go _plclParent _plclXgafv _plclUploadProtocol
+              _plclAccessToken
+              _plclUploadType
+              _plclZone
+              _plclProjectId
+              _plclCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Create.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.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/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.create@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Create
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsCreateResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsCreate
+    , ProjectsLocationsClustersNodePoolsCreate
+
+    -- * Request Lenses
+    , plcnpcParent
+    , plcnpcXgafv
+    , plcnpcUploadProtocol
+    , plcnpcAccessToken
+    , plcnpcUploadType
+    , plcnpcPayload
+    , plcnpcCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.create@ method which the
+-- 'ProjectsLocationsClustersNodePoolsCreate' request conforms to.
+type ProjectsLocationsClustersNodePoolsCreateResource
+     =
+     "v1" :>
+       Capture "parent" Text :>
+         "nodePools" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "callback" Text :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] CreateNodePoolRequest :>
+                         Post '[JSON] Operation
+
+-- | Creates a node pool for a cluster.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsCreate' smart constructor.
+data ProjectsLocationsClustersNodePoolsCreate = ProjectsLocationsClustersNodePoolsCreate'
+    { _plcnpcParent         :: !Text
+    , _plcnpcXgafv          :: !(Maybe Xgafv)
+    , _plcnpcUploadProtocol :: !(Maybe Text)
+    , _plcnpcAccessToken    :: !(Maybe Text)
+    , _plcnpcUploadType     :: !(Maybe Text)
+    , _plcnpcPayload        :: !CreateNodePoolRequest
+    , _plcnpcCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpcParent'
+--
+-- * 'plcnpcXgafv'
+--
+-- * 'plcnpcUploadProtocol'
+--
+-- * 'plcnpcAccessToken'
+--
+-- * 'plcnpcUploadType'
+--
+-- * 'plcnpcPayload'
+--
+-- * 'plcnpcCallback'
+projectsLocationsClustersNodePoolsCreate
+    :: Text -- ^ 'plcnpcParent'
+    -> CreateNodePoolRequest -- ^ 'plcnpcPayload'
+    -> ProjectsLocationsClustersNodePoolsCreate
+projectsLocationsClustersNodePoolsCreate pPlcnpcParent_ pPlcnpcPayload_ =
+    ProjectsLocationsClustersNodePoolsCreate'
+    { _plcnpcParent = pPlcnpcParent_
+    , _plcnpcXgafv = Nothing
+    , _plcnpcUploadProtocol = Nothing
+    , _plcnpcAccessToken = Nothing
+    , _plcnpcUploadType = Nothing
+    , _plcnpcPayload = pPlcnpcPayload_
+    , _plcnpcCallback = Nothing
+    }
+
+-- | The parent (project, location, cluster id) where the node pool will be
+-- created. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcnpcParent :: Lens' ProjectsLocationsClustersNodePoolsCreate Text
+plcnpcParent
+  = lens _plcnpcParent (\ s a -> s{_plcnpcParent = a})
+
+-- | V1 error format.
+plcnpcXgafv :: Lens' ProjectsLocationsClustersNodePoolsCreate (Maybe Xgafv)
+plcnpcXgafv
+  = lens _plcnpcXgafv (\ s a -> s{_plcnpcXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpcUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsCreate (Maybe Text)
+plcnpcUploadProtocol
+  = lens _plcnpcUploadProtocol
+      (\ s a -> s{_plcnpcUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpcAccessToken :: Lens' ProjectsLocationsClustersNodePoolsCreate (Maybe Text)
+plcnpcAccessToken
+  = lens _plcnpcAccessToken
+      (\ s a -> s{_plcnpcAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpcUploadType :: Lens' ProjectsLocationsClustersNodePoolsCreate (Maybe Text)
+plcnpcUploadType
+  = lens _plcnpcUploadType
+      (\ s a -> s{_plcnpcUploadType = a})
+
+-- | Multipart request metadata.
+plcnpcPayload :: Lens' ProjectsLocationsClustersNodePoolsCreate CreateNodePoolRequest
+plcnpcPayload
+  = lens _plcnpcPayload
+      (\ s a -> s{_plcnpcPayload = a})
+
+-- | JSONP
+plcnpcCallback :: Lens' ProjectsLocationsClustersNodePoolsCreate (Maybe Text)
+plcnpcCallback
+  = lens _plcnpcCallback
+      (\ s a -> s{_plcnpcCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsCreate where
+        type Rs ProjectsLocationsClustersNodePoolsCreate =
+             Operation
+        type Scopes ProjectsLocationsClustersNodePoolsCreate
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsCreate'{..}
+          = go _plcnpcParent _plcnpcXgafv _plcnpcUploadProtocol
+              _plcnpcAccessToken
+              _plcnpcUploadType
+              _plcnpcCallback
+              (Just AltJSON)
+              _plcnpcPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Delete.hs
@@ -0,0 +1,212 @@
+{-# 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.Locations.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/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.delete@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Delete
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsDeleteResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsDelete
+    , ProjectsLocationsClustersNodePoolsDelete
+
+    -- * Request Lenses
+    , plcnpdXgafv
+    , plcnpdUploadProtocol
+    , plcnpdAccessToken
+    , plcnpdUploadType
+    , plcnpdZone
+    , plcnpdNodePoolId
+    , plcnpdName
+    , plcnpdClusterId
+    , plcnpdProjectId
+    , plcnpdCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.delete@ method which the
+-- 'ProjectsLocationsClustersNodePoolsDelete' request conforms to.
+type ProjectsLocationsClustersNodePoolsDeleteResource
+     =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "zone" Text :>
+                   QueryParam "nodePoolId" Text :>
+                     QueryParam "clusterId" Text :>
+                       QueryParam "projectId" Text :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :> Delete '[JSON] Operation
+
+-- | Deletes a node pool from a cluster.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsDelete' smart constructor.
+data ProjectsLocationsClustersNodePoolsDelete = ProjectsLocationsClustersNodePoolsDelete'
+    { _plcnpdXgafv          :: !(Maybe Xgafv)
+    , _plcnpdUploadProtocol :: !(Maybe Text)
+    , _plcnpdAccessToken    :: !(Maybe Text)
+    , _plcnpdUploadType     :: !(Maybe Text)
+    , _plcnpdZone           :: !(Maybe Text)
+    , _plcnpdNodePoolId     :: !(Maybe Text)
+    , _plcnpdName           :: !Text
+    , _plcnpdClusterId      :: !(Maybe Text)
+    , _plcnpdProjectId      :: !(Maybe Text)
+    , _plcnpdCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpdXgafv'
+--
+-- * 'plcnpdUploadProtocol'
+--
+-- * 'plcnpdAccessToken'
+--
+-- * 'plcnpdUploadType'
+--
+-- * 'plcnpdZone'
+--
+-- * 'plcnpdNodePoolId'
+--
+-- * 'plcnpdName'
+--
+-- * 'plcnpdClusterId'
+--
+-- * 'plcnpdProjectId'
+--
+-- * 'plcnpdCallback'
+projectsLocationsClustersNodePoolsDelete
+    :: Text -- ^ 'plcnpdName'
+    -> ProjectsLocationsClustersNodePoolsDelete
+projectsLocationsClustersNodePoolsDelete pPlcnpdName_ =
+    ProjectsLocationsClustersNodePoolsDelete'
+    { _plcnpdXgafv = Nothing
+    , _plcnpdUploadProtocol = Nothing
+    , _plcnpdAccessToken = Nothing
+    , _plcnpdUploadType = Nothing
+    , _plcnpdZone = Nothing
+    , _plcnpdNodePoolId = Nothing
+    , _plcnpdName = pPlcnpdName_
+    , _plcnpdClusterId = Nothing
+    , _plcnpdProjectId = Nothing
+    , _plcnpdCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnpdXgafv :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Xgafv)
+plcnpdXgafv
+  = lens _plcnpdXgafv (\ s a -> s{_plcnpdXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpdUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdUploadProtocol
+  = lens _plcnpdUploadProtocol
+      (\ s a -> s{_plcnpdUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpdAccessToken :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdAccessToken
+  = lens _plcnpdAccessToken
+      (\ s a -> s{_plcnpdAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpdUploadType :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdUploadType
+  = lens _plcnpdUploadType
+      (\ s a -> s{_plcnpdUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+plcnpdZone :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdZone
+  = lens _plcnpdZone (\ s a -> s{_plcnpdZone = a})
+
+-- | Deprecated. The name of the node pool to delete. This field has been
+-- deprecated and replaced by the name field.
+plcnpdNodePoolId :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdNodePoolId
+  = lens _plcnpdNodePoolId
+      (\ s a -> s{_plcnpdNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- delete. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnpdName :: Lens' ProjectsLocationsClustersNodePoolsDelete Text
+plcnpdName
+  = lens _plcnpdName (\ s a -> s{_plcnpdName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+plcnpdClusterId :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdClusterId
+  = lens _plcnpdClusterId
+      (\ s a -> s{_plcnpdClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+plcnpdProjectId :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdProjectId
+  = lens _plcnpdProjectId
+      (\ s a -> s{_plcnpdProjectId = a})
+
+-- | JSONP
+plcnpdCallback :: Lens' ProjectsLocationsClustersNodePoolsDelete (Maybe Text)
+plcnpdCallback
+  = lens _plcnpdCallback
+      (\ s a -> s{_plcnpdCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsDelete where
+        type Rs ProjectsLocationsClustersNodePoolsDelete =
+             Operation
+        type Scopes ProjectsLocationsClustersNodePoolsDelete
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsDelete'{..}
+          = go _plcnpdName _plcnpdXgafv _plcnpdUploadProtocol
+              _plcnpdAccessToken
+              _plcnpdUploadType
+              _plcnpdZone
+              _plcnpdNodePoolId
+              _plcnpdClusterId
+              _plcnpdProjectId
+              _plcnpdCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Get.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.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/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.get@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsGetResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsGet
+    , ProjectsLocationsClustersNodePoolsGet
+
+    -- * Request Lenses
+    , plcnpgXgafv
+    , plcnpgUploadProtocol
+    , plcnpgAccessToken
+    , plcnpgUploadType
+    , plcnpgZone
+    , plcnpgNodePoolId
+    , plcnpgName
+    , plcnpgClusterId
+    , plcnpgProjectId
+    , plcnpgCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.get@ method which the
+-- 'ProjectsLocationsClustersNodePoolsGet' request conforms to.
+type ProjectsLocationsClustersNodePoolsGetResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "zone" Text :>
+                   QueryParam "nodePoolId" Text :>
+                     QueryParam "clusterId" Text :>
+                       QueryParam "projectId" Text :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :> Get '[JSON] NodePool
+
+-- | Retrieves the node pool requested.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsGet' smart constructor.
+data ProjectsLocationsClustersNodePoolsGet = ProjectsLocationsClustersNodePoolsGet'
+    { _plcnpgXgafv          :: !(Maybe Xgafv)
+    , _plcnpgUploadProtocol :: !(Maybe Text)
+    , _plcnpgAccessToken    :: !(Maybe Text)
+    , _plcnpgUploadType     :: !(Maybe Text)
+    , _plcnpgZone           :: !(Maybe Text)
+    , _plcnpgNodePoolId     :: !(Maybe Text)
+    , _plcnpgName           :: !Text
+    , _plcnpgClusterId      :: !(Maybe Text)
+    , _plcnpgProjectId      :: !(Maybe Text)
+    , _plcnpgCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpgXgafv'
+--
+-- * 'plcnpgUploadProtocol'
+--
+-- * 'plcnpgAccessToken'
+--
+-- * 'plcnpgUploadType'
+--
+-- * 'plcnpgZone'
+--
+-- * 'plcnpgNodePoolId'
+--
+-- * 'plcnpgName'
+--
+-- * 'plcnpgClusterId'
+--
+-- * 'plcnpgProjectId'
+--
+-- * 'plcnpgCallback'
+projectsLocationsClustersNodePoolsGet
+    :: Text -- ^ 'plcnpgName'
+    -> ProjectsLocationsClustersNodePoolsGet
+projectsLocationsClustersNodePoolsGet pPlcnpgName_ =
+    ProjectsLocationsClustersNodePoolsGet'
+    { _plcnpgXgafv = Nothing
+    , _plcnpgUploadProtocol = Nothing
+    , _plcnpgAccessToken = Nothing
+    , _plcnpgUploadType = Nothing
+    , _plcnpgZone = Nothing
+    , _plcnpgNodePoolId = Nothing
+    , _plcnpgName = pPlcnpgName_
+    , _plcnpgClusterId = Nothing
+    , _plcnpgProjectId = Nothing
+    , _plcnpgCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnpgXgafv :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Xgafv)
+plcnpgXgafv
+  = lens _plcnpgXgafv (\ s a -> s{_plcnpgXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpgUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgUploadProtocol
+  = lens _plcnpgUploadProtocol
+      (\ s a -> s{_plcnpgUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpgAccessToken :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgAccessToken
+  = lens _plcnpgAccessToken
+      (\ s a -> s{_plcnpgAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpgUploadType :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgUploadType
+  = lens _plcnpgUploadType
+      (\ s a -> s{_plcnpgUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+plcnpgZone :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgZone
+  = lens _plcnpgZone (\ s a -> s{_plcnpgZone = a})
+
+-- | Deprecated. The name of the node pool. This field has been deprecated
+-- and replaced by the name field.
+plcnpgNodePoolId :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgNodePoolId
+  = lens _plcnpgNodePoolId
+      (\ s a -> s{_plcnpgNodePoolId = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- get. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnpgName :: Lens' ProjectsLocationsClustersNodePoolsGet Text
+plcnpgName
+  = lens _plcnpgName (\ s a -> s{_plcnpgName = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+plcnpgClusterId :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgClusterId
+  = lens _plcnpgClusterId
+      (\ s a -> s{_plcnpgClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+plcnpgProjectId :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgProjectId
+  = lens _plcnpgProjectId
+      (\ s a -> s{_plcnpgProjectId = a})
+
+-- | JSONP
+plcnpgCallback :: Lens' ProjectsLocationsClustersNodePoolsGet (Maybe Text)
+plcnpgCallback
+  = lens _plcnpgCallback
+      (\ s a -> s{_plcnpgCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsGet where
+        type Rs ProjectsLocationsClustersNodePoolsGet =
+             NodePool
+        type Scopes ProjectsLocationsClustersNodePoolsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsGet'{..}
+          = go _plcnpgName _plcnpgXgafv _plcnpgUploadProtocol
+              _plcnpgAccessToken
+              _plcnpgUploadType
+              _plcnpgZone
+              _plcnpgNodePoolId
+              _plcnpgClusterId
+              _plcnpgProjectId
+              _plcnpgCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersNodePoolsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/List.hs
@@ -0,0 +1,198 @@
+{-# 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.Locations.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/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.list@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.List
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsListResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsList
+    , ProjectsLocationsClustersNodePoolsList
+
+    -- * Request Lenses
+    , plcnplParent
+    , plcnplXgafv
+    , plcnplUploadProtocol
+    , plcnplAccessToken
+    , plcnplUploadType
+    , plcnplZone
+    , plcnplClusterId
+    , plcnplProjectId
+    , plcnplCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.list@ method which the
+-- 'ProjectsLocationsClustersNodePoolsList' request conforms to.
+type ProjectsLocationsClustersNodePoolsListResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "nodePools" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "zone" Text :>
+                     QueryParam "clusterId" Text :>
+                       QueryParam "projectId" Text :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             Get '[JSON] ListNodePoolsResponse
+
+-- | Lists the node pools for a cluster.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsList' smart constructor.
+data ProjectsLocationsClustersNodePoolsList = ProjectsLocationsClustersNodePoolsList'
+    { _plcnplParent         :: !Text
+    , _plcnplXgafv          :: !(Maybe Xgafv)
+    , _plcnplUploadProtocol :: !(Maybe Text)
+    , _plcnplAccessToken    :: !(Maybe Text)
+    , _plcnplUploadType     :: !(Maybe Text)
+    , _plcnplZone           :: !(Maybe Text)
+    , _plcnplClusterId      :: !(Maybe Text)
+    , _plcnplProjectId      :: !(Maybe Text)
+    , _plcnplCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnplParent'
+--
+-- * 'plcnplXgafv'
+--
+-- * 'plcnplUploadProtocol'
+--
+-- * 'plcnplAccessToken'
+--
+-- * 'plcnplUploadType'
+--
+-- * 'plcnplZone'
+--
+-- * 'plcnplClusterId'
+--
+-- * 'plcnplProjectId'
+--
+-- * 'plcnplCallback'
+projectsLocationsClustersNodePoolsList
+    :: Text -- ^ 'plcnplParent'
+    -> ProjectsLocationsClustersNodePoolsList
+projectsLocationsClustersNodePoolsList pPlcnplParent_ =
+    ProjectsLocationsClustersNodePoolsList'
+    { _plcnplParent = pPlcnplParent_
+    , _plcnplXgafv = Nothing
+    , _plcnplUploadProtocol = Nothing
+    , _plcnplAccessToken = Nothing
+    , _plcnplUploadType = Nothing
+    , _plcnplZone = Nothing
+    , _plcnplClusterId = Nothing
+    , _plcnplProjectId = Nothing
+    , _plcnplCallback = Nothing
+    }
+
+-- | The parent (project, location, cluster id) where the node pools will be
+-- listed. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcnplParent :: Lens' ProjectsLocationsClustersNodePoolsList Text
+plcnplParent
+  = lens _plcnplParent (\ s a -> s{_plcnplParent = a})
+
+-- | V1 error format.
+plcnplXgafv :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Xgafv)
+plcnplXgafv
+  = lens _plcnplXgafv (\ s a -> s{_plcnplXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnplUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplUploadProtocol
+  = lens _plcnplUploadProtocol
+      (\ s a -> s{_plcnplUploadProtocol = a})
+
+-- | OAuth access token.
+plcnplAccessToken :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplAccessToken
+  = lens _plcnplAccessToken
+      (\ s a -> s{_plcnplAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnplUploadType :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplUploadType
+  = lens _plcnplUploadType
+      (\ s a -> s{_plcnplUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
+plcnplZone :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplZone
+  = lens _plcnplZone (\ s a -> s{_plcnplZone = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the parent field.
+plcnplClusterId :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplClusterId
+  = lens _plcnplClusterId
+      (\ s a -> s{_plcnplClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the parent field.
+plcnplProjectId :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplProjectId
+  = lens _plcnplProjectId
+      (\ s a -> s{_plcnplProjectId = a})
+
+-- | JSONP
+plcnplCallback :: Lens' ProjectsLocationsClustersNodePoolsList (Maybe Text)
+plcnplCallback
+  = lens _plcnplCallback
+      (\ s a -> s{_plcnplCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsList where
+        type Rs ProjectsLocationsClustersNodePoolsList =
+             ListNodePoolsResponse
+        type Scopes ProjectsLocationsClustersNodePoolsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsList'{..}
+          = go _plcnplParent _plcnplXgafv _plcnplUploadProtocol
+              _plcnplAccessToken
+              _plcnplUploadType
+              _plcnplZone
+              _plcnplClusterId
+              _plcnplProjectId
+              _plcnplCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersNodePoolsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Rollback.hs
@@ -0,0 +1,173 @@
+{-# 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.Locations.Clusters.NodePools.Rollback
+-- 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)
+--
+-- Roll back the previously Aborted or Failed NodePool upgrade. This will
+-- be an no-op if the last upgrade successfully completed.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.rollback@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Rollback
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsRollbackResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsRollback
+    , ProjectsLocationsClustersNodePoolsRollback
+
+    -- * Request Lenses
+    , plcnprXgafv
+    , plcnprUploadProtocol
+    , plcnprAccessToken
+    , plcnprUploadType
+    , plcnprPayload
+    , plcnprName
+    , plcnprCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.rollback@ method which the
+-- 'ProjectsLocationsClustersNodePoolsRollback' request conforms to.
+type ProjectsLocationsClustersNodePoolsRollbackResource
+     =
+     "v1" :>
+       CaptureMode "name" "rollback" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] RollbackNodePoolUpgradeRequest :>
+                       Post '[JSON] Operation
+
+-- | Roll back the previously Aborted or Failed NodePool upgrade. This will
+-- be an no-op if the last upgrade successfully completed.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsRollback' smart constructor.
+data ProjectsLocationsClustersNodePoolsRollback = ProjectsLocationsClustersNodePoolsRollback'
+    { _plcnprXgafv          :: !(Maybe Xgafv)
+    , _plcnprUploadProtocol :: !(Maybe Text)
+    , _plcnprAccessToken    :: !(Maybe Text)
+    , _plcnprUploadType     :: !(Maybe Text)
+    , _plcnprPayload        :: !RollbackNodePoolUpgradeRequest
+    , _plcnprName           :: !Text
+    , _plcnprCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsRollback' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnprXgafv'
+--
+-- * 'plcnprUploadProtocol'
+--
+-- * 'plcnprAccessToken'
+--
+-- * 'plcnprUploadType'
+--
+-- * 'plcnprPayload'
+--
+-- * 'plcnprName'
+--
+-- * 'plcnprCallback'
+projectsLocationsClustersNodePoolsRollback
+    :: RollbackNodePoolUpgradeRequest -- ^ 'plcnprPayload'
+    -> Text -- ^ 'plcnprName'
+    -> ProjectsLocationsClustersNodePoolsRollback
+projectsLocationsClustersNodePoolsRollback pPlcnprPayload_ pPlcnprName_ =
+    ProjectsLocationsClustersNodePoolsRollback'
+    { _plcnprXgafv = Nothing
+    , _plcnprUploadProtocol = Nothing
+    , _plcnprAccessToken = Nothing
+    , _plcnprUploadType = Nothing
+    , _plcnprPayload = pPlcnprPayload_
+    , _plcnprName = pPlcnprName_
+    , _plcnprCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnprXgafv :: Lens' ProjectsLocationsClustersNodePoolsRollback (Maybe Xgafv)
+plcnprXgafv
+  = lens _plcnprXgafv (\ s a -> s{_plcnprXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnprUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsRollback (Maybe Text)
+plcnprUploadProtocol
+  = lens _plcnprUploadProtocol
+      (\ s a -> s{_plcnprUploadProtocol = a})
+
+-- | OAuth access token.
+plcnprAccessToken :: Lens' ProjectsLocationsClustersNodePoolsRollback (Maybe Text)
+plcnprAccessToken
+  = lens _plcnprAccessToken
+      (\ s a -> s{_plcnprAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnprUploadType :: Lens' ProjectsLocationsClustersNodePoolsRollback (Maybe Text)
+plcnprUploadType
+  = lens _plcnprUploadType
+      (\ s a -> s{_plcnprUploadType = a})
+
+-- | Multipart request metadata.
+plcnprPayload :: Lens' ProjectsLocationsClustersNodePoolsRollback RollbackNodePoolUpgradeRequest
+plcnprPayload
+  = lens _plcnprPayload
+      (\ s a -> s{_plcnprPayload = a})
+
+-- | The name (project, location, cluster, node pool id) of the node poll to
+-- rollback upgrade. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnprName :: Lens' ProjectsLocationsClustersNodePoolsRollback Text
+plcnprName
+  = lens _plcnprName (\ s a -> s{_plcnprName = a})
+
+-- | JSONP
+plcnprCallback :: Lens' ProjectsLocationsClustersNodePoolsRollback (Maybe Text)
+plcnprCallback
+  = lens _plcnprCallback
+      (\ s a -> s{_plcnprCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsRollback where
+        type Rs ProjectsLocationsClustersNodePoolsRollback =
+             Operation
+        type Scopes
+               ProjectsLocationsClustersNodePoolsRollback
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsRollback'{..}
+          = go _plcnprName _plcnprXgafv _plcnprUploadProtocol
+              _plcnprAccessToken
+              _plcnprUploadType
+              _plcnprCallback
+              (Just AltJSON)
+              _plcnprPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsRollbackResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetAutoscaling.hs
@@ -0,0 +1,174 @@
+{-# 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.Locations.Clusters.NodePools.SetAutoscaling
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the autoscaling settings for a specific node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.setAutoscaling@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetAutoscaling
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsSetAutoscalingResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsSetAutoscaling
+    , ProjectsLocationsClustersNodePoolsSetAutoscaling
+
+    -- * Request Lenses
+    , plcnpsaXgafv
+    , plcnpsaUploadProtocol
+    , plcnpsaAccessToken
+    , plcnpsaUploadType
+    , plcnpsaPayload
+    , plcnpsaName
+    , plcnpsaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.setAutoscaling@ method which the
+-- 'ProjectsLocationsClustersNodePoolsSetAutoscaling' request conforms to.
+type ProjectsLocationsClustersNodePoolsSetAutoscalingResource
+     =
+     "v1" :>
+       CaptureMode "name" "setAutoscaling" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetNodePoolAutoscalingRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the autoscaling settings for a specific node pool.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsSetAutoscaling' smart constructor.
+data ProjectsLocationsClustersNodePoolsSetAutoscaling = ProjectsLocationsClustersNodePoolsSetAutoscaling'
+    { _plcnpsaXgafv          :: !(Maybe Xgafv)
+    , _plcnpsaUploadProtocol :: !(Maybe Text)
+    , _plcnpsaAccessToken    :: !(Maybe Text)
+    , _plcnpsaUploadType     :: !(Maybe Text)
+    , _plcnpsaPayload        :: !SetNodePoolAutoscalingRequest
+    , _plcnpsaName           :: !Text
+    , _plcnpsaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsSetAutoscaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpsaXgafv'
+--
+-- * 'plcnpsaUploadProtocol'
+--
+-- * 'plcnpsaAccessToken'
+--
+-- * 'plcnpsaUploadType'
+--
+-- * 'plcnpsaPayload'
+--
+-- * 'plcnpsaName'
+--
+-- * 'plcnpsaCallback'
+projectsLocationsClustersNodePoolsSetAutoscaling
+    :: SetNodePoolAutoscalingRequest -- ^ 'plcnpsaPayload'
+    -> Text -- ^ 'plcnpsaName'
+    -> ProjectsLocationsClustersNodePoolsSetAutoscaling
+projectsLocationsClustersNodePoolsSetAutoscaling pPlcnpsaPayload_ pPlcnpsaName_ =
+    ProjectsLocationsClustersNodePoolsSetAutoscaling'
+    { _plcnpsaXgafv = Nothing
+    , _plcnpsaUploadProtocol = Nothing
+    , _plcnpsaAccessToken = Nothing
+    , _plcnpsaUploadType = Nothing
+    , _plcnpsaPayload = pPlcnpsaPayload_
+    , _plcnpsaName = pPlcnpsaName_
+    , _plcnpsaCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnpsaXgafv :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling (Maybe Xgafv)
+plcnpsaXgafv
+  = lens _plcnpsaXgafv (\ s a -> s{_plcnpsaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpsaUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling (Maybe Text)
+plcnpsaUploadProtocol
+  = lens _plcnpsaUploadProtocol
+      (\ s a -> s{_plcnpsaUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpsaAccessToken :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling (Maybe Text)
+plcnpsaAccessToken
+  = lens _plcnpsaAccessToken
+      (\ s a -> s{_plcnpsaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpsaUploadType :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling (Maybe Text)
+plcnpsaUploadType
+  = lens _plcnpsaUploadType
+      (\ s a -> s{_plcnpsaUploadType = a})
+
+-- | Multipart request metadata.
+plcnpsaPayload :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling SetNodePoolAutoscalingRequest
+plcnpsaPayload
+  = lens _plcnpsaPayload
+      (\ s a -> s{_plcnpsaPayload = a})
+
+-- | The name (project, location, cluster, node pool) of the node pool to set
+-- autoscaler settings. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnpsaName :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling Text
+plcnpsaName
+  = lens _plcnpsaName (\ s a -> s{_plcnpsaName = a})
+
+-- | JSONP
+plcnpsaCallback :: Lens' ProjectsLocationsClustersNodePoolsSetAutoscaling (Maybe Text)
+plcnpsaCallback
+  = lens _plcnpsaCallback
+      (\ s a -> s{_plcnpsaCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsSetAutoscaling
+         where
+        type Rs
+               ProjectsLocationsClustersNodePoolsSetAutoscaling
+             = Operation
+        type Scopes
+               ProjectsLocationsClustersNodePoolsSetAutoscaling
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsSetAutoscaling'{..}
+          = go _plcnpsaName _plcnpsaXgafv
+              _plcnpsaUploadProtocol
+              _plcnpsaAccessToken
+              _plcnpsaUploadType
+              _plcnpsaCallback
+              (Just AltJSON)
+              _plcnpsaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsSetAutoscalingResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetManagement.hs
@@ -0,0 +1,173 @@
+{-# 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.Locations.Clusters.NodePools.SetManagement
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the NodeManagement options for a node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.setManagement@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetManagement
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsSetManagementResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsSetManagement
+    , ProjectsLocationsClustersNodePoolsSetManagement
+
+    -- * Request Lenses
+    , plcnpsmXgafv
+    , plcnpsmUploadProtocol
+    , plcnpsmAccessToken
+    , plcnpsmUploadType
+    , plcnpsmPayload
+    , plcnpsmName
+    , plcnpsmCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.setManagement@ method which the
+-- 'ProjectsLocationsClustersNodePoolsSetManagement' request conforms to.
+type ProjectsLocationsClustersNodePoolsSetManagementResource
+     =
+     "v1" :>
+       CaptureMode "name" "setManagement" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetNodePoolManagementRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the NodeManagement options for a node pool.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsSetManagement' smart constructor.
+data ProjectsLocationsClustersNodePoolsSetManagement = ProjectsLocationsClustersNodePoolsSetManagement'
+    { _plcnpsmXgafv          :: !(Maybe Xgafv)
+    , _plcnpsmUploadProtocol :: !(Maybe Text)
+    , _plcnpsmAccessToken    :: !(Maybe Text)
+    , _plcnpsmUploadType     :: !(Maybe Text)
+    , _plcnpsmPayload        :: !SetNodePoolManagementRequest
+    , _plcnpsmName           :: !Text
+    , _plcnpsmCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsSetManagement' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpsmXgafv'
+--
+-- * 'plcnpsmUploadProtocol'
+--
+-- * 'plcnpsmAccessToken'
+--
+-- * 'plcnpsmUploadType'
+--
+-- * 'plcnpsmPayload'
+--
+-- * 'plcnpsmName'
+--
+-- * 'plcnpsmCallback'
+projectsLocationsClustersNodePoolsSetManagement
+    :: SetNodePoolManagementRequest -- ^ 'plcnpsmPayload'
+    -> Text -- ^ 'plcnpsmName'
+    -> ProjectsLocationsClustersNodePoolsSetManagement
+projectsLocationsClustersNodePoolsSetManagement pPlcnpsmPayload_ pPlcnpsmName_ =
+    ProjectsLocationsClustersNodePoolsSetManagement'
+    { _plcnpsmXgafv = Nothing
+    , _plcnpsmUploadProtocol = Nothing
+    , _plcnpsmAccessToken = Nothing
+    , _plcnpsmUploadType = Nothing
+    , _plcnpsmPayload = pPlcnpsmPayload_
+    , _plcnpsmName = pPlcnpsmName_
+    , _plcnpsmCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnpsmXgafv :: Lens' ProjectsLocationsClustersNodePoolsSetManagement (Maybe Xgafv)
+plcnpsmXgafv
+  = lens _plcnpsmXgafv (\ s a -> s{_plcnpsmXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpsmUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsSetManagement (Maybe Text)
+plcnpsmUploadProtocol
+  = lens _plcnpsmUploadProtocol
+      (\ s a -> s{_plcnpsmUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpsmAccessToken :: Lens' ProjectsLocationsClustersNodePoolsSetManagement (Maybe Text)
+plcnpsmAccessToken
+  = lens _plcnpsmAccessToken
+      (\ s a -> s{_plcnpsmAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpsmUploadType :: Lens' ProjectsLocationsClustersNodePoolsSetManagement (Maybe Text)
+plcnpsmUploadType
+  = lens _plcnpsmUploadType
+      (\ s a -> s{_plcnpsmUploadType = a})
+
+-- | Multipart request metadata.
+plcnpsmPayload :: Lens' ProjectsLocationsClustersNodePoolsSetManagement SetNodePoolManagementRequest
+plcnpsmPayload
+  = lens _plcnpsmPayload
+      (\ s a -> s{_plcnpsmPayload = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- set management properties. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnpsmName :: Lens' ProjectsLocationsClustersNodePoolsSetManagement Text
+plcnpsmName
+  = lens _plcnpsmName (\ s a -> s{_plcnpsmName = a})
+
+-- | JSONP
+plcnpsmCallback :: Lens' ProjectsLocationsClustersNodePoolsSetManagement (Maybe Text)
+plcnpsmCallback
+  = lens _plcnpsmCallback
+      (\ s a -> s{_plcnpsmCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsSetManagement where
+        type Rs
+               ProjectsLocationsClustersNodePoolsSetManagement
+             = Operation
+        type Scopes
+               ProjectsLocationsClustersNodePoolsSetManagement
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsSetManagement'{..}
+          = go _plcnpsmName _plcnpsmXgafv
+              _plcnpsmUploadProtocol
+              _plcnpsmAccessToken
+              _plcnpsmUploadType
+              _plcnpsmCallback
+              (Just AltJSON)
+              _plcnpsmPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsSetManagementResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/SetSize.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetSize
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the size for a specific node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.setSize@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetSize
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsSetSizeResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsSetSize
+    , ProjectsLocationsClustersNodePoolsSetSize
+
+    -- * Request Lenses
+    , plcnpssXgafv
+    , plcnpssUploadProtocol
+    , plcnpssAccessToken
+    , plcnpssUploadType
+    , plcnpssPayload
+    , plcnpssName
+    , plcnpssCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.setSize@ method which the
+-- 'ProjectsLocationsClustersNodePoolsSetSize' request conforms to.
+type ProjectsLocationsClustersNodePoolsSetSizeResource
+     =
+     "v1" :>
+       CaptureMode "name" "setSize" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetNodePoolSizeRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the size for a specific node pool.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsSetSize' smart constructor.
+data ProjectsLocationsClustersNodePoolsSetSize = ProjectsLocationsClustersNodePoolsSetSize'
+    { _plcnpssXgafv          :: !(Maybe Xgafv)
+    , _plcnpssUploadProtocol :: !(Maybe Text)
+    , _plcnpssAccessToken    :: !(Maybe Text)
+    , _plcnpssUploadType     :: !(Maybe Text)
+    , _plcnpssPayload        :: !SetNodePoolSizeRequest
+    , _plcnpssName           :: !Text
+    , _plcnpssCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsSetSize' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpssXgafv'
+--
+-- * 'plcnpssUploadProtocol'
+--
+-- * 'plcnpssAccessToken'
+--
+-- * 'plcnpssUploadType'
+--
+-- * 'plcnpssPayload'
+--
+-- * 'plcnpssName'
+--
+-- * 'plcnpssCallback'
+projectsLocationsClustersNodePoolsSetSize
+    :: SetNodePoolSizeRequest -- ^ 'plcnpssPayload'
+    -> Text -- ^ 'plcnpssName'
+    -> ProjectsLocationsClustersNodePoolsSetSize
+projectsLocationsClustersNodePoolsSetSize pPlcnpssPayload_ pPlcnpssName_ =
+    ProjectsLocationsClustersNodePoolsSetSize'
+    { _plcnpssXgafv = Nothing
+    , _plcnpssUploadProtocol = Nothing
+    , _plcnpssAccessToken = Nothing
+    , _plcnpssUploadType = Nothing
+    , _plcnpssPayload = pPlcnpssPayload_
+    , _plcnpssName = pPlcnpssName_
+    , _plcnpssCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnpssXgafv :: Lens' ProjectsLocationsClustersNodePoolsSetSize (Maybe Xgafv)
+plcnpssXgafv
+  = lens _plcnpssXgafv (\ s a -> s{_plcnpssXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpssUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsSetSize (Maybe Text)
+plcnpssUploadProtocol
+  = lens _plcnpssUploadProtocol
+      (\ s a -> s{_plcnpssUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpssAccessToken :: Lens' ProjectsLocationsClustersNodePoolsSetSize (Maybe Text)
+plcnpssAccessToken
+  = lens _plcnpssAccessToken
+      (\ s a -> s{_plcnpssAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpssUploadType :: Lens' ProjectsLocationsClustersNodePoolsSetSize (Maybe Text)
+plcnpssUploadType
+  = lens _plcnpssUploadType
+      (\ s a -> s{_plcnpssUploadType = a})
+
+-- | Multipart request metadata.
+plcnpssPayload :: Lens' ProjectsLocationsClustersNodePoolsSetSize SetNodePoolSizeRequest
+plcnpssPayload
+  = lens _plcnpssPayload
+      (\ s a -> s{_plcnpssPayload = a})
+
+-- | The name (project, location, cluster, node pool id) of the node pool to
+-- set size. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnpssName :: Lens' ProjectsLocationsClustersNodePoolsSetSize Text
+plcnpssName
+  = lens _plcnpssName (\ s a -> s{_plcnpssName = a})
+
+-- | JSONP
+plcnpssCallback :: Lens' ProjectsLocationsClustersNodePoolsSetSize (Maybe Text)
+plcnpssCallback
+  = lens _plcnpssCallback
+      (\ s a -> s{_plcnpssCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsSetSize where
+        type Rs ProjectsLocationsClustersNodePoolsSetSize =
+             Operation
+        type Scopes ProjectsLocationsClustersNodePoolsSetSize
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsSetSize'{..}
+          = go _plcnpssName _plcnpssXgafv
+              _plcnpssUploadProtocol
+              _plcnpssAccessToken
+              _plcnpssUploadType
+              _plcnpssCallback
+              (Just AltJSON)
+              _plcnpssPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsSetSizeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/NodePools/Update.hs
@@ -0,0 +1,170 @@
+{-# 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.Locations.Clusters.NodePools.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the version and\/or image type for a specific node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.nodePools.update@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Update
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersNodePoolsUpdateResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersNodePoolsUpdate
+    , ProjectsLocationsClustersNodePoolsUpdate
+
+    -- * Request Lenses
+    , plcnpuXgafv
+    , plcnpuUploadProtocol
+    , plcnpuAccessToken
+    , plcnpuUploadType
+    , plcnpuPayload
+    , plcnpuName
+    , plcnpuCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.nodePools.update@ method which the
+-- 'ProjectsLocationsClustersNodePoolsUpdate' request conforms to.
+type ProjectsLocationsClustersNodePoolsUpdateResource
+     =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] UpdateNodePoolRequest :>
+                       Put '[JSON] Operation
+
+-- | Updates the version and\/or image type for a specific node pool.
+--
+-- /See:/ 'projectsLocationsClustersNodePoolsUpdate' smart constructor.
+data ProjectsLocationsClustersNodePoolsUpdate = ProjectsLocationsClustersNodePoolsUpdate'
+    { _plcnpuXgafv          :: !(Maybe Xgafv)
+    , _plcnpuUploadProtocol :: !(Maybe Text)
+    , _plcnpuAccessToken    :: !(Maybe Text)
+    , _plcnpuUploadType     :: !(Maybe Text)
+    , _plcnpuPayload        :: !UpdateNodePoolRequest
+    , _plcnpuName           :: !Text
+    , _plcnpuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersNodePoolsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcnpuXgafv'
+--
+-- * 'plcnpuUploadProtocol'
+--
+-- * 'plcnpuAccessToken'
+--
+-- * 'plcnpuUploadType'
+--
+-- * 'plcnpuPayload'
+--
+-- * 'plcnpuName'
+--
+-- * 'plcnpuCallback'
+projectsLocationsClustersNodePoolsUpdate
+    :: UpdateNodePoolRequest -- ^ 'plcnpuPayload'
+    -> Text -- ^ 'plcnpuName'
+    -> ProjectsLocationsClustersNodePoolsUpdate
+projectsLocationsClustersNodePoolsUpdate pPlcnpuPayload_ pPlcnpuName_ =
+    ProjectsLocationsClustersNodePoolsUpdate'
+    { _plcnpuXgafv = Nothing
+    , _plcnpuUploadProtocol = Nothing
+    , _plcnpuAccessToken = Nothing
+    , _plcnpuUploadType = Nothing
+    , _plcnpuPayload = pPlcnpuPayload_
+    , _plcnpuName = pPlcnpuName_
+    , _plcnpuCallback = Nothing
+    }
+
+-- | V1 error format.
+plcnpuXgafv :: Lens' ProjectsLocationsClustersNodePoolsUpdate (Maybe Xgafv)
+plcnpuXgafv
+  = lens _plcnpuXgafv (\ s a -> s{_plcnpuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcnpuUploadProtocol :: Lens' ProjectsLocationsClustersNodePoolsUpdate (Maybe Text)
+plcnpuUploadProtocol
+  = lens _plcnpuUploadProtocol
+      (\ s a -> s{_plcnpuUploadProtocol = a})
+
+-- | OAuth access token.
+plcnpuAccessToken :: Lens' ProjectsLocationsClustersNodePoolsUpdate (Maybe Text)
+plcnpuAccessToken
+  = lens _plcnpuAccessToken
+      (\ s a -> s{_plcnpuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcnpuUploadType :: Lens' ProjectsLocationsClustersNodePoolsUpdate (Maybe Text)
+plcnpuUploadType
+  = lens _plcnpuUploadType
+      (\ s a -> s{_plcnpuUploadType = a})
+
+-- | Multipart request metadata.
+plcnpuPayload :: Lens' ProjectsLocationsClustersNodePoolsUpdate UpdateNodePoolRequest
+plcnpuPayload
+  = lens _plcnpuPayload
+      (\ s a -> s{_plcnpuPayload = a})
+
+-- | The name (project, location, cluster, node pool) of the node pool to
+-- update. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+plcnpuName :: Lens' ProjectsLocationsClustersNodePoolsUpdate Text
+plcnpuName
+  = lens _plcnpuName (\ s a -> s{_plcnpuName = a})
+
+-- | JSONP
+plcnpuCallback :: Lens' ProjectsLocationsClustersNodePoolsUpdate (Maybe Text)
+plcnpuCallback
+  = lens _plcnpuCallback
+      (\ s a -> s{_plcnpuCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersNodePoolsUpdate where
+        type Rs ProjectsLocationsClustersNodePoolsUpdate =
+             Operation
+        type Scopes ProjectsLocationsClustersNodePoolsUpdate
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersNodePoolsUpdate'{..}
+          = go _plcnpuName _plcnpuXgafv _plcnpuUploadProtocol
+              _plcnpuAccessToken
+              _plcnpuUploadType
+              _plcnpuCallback
+              (Just AltJSON)
+              _plcnpuPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersNodePoolsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetAddons.hs
@@ -0,0 +1,165 @@
+{-# 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.Locations.Clusters.SetAddons
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the addons for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setAddons@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetAddons
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetAddonsResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetAddons
+    , ProjectsLocationsClustersSetAddons
+
+    -- * Request Lenses
+    , plcsaXgafv
+    , plcsaUploadProtocol
+    , plcsaAccessToken
+    , plcsaUploadType
+    , plcsaPayload
+    , plcsaName
+    , plcsaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setAddons@ method which the
+-- 'ProjectsLocationsClustersSetAddons' request conforms to.
+type ProjectsLocationsClustersSetAddonsResource =
+     "v1" :>
+       CaptureMode "name" "setAddons" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetAddonsConfigRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the addons for a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetAddons' smart constructor.
+data ProjectsLocationsClustersSetAddons = ProjectsLocationsClustersSetAddons'
+    { _plcsaXgafv          :: !(Maybe Xgafv)
+    , _plcsaUploadProtocol :: !(Maybe Text)
+    , _plcsaAccessToken    :: !(Maybe Text)
+    , _plcsaUploadType     :: !(Maybe Text)
+    , _plcsaPayload        :: !SetAddonsConfigRequest
+    , _plcsaName           :: !Text
+    , _plcsaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetAddons' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsaXgafv'
+--
+-- * 'plcsaUploadProtocol'
+--
+-- * 'plcsaAccessToken'
+--
+-- * 'plcsaUploadType'
+--
+-- * 'plcsaPayload'
+--
+-- * 'plcsaName'
+--
+-- * 'plcsaCallback'
+projectsLocationsClustersSetAddons
+    :: SetAddonsConfigRequest -- ^ 'plcsaPayload'
+    -> Text -- ^ 'plcsaName'
+    -> ProjectsLocationsClustersSetAddons
+projectsLocationsClustersSetAddons pPlcsaPayload_ pPlcsaName_ =
+    ProjectsLocationsClustersSetAddons'
+    { _plcsaXgafv = Nothing
+    , _plcsaUploadProtocol = Nothing
+    , _plcsaAccessToken = Nothing
+    , _plcsaUploadType = Nothing
+    , _plcsaPayload = pPlcsaPayload_
+    , _plcsaName = pPlcsaName_
+    , _plcsaCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsaXgafv :: Lens' ProjectsLocationsClustersSetAddons (Maybe Xgafv)
+plcsaXgafv
+  = lens _plcsaXgafv (\ s a -> s{_plcsaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsaUploadProtocol :: Lens' ProjectsLocationsClustersSetAddons (Maybe Text)
+plcsaUploadProtocol
+  = lens _plcsaUploadProtocol
+      (\ s a -> s{_plcsaUploadProtocol = a})
+
+-- | OAuth access token.
+plcsaAccessToken :: Lens' ProjectsLocationsClustersSetAddons (Maybe Text)
+plcsaAccessToken
+  = lens _plcsaAccessToken
+      (\ s a -> s{_plcsaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsaUploadType :: Lens' ProjectsLocationsClustersSetAddons (Maybe Text)
+plcsaUploadType
+  = lens _plcsaUploadType
+      (\ s a -> s{_plcsaUploadType = a})
+
+-- | Multipart request metadata.
+plcsaPayload :: Lens' ProjectsLocationsClustersSetAddons SetAddonsConfigRequest
+plcsaPayload
+  = lens _plcsaPayload (\ s a -> s{_plcsaPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to set addons.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsaName :: Lens' ProjectsLocationsClustersSetAddons Text
+plcsaName
+  = lens _plcsaName (\ s a -> s{_plcsaName = a})
+
+-- | JSONP
+plcsaCallback :: Lens' ProjectsLocationsClustersSetAddons (Maybe Text)
+plcsaCallback
+  = lens _plcsaCallback
+      (\ s a -> s{_plcsaCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetAddons where
+        type Rs ProjectsLocationsClustersSetAddons =
+             Operation
+        type Scopes ProjectsLocationsClustersSetAddons =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersSetAddons'{..}
+          = go _plcsaName _plcsaXgafv _plcsaUploadProtocol
+              _plcsaAccessToken
+              _plcsaUploadType
+              _plcsaCallback
+              (Just AltJSON)
+              _plcsaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersSetAddonsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLegacyAbac.hs
@@ -0,0 +1,168 @@
+{-# 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.Locations.Clusters.SetLegacyAbac
+-- 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)
+--
+-- Enables or disables the ABAC authorization mechanism on a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setLegacyAbac@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetLegacyAbac
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetLegacyAbacResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetLegacyAbac
+    , ProjectsLocationsClustersSetLegacyAbac
+
+    -- * Request Lenses
+    , plcslaXgafv
+    , plcslaUploadProtocol
+    , plcslaAccessToken
+    , plcslaUploadType
+    , plcslaPayload
+    , plcslaName
+    , plcslaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setLegacyAbac@ method which the
+-- 'ProjectsLocationsClustersSetLegacyAbac' request conforms to.
+type ProjectsLocationsClustersSetLegacyAbacResource =
+     "v1" :>
+       CaptureMode "name" "setLegacyAbac" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetLegacyAbacRequest :>
+                       Post '[JSON] Operation
+
+-- | Enables or disables the ABAC authorization mechanism on a cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetLegacyAbac' smart constructor.
+data ProjectsLocationsClustersSetLegacyAbac = ProjectsLocationsClustersSetLegacyAbac'
+    { _plcslaXgafv          :: !(Maybe Xgafv)
+    , _plcslaUploadProtocol :: !(Maybe Text)
+    , _plcslaAccessToken    :: !(Maybe Text)
+    , _plcslaUploadType     :: !(Maybe Text)
+    , _plcslaPayload        :: !SetLegacyAbacRequest
+    , _plcslaName           :: !Text
+    , _plcslaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetLegacyAbac' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcslaXgafv'
+--
+-- * 'plcslaUploadProtocol'
+--
+-- * 'plcslaAccessToken'
+--
+-- * 'plcslaUploadType'
+--
+-- * 'plcslaPayload'
+--
+-- * 'plcslaName'
+--
+-- * 'plcslaCallback'
+projectsLocationsClustersSetLegacyAbac
+    :: SetLegacyAbacRequest -- ^ 'plcslaPayload'
+    -> Text -- ^ 'plcslaName'
+    -> ProjectsLocationsClustersSetLegacyAbac
+projectsLocationsClustersSetLegacyAbac pPlcslaPayload_ pPlcslaName_ =
+    ProjectsLocationsClustersSetLegacyAbac'
+    { _plcslaXgafv = Nothing
+    , _plcslaUploadProtocol = Nothing
+    , _plcslaAccessToken = Nothing
+    , _plcslaUploadType = Nothing
+    , _plcslaPayload = pPlcslaPayload_
+    , _plcslaName = pPlcslaName_
+    , _plcslaCallback = Nothing
+    }
+
+-- | V1 error format.
+plcslaXgafv :: Lens' ProjectsLocationsClustersSetLegacyAbac (Maybe Xgafv)
+plcslaXgafv
+  = lens _plcslaXgafv (\ s a -> s{_plcslaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcslaUploadProtocol :: Lens' ProjectsLocationsClustersSetLegacyAbac (Maybe Text)
+plcslaUploadProtocol
+  = lens _plcslaUploadProtocol
+      (\ s a -> s{_plcslaUploadProtocol = a})
+
+-- | OAuth access token.
+plcslaAccessToken :: Lens' ProjectsLocationsClustersSetLegacyAbac (Maybe Text)
+plcslaAccessToken
+  = lens _plcslaAccessToken
+      (\ s a -> s{_plcslaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcslaUploadType :: Lens' ProjectsLocationsClustersSetLegacyAbac (Maybe Text)
+plcslaUploadType
+  = lens _plcslaUploadType
+      (\ s a -> s{_plcslaUploadType = a})
+
+-- | Multipart request metadata.
+plcslaPayload :: Lens' ProjectsLocationsClustersSetLegacyAbac SetLegacyAbacRequest
+plcslaPayload
+  = lens _plcslaPayload
+      (\ s a -> s{_plcslaPayload = a})
+
+-- | The name (project, location, cluster id) of the cluster to set legacy
+-- abac. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcslaName :: Lens' ProjectsLocationsClustersSetLegacyAbac Text
+plcslaName
+  = lens _plcslaName (\ s a -> s{_plcslaName = a})
+
+-- | JSONP
+plcslaCallback :: Lens' ProjectsLocationsClustersSetLegacyAbac (Maybe Text)
+plcslaCallback
+  = lens _plcslaCallback
+      (\ s a -> s{_plcslaCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetLegacyAbac where
+        type Rs ProjectsLocationsClustersSetLegacyAbac =
+             Operation
+        type Scopes ProjectsLocationsClustersSetLegacyAbac =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetLegacyAbac'{..}
+          = go _plcslaName _plcslaXgafv _plcslaUploadProtocol
+              _plcslaAccessToken
+              _plcslaUploadType
+              _plcslaCallback
+              (Just AltJSON)
+              _plcslaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersSetLegacyAbacResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLocations.hs
@@ -0,0 +1,167 @@
+{-# 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.Locations.Clusters.SetLocations
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the locations for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setLocations@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetLocations
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetLocationsResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetLocations
+    , ProjectsLocationsClustersSetLocations
+
+    -- * Request Lenses
+    , plcslsXgafv
+    , plcslsUploadProtocol
+    , plcslsAccessToken
+    , plcslsUploadType
+    , plcslsPayload
+    , plcslsName
+    , plcslsCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setLocations@ method which the
+-- 'ProjectsLocationsClustersSetLocations' request conforms to.
+type ProjectsLocationsClustersSetLocationsResource =
+     "v1" :>
+       CaptureMode "name" "setLocations" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetLocationsRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the locations for a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetLocations' smart constructor.
+data ProjectsLocationsClustersSetLocations = ProjectsLocationsClustersSetLocations'
+    { _plcslsXgafv          :: !(Maybe Xgafv)
+    , _plcslsUploadProtocol :: !(Maybe Text)
+    , _plcslsAccessToken    :: !(Maybe Text)
+    , _plcslsUploadType     :: !(Maybe Text)
+    , _plcslsPayload        :: !SetLocationsRequest
+    , _plcslsName           :: !Text
+    , _plcslsCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetLocations' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcslsXgafv'
+--
+-- * 'plcslsUploadProtocol'
+--
+-- * 'plcslsAccessToken'
+--
+-- * 'plcslsUploadType'
+--
+-- * 'plcslsPayload'
+--
+-- * 'plcslsName'
+--
+-- * 'plcslsCallback'
+projectsLocationsClustersSetLocations
+    :: SetLocationsRequest -- ^ 'plcslsPayload'
+    -> Text -- ^ 'plcslsName'
+    -> ProjectsLocationsClustersSetLocations
+projectsLocationsClustersSetLocations pPlcslsPayload_ pPlcslsName_ =
+    ProjectsLocationsClustersSetLocations'
+    { _plcslsXgafv = Nothing
+    , _plcslsUploadProtocol = Nothing
+    , _plcslsAccessToken = Nothing
+    , _plcslsUploadType = Nothing
+    , _plcslsPayload = pPlcslsPayload_
+    , _plcslsName = pPlcslsName_
+    , _plcslsCallback = Nothing
+    }
+
+-- | V1 error format.
+plcslsXgafv :: Lens' ProjectsLocationsClustersSetLocations (Maybe Xgafv)
+plcslsXgafv
+  = lens _plcslsXgafv (\ s a -> s{_plcslsXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcslsUploadProtocol :: Lens' ProjectsLocationsClustersSetLocations (Maybe Text)
+plcslsUploadProtocol
+  = lens _plcslsUploadProtocol
+      (\ s a -> s{_plcslsUploadProtocol = a})
+
+-- | OAuth access token.
+plcslsAccessToken :: Lens' ProjectsLocationsClustersSetLocations (Maybe Text)
+plcslsAccessToken
+  = lens _plcslsAccessToken
+      (\ s a -> s{_plcslsAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcslsUploadType :: Lens' ProjectsLocationsClustersSetLocations (Maybe Text)
+plcslsUploadType
+  = lens _plcslsUploadType
+      (\ s a -> s{_plcslsUploadType = a})
+
+-- | Multipart request metadata.
+plcslsPayload :: Lens' ProjectsLocationsClustersSetLocations SetLocationsRequest
+plcslsPayload
+  = lens _plcslsPayload
+      (\ s a -> s{_plcslsPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to set locations.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcslsName :: Lens' ProjectsLocationsClustersSetLocations Text
+plcslsName
+  = lens _plcslsName (\ s a -> s{_plcslsName = a})
+
+-- | JSONP
+plcslsCallback :: Lens' ProjectsLocationsClustersSetLocations (Maybe Text)
+plcslsCallback
+  = lens _plcslsCallback
+      (\ s a -> s{_plcslsCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetLocations where
+        type Rs ProjectsLocationsClustersSetLocations =
+             Operation
+        type Scopes ProjectsLocationsClustersSetLocations =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetLocations'{..}
+          = go _plcslsName _plcslsXgafv _plcslsUploadProtocol
+              _plcslsAccessToken
+              _plcslsUploadType
+              _plcslsCallback
+              (Just AltJSON)
+              _plcslsPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersSetLocationsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetLogging.hs
@@ -0,0 +1,166 @@
+{-# 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.Locations.Clusters.SetLogging
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the logging service for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setLogging@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetLogging
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetLoggingResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetLogging
+    , ProjectsLocationsClustersSetLogging
+
+    -- * Request Lenses
+    , plcslXgafv
+    , plcslUploadProtocol
+    , plcslAccessToken
+    , plcslUploadType
+    , plcslPayload
+    , plcslName
+    , plcslCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setLogging@ method which the
+-- 'ProjectsLocationsClustersSetLogging' request conforms to.
+type ProjectsLocationsClustersSetLoggingResource =
+     "v1" :>
+       CaptureMode "name" "setLogging" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetLoggingServiceRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the logging service for a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetLogging' smart constructor.
+data ProjectsLocationsClustersSetLogging = ProjectsLocationsClustersSetLogging'
+    { _plcslXgafv          :: !(Maybe Xgafv)
+    , _plcslUploadProtocol :: !(Maybe Text)
+    , _plcslAccessToken    :: !(Maybe Text)
+    , _plcslUploadType     :: !(Maybe Text)
+    , _plcslPayload        :: !SetLoggingServiceRequest
+    , _plcslName           :: !Text
+    , _plcslCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetLogging' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcslXgafv'
+--
+-- * 'plcslUploadProtocol'
+--
+-- * 'plcslAccessToken'
+--
+-- * 'plcslUploadType'
+--
+-- * 'plcslPayload'
+--
+-- * 'plcslName'
+--
+-- * 'plcslCallback'
+projectsLocationsClustersSetLogging
+    :: SetLoggingServiceRequest -- ^ 'plcslPayload'
+    -> Text -- ^ 'plcslName'
+    -> ProjectsLocationsClustersSetLogging
+projectsLocationsClustersSetLogging pPlcslPayload_ pPlcslName_ =
+    ProjectsLocationsClustersSetLogging'
+    { _plcslXgafv = Nothing
+    , _plcslUploadProtocol = Nothing
+    , _plcslAccessToken = Nothing
+    , _plcslUploadType = Nothing
+    , _plcslPayload = pPlcslPayload_
+    , _plcslName = pPlcslName_
+    , _plcslCallback = Nothing
+    }
+
+-- | V1 error format.
+plcslXgafv :: Lens' ProjectsLocationsClustersSetLogging (Maybe Xgafv)
+plcslXgafv
+  = lens _plcslXgafv (\ s a -> s{_plcslXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcslUploadProtocol :: Lens' ProjectsLocationsClustersSetLogging (Maybe Text)
+plcslUploadProtocol
+  = lens _plcslUploadProtocol
+      (\ s a -> s{_plcslUploadProtocol = a})
+
+-- | OAuth access token.
+plcslAccessToken :: Lens' ProjectsLocationsClustersSetLogging (Maybe Text)
+plcslAccessToken
+  = lens _plcslAccessToken
+      (\ s a -> s{_plcslAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcslUploadType :: Lens' ProjectsLocationsClustersSetLogging (Maybe Text)
+plcslUploadType
+  = lens _plcslUploadType
+      (\ s a -> s{_plcslUploadType = a})
+
+-- | Multipart request metadata.
+plcslPayload :: Lens' ProjectsLocationsClustersSetLogging SetLoggingServiceRequest
+plcslPayload
+  = lens _plcslPayload (\ s a -> s{_plcslPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to set logging.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcslName :: Lens' ProjectsLocationsClustersSetLogging Text
+plcslName
+  = lens _plcslName (\ s a -> s{_plcslName = a})
+
+-- | JSONP
+plcslCallback :: Lens' ProjectsLocationsClustersSetLogging (Maybe Text)
+plcslCallback
+  = lens _plcslCallback
+      (\ s a -> s{_plcslCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetLogging where
+        type Rs ProjectsLocationsClustersSetLogging =
+             Operation
+        type Scopes ProjectsLocationsClustersSetLogging =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetLogging'{..}
+          = go _plcslName _plcslXgafv _plcslUploadProtocol
+              _plcslAccessToken
+              _plcslUploadType
+              _plcslCallback
+              (Just AltJSON)
+              _plcslPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersSetLoggingResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMaintenancePolicy.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Clusters.SetMaintenancePolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the maintenance policy for a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setMaintenancePolicy@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMaintenancePolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetMaintenancePolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetMaintenancePolicy
+    , ProjectsLocationsClustersSetMaintenancePolicy
+
+    -- * Request Lenses
+    , plcsmpXgafv
+    , plcsmpUploadProtocol
+    , plcsmpAccessToken
+    , plcsmpUploadType
+    , plcsmpPayload
+    , plcsmpName
+    , plcsmpCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setMaintenancePolicy@ method which the
+-- 'ProjectsLocationsClustersSetMaintenancePolicy' request conforms to.
+type ProjectsLocationsClustersSetMaintenancePolicyResource
+     =
+     "v1" :>
+       CaptureMode "name" "setMaintenancePolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetMaintenancePolicyRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the maintenance policy for a cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetMaintenancePolicy' smart constructor.
+data ProjectsLocationsClustersSetMaintenancePolicy = ProjectsLocationsClustersSetMaintenancePolicy'
+    { _plcsmpXgafv          :: !(Maybe Xgafv)
+    , _plcsmpUploadProtocol :: !(Maybe Text)
+    , _plcsmpAccessToken    :: !(Maybe Text)
+    , _plcsmpUploadType     :: !(Maybe Text)
+    , _plcsmpPayload        :: !SetMaintenancePolicyRequest
+    , _plcsmpName           :: !Text
+    , _plcsmpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetMaintenancePolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsmpXgafv'
+--
+-- * 'plcsmpUploadProtocol'
+--
+-- * 'plcsmpAccessToken'
+--
+-- * 'plcsmpUploadType'
+--
+-- * 'plcsmpPayload'
+--
+-- * 'plcsmpName'
+--
+-- * 'plcsmpCallback'
+projectsLocationsClustersSetMaintenancePolicy
+    :: SetMaintenancePolicyRequest -- ^ 'plcsmpPayload'
+    -> Text -- ^ 'plcsmpName'
+    -> ProjectsLocationsClustersSetMaintenancePolicy
+projectsLocationsClustersSetMaintenancePolicy pPlcsmpPayload_ pPlcsmpName_ =
+    ProjectsLocationsClustersSetMaintenancePolicy'
+    { _plcsmpXgafv = Nothing
+    , _plcsmpUploadProtocol = Nothing
+    , _plcsmpAccessToken = Nothing
+    , _plcsmpUploadType = Nothing
+    , _plcsmpPayload = pPlcsmpPayload_
+    , _plcsmpName = pPlcsmpName_
+    , _plcsmpCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsmpXgafv :: Lens' ProjectsLocationsClustersSetMaintenancePolicy (Maybe Xgafv)
+plcsmpXgafv
+  = lens _plcsmpXgafv (\ s a -> s{_plcsmpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsmpUploadProtocol :: Lens' ProjectsLocationsClustersSetMaintenancePolicy (Maybe Text)
+plcsmpUploadProtocol
+  = lens _plcsmpUploadProtocol
+      (\ s a -> s{_plcsmpUploadProtocol = a})
+
+-- | OAuth access token.
+plcsmpAccessToken :: Lens' ProjectsLocationsClustersSetMaintenancePolicy (Maybe Text)
+plcsmpAccessToken
+  = lens _plcsmpAccessToken
+      (\ s a -> s{_plcsmpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsmpUploadType :: Lens' ProjectsLocationsClustersSetMaintenancePolicy (Maybe Text)
+plcsmpUploadType
+  = lens _plcsmpUploadType
+      (\ s a -> s{_plcsmpUploadType = a})
+
+-- | Multipart request metadata.
+plcsmpPayload :: Lens' ProjectsLocationsClustersSetMaintenancePolicy SetMaintenancePolicyRequest
+plcsmpPayload
+  = lens _plcsmpPayload
+      (\ s a -> s{_plcsmpPayload = a})
+
+-- | The name (project, location, cluster id) of the cluster to set
+-- maintenance policy. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsmpName :: Lens' ProjectsLocationsClustersSetMaintenancePolicy Text
+plcsmpName
+  = lens _plcsmpName (\ s a -> s{_plcsmpName = a})
+
+-- | JSONP
+plcsmpCallback :: Lens' ProjectsLocationsClustersSetMaintenancePolicy (Maybe Text)
+plcsmpCallback
+  = lens _plcsmpCallback
+      (\ s a -> s{_plcsmpCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetMaintenancePolicy where
+        type Rs ProjectsLocationsClustersSetMaintenancePolicy
+             = Operation
+        type Scopes
+               ProjectsLocationsClustersSetMaintenancePolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetMaintenancePolicy'{..}
+          = go _plcsmpName _plcsmpXgafv _plcsmpUploadProtocol
+              _plcsmpAccessToken
+              _plcsmpUploadType
+              _plcsmpCallback
+              (Just AltJSON)
+              _plcsmpPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersSetMaintenancePolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMasterAuth.hs
@@ -0,0 +1,171 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Clusters.SetMasterAuth
+-- 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)
+--
+-- Used to set master auth materials. Currently supports :- Changing the
+-- admin password for a specific cluster. This can be either via password
+-- generation or explicitly set the password.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setMasterAuth@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMasterAuth
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetMasterAuthResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetMasterAuth
+    , ProjectsLocationsClustersSetMasterAuth
+
+    -- * Request Lenses
+    , plcsmaXgafv
+    , plcsmaUploadProtocol
+    , plcsmaAccessToken
+    , plcsmaUploadType
+    , plcsmaPayload
+    , plcsmaName
+    , plcsmaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setMasterAuth@ method which the
+-- 'ProjectsLocationsClustersSetMasterAuth' request conforms to.
+type ProjectsLocationsClustersSetMasterAuthResource =
+     "v1" :>
+       CaptureMode "name" "setMasterAuth" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetMasterAuthRequest :>
+                       Post '[JSON] Operation
+
+-- | Used to set master auth materials. Currently supports :- Changing the
+-- admin password for a specific cluster. This can be either via password
+-- generation or explicitly set the password.
+--
+-- /See:/ 'projectsLocationsClustersSetMasterAuth' smart constructor.
+data ProjectsLocationsClustersSetMasterAuth = ProjectsLocationsClustersSetMasterAuth'
+    { _plcsmaXgafv          :: !(Maybe Xgafv)
+    , _plcsmaUploadProtocol :: !(Maybe Text)
+    , _plcsmaAccessToken    :: !(Maybe Text)
+    , _plcsmaUploadType     :: !(Maybe Text)
+    , _plcsmaPayload        :: !SetMasterAuthRequest
+    , _plcsmaName           :: !Text
+    , _plcsmaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetMasterAuth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsmaXgafv'
+--
+-- * 'plcsmaUploadProtocol'
+--
+-- * 'plcsmaAccessToken'
+--
+-- * 'plcsmaUploadType'
+--
+-- * 'plcsmaPayload'
+--
+-- * 'plcsmaName'
+--
+-- * 'plcsmaCallback'
+projectsLocationsClustersSetMasterAuth
+    :: SetMasterAuthRequest -- ^ 'plcsmaPayload'
+    -> Text -- ^ 'plcsmaName'
+    -> ProjectsLocationsClustersSetMasterAuth
+projectsLocationsClustersSetMasterAuth pPlcsmaPayload_ pPlcsmaName_ =
+    ProjectsLocationsClustersSetMasterAuth'
+    { _plcsmaXgafv = Nothing
+    , _plcsmaUploadProtocol = Nothing
+    , _plcsmaAccessToken = Nothing
+    , _plcsmaUploadType = Nothing
+    , _plcsmaPayload = pPlcsmaPayload_
+    , _plcsmaName = pPlcsmaName_
+    , _plcsmaCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsmaXgafv :: Lens' ProjectsLocationsClustersSetMasterAuth (Maybe Xgafv)
+plcsmaXgafv
+  = lens _plcsmaXgafv (\ s a -> s{_plcsmaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsmaUploadProtocol :: Lens' ProjectsLocationsClustersSetMasterAuth (Maybe Text)
+plcsmaUploadProtocol
+  = lens _plcsmaUploadProtocol
+      (\ s a -> s{_plcsmaUploadProtocol = a})
+
+-- | OAuth access token.
+plcsmaAccessToken :: Lens' ProjectsLocationsClustersSetMasterAuth (Maybe Text)
+plcsmaAccessToken
+  = lens _plcsmaAccessToken
+      (\ s a -> s{_plcsmaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsmaUploadType :: Lens' ProjectsLocationsClustersSetMasterAuth (Maybe Text)
+plcsmaUploadType
+  = lens _plcsmaUploadType
+      (\ s a -> s{_plcsmaUploadType = a})
+
+-- | Multipart request metadata.
+plcsmaPayload :: Lens' ProjectsLocationsClustersSetMasterAuth SetMasterAuthRequest
+plcsmaPayload
+  = lens _plcsmaPayload
+      (\ s a -> s{_plcsmaPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to set auth.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsmaName :: Lens' ProjectsLocationsClustersSetMasterAuth Text
+plcsmaName
+  = lens _plcsmaName (\ s a -> s{_plcsmaName = a})
+
+-- | JSONP
+plcsmaCallback :: Lens' ProjectsLocationsClustersSetMasterAuth (Maybe Text)
+plcsmaCallback
+  = lens _plcsmaCallback
+      (\ s a -> s{_plcsmaCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetMasterAuth where
+        type Rs ProjectsLocationsClustersSetMasterAuth =
+             Operation
+        type Scopes ProjectsLocationsClustersSetMasterAuth =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetMasterAuth'{..}
+          = go _plcsmaName _plcsmaXgafv _plcsmaUploadProtocol
+              _plcsmaAccessToken
+              _plcsmaUploadType
+              _plcsmaCallback
+              (Just AltJSON)
+              _plcsmaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersSetMasterAuthResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetMonitoring.hs
@@ -0,0 +1,166 @@
+{-# 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.Locations.Clusters.SetMonitoring
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the monitoring service for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setMonitoring@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetMonitoring
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetMonitoringResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetMonitoring
+    , ProjectsLocationsClustersSetMonitoring
+
+    -- * Request Lenses
+    , plcsmXgafv
+    , plcsmUploadProtocol
+    , plcsmAccessToken
+    , plcsmUploadType
+    , plcsmPayload
+    , plcsmName
+    , plcsmCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setMonitoring@ method which the
+-- 'ProjectsLocationsClustersSetMonitoring' request conforms to.
+type ProjectsLocationsClustersSetMonitoringResource =
+     "v1" :>
+       CaptureMode "name" "setMonitoring" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetMonitoringServiceRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets the monitoring service for a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetMonitoring' smart constructor.
+data ProjectsLocationsClustersSetMonitoring = ProjectsLocationsClustersSetMonitoring'
+    { _plcsmXgafv          :: !(Maybe Xgafv)
+    , _plcsmUploadProtocol :: !(Maybe Text)
+    , _plcsmAccessToken    :: !(Maybe Text)
+    , _plcsmUploadType     :: !(Maybe Text)
+    , _plcsmPayload        :: !SetMonitoringServiceRequest
+    , _plcsmName           :: !Text
+    , _plcsmCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetMonitoring' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsmXgafv'
+--
+-- * 'plcsmUploadProtocol'
+--
+-- * 'plcsmAccessToken'
+--
+-- * 'plcsmUploadType'
+--
+-- * 'plcsmPayload'
+--
+-- * 'plcsmName'
+--
+-- * 'plcsmCallback'
+projectsLocationsClustersSetMonitoring
+    :: SetMonitoringServiceRequest -- ^ 'plcsmPayload'
+    -> Text -- ^ 'plcsmName'
+    -> ProjectsLocationsClustersSetMonitoring
+projectsLocationsClustersSetMonitoring pPlcsmPayload_ pPlcsmName_ =
+    ProjectsLocationsClustersSetMonitoring'
+    { _plcsmXgafv = Nothing
+    , _plcsmUploadProtocol = Nothing
+    , _plcsmAccessToken = Nothing
+    , _plcsmUploadType = Nothing
+    , _plcsmPayload = pPlcsmPayload_
+    , _plcsmName = pPlcsmName_
+    , _plcsmCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsmXgafv :: Lens' ProjectsLocationsClustersSetMonitoring (Maybe Xgafv)
+plcsmXgafv
+  = lens _plcsmXgafv (\ s a -> s{_plcsmXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsmUploadProtocol :: Lens' ProjectsLocationsClustersSetMonitoring (Maybe Text)
+plcsmUploadProtocol
+  = lens _plcsmUploadProtocol
+      (\ s a -> s{_plcsmUploadProtocol = a})
+
+-- | OAuth access token.
+plcsmAccessToken :: Lens' ProjectsLocationsClustersSetMonitoring (Maybe Text)
+plcsmAccessToken
+  = lens _plcsmAccessToken
+      (\ s a -> s{_plcsmAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsmUploadType :: Lens' ProjectsLocationsClustersSetMonitoring (Maybe Text)
+plcsmUploadType
+  = lens _plcsmUploadType
+      (\ s a -> s{_plcsmUploadType = a})
+
+-- | Multipart request metadata.
+plcsmPayload :: Lens' ProjectsLocationsClustersSetMonitoring SetMonitoringServiceRequest
+plcsmPayload
+  = lens _plcsmPayload (\ s a -> s{_plcsmPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to set monitoring.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsmName :: Lens' ProjectsLocationsClustersSetMonitoring Text
+plcsmName
+  = lens _plcsmName (\ s a -> s{_plcsmName = a})
+
+-- | JSONP
+plcsmCallback :: Lens' ProjectsLocationsClustersSetMonitoring (Maybe Text)
+plcsmCallback
+  = lens _plcsmCallback
+      (\ s a -> s{_plcsmCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetMonitoring where
+        type Rs ProjectsLocationsClustersSetMonitoring =
+             Operation
+        type Scopes ProjectsLocationsClustersSetMonitoring =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetMonitoring'{..}
+          = go _plcsmName _plcsmXgafv _plcsmUploadProtocol
+              _plcsmAccessToken
+              _plcsmUploadType
+              _plcsmCallback
+              (Just AltJSON)
+              _plcsmPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersSetMonitoringResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetNetworkPolicy.hs
@@ -0,0 +1,170 @@
+{-# 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.Locations.Clusters.SetNetworkPolicy
+-- 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)
+--
+-- Enables\/Disables Network Policy for a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setNetworkPolicy@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetNetworkPolicy
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetNetworkPolicyResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetNetworkPolicy
+    , ProjectsLocationsClustersSetNetworkPolicy
+
+    -- * Request Lenses
+    , plcsnpXgafv
+    , plcsnpUploadProtocol
+    , plcsnpAccessToken
+    , plcsnpUploadType
+    , plcsnpPayload
+    , plcsnpName
+    , plcsnpCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setNetworkPolicy@ method which the
+-- 'ProjectsLocationsClustersSetNetworkPolicy' request conforms to.
+type ProjectsLocationsClustersSetNetworkPolicyResource
+     =
+     "v1" :>
+       CaptureMode "name" "setNetworkPolicy" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetNetworkPolicyRequest :>
+                       Post '[JSON] Operation
+
+-- | Enables\/Disables Network Policy for a cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetNetworkPolicy' smart constructor.
+data ProjectsLocationsClustersSetNetworkPolicy = ProjectsLocationsClustersSetNetworkPolicy'
+    { _plcsnpXgafv          :: !(Maybe Xgafv)
+    , _plcsnpUploadProtocol :: !(Maybe Text)
+    , _plcsnpAccessToken    :: !(Maybe Text)
+    , _plcsnpUploadType     :: !(Maybe Text)
+    , _plcsnpPayload        :: !SetNetworkPolicyRequest
+    , _plcsnpName           :: !Text
+    , _plcsnpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetNetworkPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsnpXgafv'
+--
+-- * 'plcsnpUploadProtocol'
+--
+-- * 'plcsnpAccessToken'
+--
+-- * 'plcsnpUploadType'
+--
+-- * 'plcsnpPayload'
+--
+-- * 'plcsnpName'
+--
+-- * 'plcsnpCallback'
+projectsLocationsClustersSetNetworkPolicy
+    :: SetNetworkPolicyRequest -- ^ 'plcsnpPayload'
+    -> Text -- ^ 'plcsnpName'
+    -> ProjectsLocationsClustersSetNetworkPolicy
+projectsLocationsClustersSetNetworkPolicy pPlcsnpPayload_ pPlcsnpName_ =
+    ProjectsLocationsClustersSetNetworkPolicy'
+    { _plcsnpXgafv = Nothing
+    , _plcsnpUploadProtocol = Nothing
+    , _plcsnpAccessToken = Nothing
+    , _plcsnpUploadType = Nothing
+    , _plcsnpPayload = pPlcsnpPayload_
+    , _plcsnpName = pPlcsnpName_
+    , _plcsnpCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsnpXgafv :: Lens' ProjectsLocationsClustersSetNetworkPolicy (Maybe Xgafv)
+plcsnpXgafv
+  = lens _plcsnpXgafv (\ s a -> s{_plcsnpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsnpUploadProtocol :: Lens' ProjectsLocationsClustersSetNetworkPolicy (Maybe Text)
+plcsnpUploadProtocol
+  = lens _plcsnpUploadProtocol
+      (\ s a -> s{_plcsnpUploadProtocol = a})
+
+-- | OAuth access token.
+plcsnpAccessToken :: Lens' ProjectsLocationsClustersSetNetworkPolicy (Maybe Text)
+plcsnpAccessToken
+  = lens _plcsnpAccessToken
+      (\ s a -> s{_plcsnpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsnpUploadType :: Lens' ProjectsLocationsClustersSetNetworkPolicy (Maybe Text)
+plcsnpUploadType
+  = lens _plcsnpUploadType
+      (\ s a -> s{_plcsnpUploadType = a})
+
+-- | Multipart request metadata.
+plcsnpPayload :: Lens' ProjectsLocationsClustersSetNetworkPolicy SetNetworkPolicyRequest
+plcsnpPayload
+  = lens _plcsnpPayload
+      (\ s a -> s{_plcsnpPayload = a})
+
+-- | The name (project, location, cluster id) of the cluster to set
+-- networking policy. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsnpName :: Lens' ProjectsLocationsClustersSetNetworkPolicy Text
+plcsnpName
+  = lens _plcsnpName (\ s a -> s{_plcsnpName = a})
+
+-- | JSONP
+plcsnpCallback :: Lens' ProjectsLocationsClustersSetNetworkPolicy (Maybe Text)
+plcsnpCallback
+  = lens _plcsnpCallback
+      (\ s a -> s{_plcsnpCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetNetworkPolicy where
+        type Rs ProjectsLocationsClustersSetNetworkPolicy =
+             Operation
+        type Scopes ProjectsLocationsClustersSetNetworkPolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetNetworkPolicy'{..}
+          = go _plcsnpName _plcsnpXgafv _plcsnpUploadProtocol
+              _plcsnpAccessToken
+              _plcsnpUploadType
+              _plcsnpCallback
+              (Just AltJSON)
+              _plcsnpPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersSetNetworkPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/SetResourceLabels.hs
@@ -0,0 +1,170 @@
+{-# 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.Locations.Clusters.SetResourceLabels
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets labels on a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.setResourceLabels@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.SetResourceLabels
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersSetResourceLabelsResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersSetResourceLabels
+    , ProjectsLocationsClustersSetResourceLabels
+
+    -- * Request Lenses
+    , plcsrlXgafv
+    , plcsrlUploadProtocol
+    , plcsrlAccessToken
+    , plcsrlUploadType
+    , plcsrlPayload
+    , plcsrlName
+    , plcsrlCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.setResourceLabels@ method which the
+-- 'ProjectsLocationsClustersSetResourceLabels' request conforms to.
+type ProjectsLocationsClustersSetResourceLabelsResource
+     =
+     "v1" :>
+       CaptureMode "name" "setResourceLabels" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] SetLabelsRequest :>
+                       Post '[JSON] Operation
+
+-- | Sets labels on a cluster.
+--
+-- /See:/ 'projectsLocationsClustersSetResourceLabels' smart constructor.
+data ProjectsLocationsClustersSetResourceLabels = ProjectsLocationsClustersSetResourceLabels'
+    { _plcsrlXgafv          :: !(Maybe Xgafv)
+    , _plcsrlUploadProtocol :: !(Maybe Text)
+    , _plcsrlAccessToken    :: !(Maybe Text)
+    , _plcsrlUploadType     :: !(Maybe Text)
+    , _plcsrlPayload        :: !SetLabelsRequest
+    , _plcsrlName           :: !Text
+    , _plcsrlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersSetResourceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsrlXgafv'
+--
+-- * 'plcsrlUploadProtocol'
+--
+-- * 'plcsrlAccessToken'
+--
+-- * 'plcsrlUploadType'
+--
+-- * 'plcsrlPayload'
+--
+-- * 'plcsrlName'
+--
+-- * 'plcsrlCallback'
+projectsLocationsClustersSetResourceLabels
+    :: SetLabelsRequest -- ^ 'plcsrlPayload'
+    -> Text -- ^ 'plcsrlName'
+    -> ProjectsLocationsClustersSetResourceLabels
+projectsLocationsClustersSetResourceLabels pPlcsrlPayload_ pPlcsrlName_ =
+    ProjectsLocationsClustersSetResourceLabels'
+    { _plcsrlXgafv = Nothing
+    , _plcsrlUploadProtocol = Nothing
+    , _plcsrlAccessToken = Nothing
+    , _plcsrlUploadType = Nothing
+    , _plcsrlPayload = pPlcsrlPayload_
+    , _plcsrlName = pPlcsrlName_
+    , _plcsrlCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsrlXgafv :: Lens' ProjectsLocationsClustersSetResourceLabels (Maybe Xgafv)
+plcsrlXgafv
+  = lens _plcsrlXgafv (\ s a -> s{_plcsrlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsrlUploadProtocol :: Lens' ProjectsLocationsClustersSetResourceLabels (Maybe Text)
+plcsrlUploadProtocol
+  = lens _plcsrlUploadProtocol
+      (\ s a -> s{_plcsrlUploadProtocol = a})
+
+-- | OAuth access token.
+plcsrlAccessToken :: Lens' ProjectsLocationsClustersSetResourceLabels (Maybe Text)
+plcsrlAccessToken
+  = lens _plcsrlAccessToken
+      (\ s a -> s{_plcsrlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsrlUploadType :: Lens' ProjectsLocationsClustersSetResourceLabels (Maybe Text)
+plcsrlUploadType
+  = lens _plcsrlUploadType
+      (\ s a -> s{_plcsrlUploadType = a})
+
+-- | Multipart request metadata.
+plcsrlPayload :: Lens' ProjectsLocationsClustersSetResourceLabels SetLabelsRequest
+plcsrlPayload
+  = lens _plcsrlPayload
+      (\ s a -> s{_plcsrlPayload = a})
+
+-- | The name (project, location, cluster id) of the cluster to set labels.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsrlName :: Lens' ProjectsLocationsClustersSetResourceLabels Text
+plcsrlName
+  = lens _plcsrlName (\ s a -> s{_plcsrlName = a})
+
+-- | JSONP
+plcsrlCallback :: Lens' ProjectsLocationsClustersSetResourceLabels (Maybe Text)
+plcsrlCallback
+  = lens _plcsrlCallback
+      (\ s a -> s{_plcsrlCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersSetResourceLabels where
+        type Rs ProjectsLocationsClustersSetResourceLabels =
+             Operation
+        type Scopes
+               ProjectsLocationsClustersSetResourceLabels
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersSetResourceLabels'{..}
+          = go _plcsrlName _plcsrlXgafv _plcsrlUploadProtocol
+              _plcsrlAccessToken
+              _plcsrlUploadType
+              _plcsrlCallback
+              (Just AltJSON)
+              _plcsrlPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersSetResourceLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/StartIPRotation.hs
@@ -0,0 +1,170 @@
+{-# 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.Locations.Clusters.StartIPRotation
+-- 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)
+--
+-- Start master IP rotation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.startIpRotation@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersStartIPRotationResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersStartIPRotation
+    , ProjectsLocationsClustersStartIPRotation
+
+    -- * Request Lenses
+    , plcsirXgafv
+    , plcsirUploadProtocol
+    , plcsirAccessToken
+    , plcsirUploadType
+    , plcsirPayload
+    , plcsirName
+    , plcsirCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.startIpRotation@ method which the
+-- 'ProjectsLocationsClustersStartIPRotation' request conforms to.
+type ProjectsLocationsClustersStartIPRotationResource
+     =
+     "v1" :>
+       CaptureMode "name" "startIpRotation" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] StartIPRotationRequest :>
+                       Post '[JSON] Operation
+
+-- | Start master IP rotation.
+--
+-- /See:/ 'projectsLocationsClustersStartIPRotation' smart constructor.
+data ProjectsLocationsClustersStartIPRotation = ProjectsLocationsClustersStartIPRotation'
+    { _plcsirXgafv          :: !(Maybe Xgafv)
+    , _plcsirUploadProtocol :: !(Maybe Text)
+    , _plcsirAccessToken    :: !(Maybe Text)
+    , _plcsirUploadType     :: !(Maybe Text)
+    , _plcsirPayload        :: !StartIPRotationRequest
+    , _plcsirName           :: !Text
+    , _plcsirCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersStartIPRotation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcsirXgafv'
+--
+-- * 'plcsirUploadProtocol'
+--
+-- * 'plcsirAccessToken'
+--
+-- * 'plcsirUploadType'
+--
+-- * 'plcsirPayload'
+--
+-- * 'plcsirName'
+--
+-- * 'plcsirCallback'
+projectsLocationsClustersStartIPRotation
+    :: StartIPRotationRequest -- ^ 'plcsirPayload'
+    -> Text -- ^ 'plcsirName'
+    -> ProjectsLocationsClustersStartIPRotation
+projectsLocationsClustersStartIPRotation pPlcsirPayload_ pPlcsirName_ =
+    ProjectsLocationsClustersStartIPRotation'
+    { _plcsirXgafv = Nothing
+    , _plcsirUploadProtocol = Nothing
+    , _plcsirAccessToken = Nothing
+    , _plcsirUploadType = Nothing
+    , _plcsirPayload = pPlcsirPayload_
+    , _plcsirName = pPlcsirName_
+    , _plcsirCallback = Nothing
+    }
+
+-- | V1 error format.
+plcsirXgafv :: Lens' ProjectsLocationsClustersStartIPRotation (Maybe Xgafv)
+plcsirXgafv
+  = lens _plcsirXgafv (\ s a -> s{_plcsirXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcsirUploadProtocol :: Lens' ProjectsLocationsClustersStartIPRotation (Maybe Text)
+plcsirUploadProtocol
+  = lens _plcsirUploadProtocol
+      (\ s a -> s{_plcsirUploadProtocol = a})
+
+-- | OAuth access token.
+plcsirAccessToken :: Lens' ProjectsLocationsClustersStartIPRotation (Maybe Text)
+plcsirAccessToken
+  = lens _plcsirAccessToken
+      (\ s a -> s{_plcsirAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcsirUploadType :: Lens' ProjectsLocationsClustersStartIPRotation (Maybe Text)
+plcsirUploadType
+  = lens _plcsirUploadType
+      (\ s a -> s{_plcsirUploadType = a})
+
+-- | Multipart request metadata.
+plcsirPayload :: Lens' ProjectsLocationsClustersStartIPRotation StartIPRotationRequest
+plcsirPayload
+  = lens _plcsirPayload
+      (\ s a -> s{_plcsirPayload = a})
+
+-- | The name (project, location, cluster id) of the cluster to start IP
+-- rotation. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+plcsirName :: Lens' ProjectsLocationsClustersStartIPRotation Text
+plcsirName
+  = lens _plcsirName (\ s a -> s{_plcsirName = a})
+
+-- | JSONP
+plcsirCallback :: Lens' ProjectsLocationsClustersStartIPRotation (Maybe Text)
+plcsirCallback
+  = lens _plcsirCallback
+      (\ s a -> s{_plcsirCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersStartIPRotation where
+        type Rs ProjectsLocationsClustersStartIPRotation =
+             Operation
+        type Scopes ProjectsLocationsClustersStartIPRotation
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersStartIPRotation'{..}
+          = go _plcsirName _plcsirXgafv _plcsirUploadProtocol
+              _plcsirAccessToken
+              _plcsirUploadType
+              _plcsirCallback
+              (Just AltJSON)
+              _plcsirPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsLocationsClustersStartIPRotationResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/Update.hs
@@ -0,0 +1,162 @@
+{-# 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.Locations.Clusters.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the settings of a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.update@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.Update
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersUpdateResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersUpdate
+    , ProjectsLocationsClustersUpdate
+
+    -- * Request Lenses
+    , plcuXgafv
+    , plcuUploadProtocol
+    , plcuAccessToken
+    , plcuUploadType
+    , plcuPayload
+    , plcuName
+    , plcuCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.update@ method which the
+-- 'ProjectsLocationsClustersUpdate' request conforms to.
+type ProjectsLocationsClustersUpdateResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] UpdateClusterRequest :>
+                       Put '[JSON] Operation
+
+-- | Updates the settings of a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersUpdate' smart constructor.
+data ProjectsLocationsClustersUpdate = ProjectsLocationsClustersUpdate'
+    { _plcuXgafv          :: !(Maybe Xgafv)
+    , _plcuUploadProtocol :: !(Maybe Text)
+    , _plcuAccessToken    :: !(Maybe Text)
+    , _plcuUploadType     :: !(Maybe Text)
+    , _plcuPayload        :: !UpdateClusterRequest
+    , _plcuName           :: !Text
+    , _plcuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcuXgafv'
+--
+-- * 'plcuUploadProtocol'
+--
+-- * 'plcuAccessToken'
+--
+-- * 'plcuUploadType'
+--
+-- * 'plcuPayload'
+--
+-- * 'plcuName'
+--
+-- * 'plcuCallback'
+projectsLocationsClustersUpdate
+    :: UpdateClusterRequest -- ^ 'plcuPayload'
+    -> Text -- ^ 'plcuName'
+    -> ProjectsLocationsClustersUpdate
+projectsLocationsClustersUpdate pPlcuPayload_ pPlcuName_ =
+    ProjectsLocationsClustersUpdate'
+    { _plcuXgafv = Nothing
+    , _plcuUploadProtocol = Nothing
+    , _plcuAccessToken = Nothing
+    , _plcuUploadType = Nothing
+    , _plcuPayload = pPlcuPayload_
+    , _plcuName = pPlcuName_
+    , _plcuCallback = Nothing
+    }
+
+-- | V1 error format.
+plcuXgafv :: Lens' ProjectsLocationsClustersUpdate (Maybe Xgafv)
+plcuXgafv
+  = lens _plcuXgafv (\ s a -> s{_plcuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcuUploadProtocol :: Lens' ProjectsLocationsClustersUpdate (Maybe Text)
+plcuUploadProtocol
+  = lens _plcuUploadProtocol
+      (\ s a -> s{_plcuUploadProtocol = a})
+
+-- | OAuth access token.
+plcuAccessToken :: Lens' ProjectsLocationsClustersUpdate (Maybe Text)
+plcuAccessToken
+  = lens _plcuAccessToken
+      (\ s a -> s{_plcuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcuUploadType :: Lens' ProjectsLocationsClustersUpdate (Maybe Text)
+plcuUploadType
+  = lens _plcuUploadType
+      (\ s a -> s{_plcuUploadType = a})
+
+-- | Multipart request metadata.
+plcuPayload :: Lens' ProjectsLocationsClustersUpdate UpdateClusterRequest
+plcuPayload
+  = lens _plcuPayload (\ s a -> s{_plcuPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to update.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcuName :: Lens' ProjectsLocationsClustersUpdate Text
+plcuName = lens _plcuName (\ s a -> s{_plcuName = a})
+
+-- | JSONP
+plcuCallback :: Lens' ProjectsLocationsClustersUpdate (Maybe Text)
+plcuCallback
+  = lens _plcuCallback (\ s a -> s{_plcuCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersUpdate where
+        type Rs ProjectsLocationsClustersUpdate = Operation
+        type Scopes ProjectsLocationsClustersUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsClustersUpdate'{..}
+          = go _plcuName _plcuXgafv _plcuUploadProtocol
+              _plcuAccessToken
+              _plcuUploadType
+              _plcuCallback
+              (Just AltJSON)
+              _plcuPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Clusters/UpdateMaster.hs
@@ -0,0 +1,166 @@
+{-# 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.Locations.Clusters.UpdateMaster
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the master for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.clusters.updateMaster@.
+module Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
+    (
+    -- * REST Resource
+      ProjectsLocationsClustersUpdateMasterResource
+
+    -- * Creating a Request
+    , projectsLocationsClustersUpdateMaster
+    , ProjectsLocationsClustersUpdateMaster
+
+    -- * Request Lenses
+    , plcumXgafv
+    , plcumUploadProtocol
+    , plcumAccessToken
+    , plcumUploadType
+    , plcumPayload
+    , plcumName
+    , plcumCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.clusters.updateMaster@ method which the
+-- 'ProjectsLocationsClustersUpdateMaster' request conforms to.
+type ProjectsLocationsClustersUpdateMasterResource =
+     "v1" :>
+       CaptureMode "name" "updateMaster" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] UpdateMasterRequest :>
+                       Post '[JSON] Operation
+
+-- | Updates the master for a specific cluster.
+--
+-- /See:/ 'projectsLocationsClustersUpdateMaster' smart constructor.
+data ProjectsLocationsClustersUpdateMaster = ProjectsLocationsClustersUpdateMaster'
+    { _plcumXgafv          :: !(Maybe Xgafv)
+    , _plcumUploadProtocol :: !(Maybe Text)
+    , _plcumAccessToken    :: !(Maybe Text)
+    , _plcumUploadType     :: !(Maybe Text)
+    , _plcumPayload        :: !UpdateMasterRequest
+    , _plcumName           :: !Text
+    , _plcumCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsClustersUpdateMaster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plcumXgafv'
+--
+-- * 'plcumUploadProtocol'
+--
+-- * 'plcumAccessToken'
+--
+-- * 'plcumUploadType'
+--
+-- * 'plcumPayload'
+--
+-- * 'plcumName'
+--
+-- * 'plcumCallback'
+projectsLocationsClustersUpdateMaster
+    :: UpdateMasterRequest -- ^ 'plcumPayload'
+    -> Text -- ^ 'plcumName'
+    -> ProjectsLocationsClustersUpdateMaster
+projectsLocationsClustersUpdateMaster pPlcumPayload_ pPlcumName_ =
+    ProjectsLocationsClustersUpdateMaster'
+    { _plcumXgafv = Nothing
+    , _plcumUploadProtocol = Nothing
+    , _plcumAccessToken = Nothing
+    , _plcumUploadType = Nothing
+    , _plcumPayload = pPlcumPayload_
+    , _plcumName = pPlcumName_
+    , _plcumCallback = Nothing
+    }
+
+-- | V1 error format.
+plcumXgafv :: Lens' ProjectsLocationsClustersUpdateMaster (Maybe Xgafv)
+plcumXgafv
+  = lens _plcumXgafv (\ s a -> s{_plcumXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plcumUploadProtocol :: Lens' ProjectsLocationsClustersUpdateMaster (Maybe Text)
+plcumUploadProtocol
+  = lens _plcumUploadProtocol
+      (\ s a -> s{_plcumUploadProtocol = a})
+
+-- | OAuth access token.
+plcumAccessToken :: Lens' ProjectsLocationsClustersUpdateMaster (Maybe Text)
+plcumAccessToken
+  = lens _plcumAccessToken
+      (\ s a -> s{_plcumAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plcumUploadType :: Lens' ProjectsLocationsClustersUpdateMaster (Maybe Text)
+plcumUploadType
+  = lens _plcumUploadType
+      (\ s a -> s{_plcumUploadType = a})
+
+-- | Multipart request metadata.
+plcumPayload :: Lens' ProjectsLocationsClustersUpdateMaster UpdateMasterRequest
+plcumPayload
+  = lens _plcumPayload (\ s a -> s{_plcumPayload = a})
+
+-- | The name (project, location, cluster) of the cluster to update.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+plcumName :: Lens' ProjectsLocationsClustersUpdateMaster Text
+plcumName
+  = lens _plcumName (\ s a -> s{_plcumName = a})
+
+-- | JSONP
+plcumCallback :: Lens' ProjectsLocationsClustersUpdateMaster (Maybe Text)
+plcumCallback
+  = lens _plcumCallback
+      (\ s a -> s{_plcumCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsClustersUpdateMaster where
+        type Rs ProjectsLocationsClustersUpdateMaster =
+             Operation
+        type Scopes ProjectsLocationsClustersUpdateMaster =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsLocationsClustersUpdateMaster'{..}
+          = go _plcumName _plcumXgafv _plcumUploadProtocol
+              _plcumAccessToken
+              _plcumUploadType
+              _plcumCallback
+              (Just AltJSON)
+              _plcumPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsClustersUpdateMasterResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs b/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/GetServerConfig.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.GetServerConfig
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns configuration info about the Kubernetes Engine service.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.getServerConfig@.
+module Network.Google.Resource.Container.Projects.Locations.GetServerConfig
+    (
+    -- * REST Resource
+      ProjectsLocationsGetServerConfigResource
+
+    -- * Creating a Request
+    , projectsLocationsGetServerConfig
+    , ProjectsLocationsGetServerConfig
+
+    -- * Request Lenses
+    , plgscXgafv
+    , plgscUploadProtocol
+    , plgscAccessToken
+    , plgscUploadType
+    , plgscZone
+    , plgscName
+    , plgscProjectId
+    , plgscCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.getServerConfig@ method which the
+-- 'ProjectsLocationsGetServerConfig' request conforms to.
+type ProjectsLocationsGetServerConfigResource =
+     "v1" :>
+       Capture "name" Text :>
+         "serverConfig" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "zone" Text :>
+                     QueryParam "projectId" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] ServerConfig
+
+-- | Returns configuration info about the Kubernetes Engine service.
+--
+-- /See:/ 'projectsLocationsGetServerConfig' smart constructor.
+data ProjectsLocationsGetServerConfig = ProjectsLocationsGetServerConfig'
+    { _plgscXgafv          :: !(Maybe Xgafv)
+    , _plgscUploadProtocol :: !(Maybe Text)
+    , _plgscAccessToken    :: !(Maybe Text)
+    , _plgscUploadType     :: !(Maybe Text)
+    , _plgscZone           :: !(Maybe Text)
+    , _plgscName           :: !Text
+    , _plgscProjectId      :: !(Maybe Text)
+    , _plgscCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsGetServerConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plgscXgafv'
+--
+-- * 'plgscUploadProtocol'
+--
+-- * 'plgscAccessToken'
+--
+-- * 'plgscUploadType'
+--
+-- * 'plgscZone'
+--
+-- * 'plgscName'
+--
+-- * 'plgscProjectId'
+--
+-- * 'plgscCallback'
+projectsLocationsGetServerConfig
+    :: Text -- ^ 'plgscName'
+    -> ProjectsLocationsGetServerConfig
+projectsLocationsGetServerConfig pPlgscName_ =
+    ProjectsLocationsGetServerConfig'
+    { _plgscXgafv = Nothing
+    , _plgscUploadProtocol = Nothing
+    , _plgscAccessToken = Nothing
+    , _plgscUploadType = Nothing
+    , _plgscZone = Nothing
+    , _plgscName = pPlgscName_
+    , _plgscProjectId = Nothing
+    , _plgscCallback = Nothing
+    }
+
+-- | V1 error format.
+plgscXgafv :: Lens' ProjectsLocationsGetServerConfig (Maybe Xgafv)
+plgscXgafv
+  = lens _plgscXgafv (\ s a -> s{_plgscXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plgscUploadProtocol :: Lens' ProjectsLocationsGetServerConfig (Maybe Text)
+plgscUploadProtocol
+  = lens _plgscUploadProtocol
+      (\ s a -> s{_plgscUploadProtocol = a})
+
+-- | OAuth access token.
+plgscAccessToken :: Lens' ProjectsLocationsGetServerConfig (Maybe Text)
+plgscAccessToken
+  = lens _plgscAccessToken
+      (\ s a -> s{_plgscAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plgscUploadType :: Lens' ProjectsLocationsGetServerConfig (Maybe Text)
+plgscUploadType
+  = lens _plgscUploadType
+      (\ s a -> s{_plgscUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) to return operations for. This
+-- field has been deprecated and replaced by the name field.
+plgscZone :: Lens' ProjectsLocationsGetServerConfig (Maybe Text)
+plgscZone
+  = lens _plgscZone (\ s a -> s{_plgscZone = a})
+
+-- | The name (project and location) of the server config to get Specified in
+-- the format \'projects\/*\/locations\/*\'.
+plgscName :: Lens' ProjectsLocationsGetServerConfig Text
+plgscName
+  = lens _plgscName (\ s a -> s{_plgscName = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+plgscProjectId :: Lens' ProjectsLocationsGetServerConfig (Maybe Text)
+plgscProjectId
+  = lens _plgscProjectId
+      (\ s a -> s{_plgscProjectId = a})
+
+-- | JSONP
+plgscCallback :: Lens' ProjectsLocationsGetServerConfig (Maybe Text)
+plgscCallback
+  = lens _plgscCallback
+      (\ s a -> s{_plgscCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsGetServerConfig where
+        type Rs ProjectsLocationsGetServerConfig =
+             ServerConfig
+        type Scopes ProjectsLocationsGetServerConfig =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsGetServerConfig'{..}
+          = go _plgscName _plgscXgafv _plgscUploadProtocol
+              _plgscAccessToken
+              _plgscUploadType
+              _plgscZone
+              _plgscProjectId
+              _plgscCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsGetServerConfigResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Cancel.hs
@@ -0,0 +1,162 @@
+{-# 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.Locations.Operations.Cancel
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Cancels the specified operation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.operations.cancel@.
+module Network.Google.Resource.Container.Projects.Locations.Operations.Cancel
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsCancelResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsCancel
+    , ProjectsLocationsOperationsCancel
+
+    -- * Request Lenses
+    , plocXgafv
+    , plocUploadProtocol
+    , plocAccessToken
+    , plocUploadType
+    , plocPayload
+    , plocName
+    , plocCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.operations.cancel@ method which the
+-- 'ProjectsLocationsOperationsCancel' request conforms to.
+type ProjectsLocationsOperationsCancelResource =
+     "v1" :>
+       CaptureMode "name" "cancel" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "callback" Text :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] CancelOperationRequest :>
+                       Post '[JSON] Empty
+
+-- | Cancels the specified operation.
+--
+-- /See:/ 'projectsLocationsOperationsCancel' smart constructor.
+data ProjectsLocationsOperationsCancel = ProjectsLocationsOperationsCancel'
+    { _plocXgafv          :: !(Maybe Xgafv)
+    , _plocUploadProtocol :: !(Maybe Text)
+    , _plocAccessToken    :: !(Maybe Text)
+    , _plocUploadType     :: !(Maybe Text)
+    , _plocPayload        :: !CancelOperationRequest
+    , _plocName           :: !Text
+    , _plocCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsOperationsCancel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plocXgafv'
+--
+-- * 'plocUploadProtocol'
+--
+-- * 'plocAccessToken'
+--
+-- * 'plocUploadType'
+--
+-- * 'plocPayload'
+--
+-- * 'plocName'
+--
+-- * 'plocCallback'
+projectsLocationsOperationsCancel
+    :: CancelOperationRequest -- ^ 'plocPayload'
+    -> Text -- ^ 'plocName'
+    -> ProjectsLocationsOperationsCancel
+projectsLocationsOperationsCancel pPlocPayload_ pPlocName_ =
+    ProjectsLocationsOperationsCancel'
+    { _plocXgafv = Nothing
+    , _plocUploadProtocol = Nothing
+    , _plocAccessToken = Nothing
+    , _plocUploadType = Nothing
+    , _plocPayload = pPlocPayload_
+    , _plocName = pPlocName_
+    , _plocCallback = Nothing
+    }
+
+-- | V1 error format.
+plocXgafv :: Lens' ProjectsLocationsOperationsCancel (Maybe Xgafv)
+plocXgafv
+  = lens _plocXgafv (\ s a -> s{_plocXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plocUploadProtocol :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocUploadProtocol
+  = lens _plocUploadProtocol
+      (\ s a -> s{_plocUploadProtocol = a})
+
+-- | OAuth access token.
+plocAccessToken :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocAccessToken
+  = lens _plocAccessToken
+      (\ s a -> s{_plocAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plocUploadType :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocUploadType
+  = lens _plocUploadType
+      (\ s a -> s{_plocUploadType = a})
+
+-- | Multipart request metadata.
+plocPayload :: Lens' ProjectsLocationsOperationsCancel CancelOperationRequest
+plocPayload
+  = lens _plocPayload (\ s a -> s{_plocPayload = a})
+
+-- | The name (project, location, operation id) of the operation to cancel.
+-- Specified in the format \'projects\/*\/locations\/*\/operations\/*\'.
+plocName :: Lens' ProjectsLocationsOperationsCancel Text
+plocName = lens _plocName (\ s a -> s{_plocName = a})
+
+-- | JSONP
+plocCallback :: Lens' ProjectsLocationsOperationsCancel (Maybe Text)
+plocCallback
+  = lens _plocCallback (\ s a -> s{_plocCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsOperationsCancel where
+        type Rs ProjectsLocationsOperationsCancel = Empty
+        type Scopes ProjectsLocationsOperationsCancel =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsCancel'{..}
+          = go _plocName _plocXgafv _plocUploadProtocol
+              _plocAccessToken
+              _plocUploadType
+              _plocCallback
+              (Just AltJSON)
+              _plocPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsCancelResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/Get.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Operations.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the specified operation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.operations.get@.
+module Network.Google.Resource.Container.Projects.Locations.Operations.Get
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsGetResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsGet
+    , ProjectsLocationsOperationsGet
+
+    -- * Request Lenses
+    , plogXgafv
+    , plogUploadProtocol
+    , plogAccessToken
+    , plogUploadType
+    , plogZone
+    , plogName
+    , plogProjectId
+    , plogOperationId
+    , plogCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.operations.get@ method which the
+-- 'ProjectsLocationsOperationsGet' request conforms to.
+type ProjectsLocationsOperationsGetResource =
+     "v1" :>
+       Capture "name" Text :>
+         QueryParam "$.xgafv" Xgafv :>
+           QueryParam "upload_protocol" Text :>
+             QueryParam "access_token" Text :>
+               QueryParam "uploadType" Text :>
+                 QueryParam "zone" Text :>
+                   QueryParam "projectId" Text :>
+                     QueryParam "operationId" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :> Get '[JSON] Operation
+
+-- | Gets the specified operation.
+--
+-- /See:/ 'projectsLocationsOperationsGet' smart constructor.
+data ProjectsLocationsOperationsGet = ProjectsLocationsOperationsGet'
+    { _plogXgafv          :: !(Maybe Xgafv)
+    , _plogUploadProtocol :: !(Maybe Text)
+    , _plogAccessToken    :: !(Maybe Text)
+    , _plogUploadType     :: !(Maybe Text)
+    , _plogZone           :: !(Maybe Text)
+    , _plogName           :: !Text
+    , _plogProjectId      :: !(Maybe Text)
+    , _plogOperationId    :: !(Maybe Text)
+    , _plogCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsOperationsGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plogXgafv'
+--
+-- * 'plogUploadProtocol'
+--
+-- * 'plogAccessToken'
+--
+-- * 'plogUploadType'
+--
+-- * 'plogZone'
+--
+-- * 'plogName'
+--
+-- * 'plogProjectId'
+--
+-- * 'plogOperationId'
+--
+-- * 'plogCallback'
+projectsLocationsOperationsGet
+    :: Text -- ^ 'plogName'
+    -> ProjectsLocationsOperationsGet
+projectsLocationsOperationsGet pPlogName_ =
+    ProjectsLocationsOperationsGet'
+    { _plogXgafv = Nothing
+    , _plogUploadProtocol = Nothing
+    , _plogAccessToken = Nothing
+    , _plogUploadType = Nothing
+    , _plogZone = Nothing
+    , _plogName = pPlogName_
+    , _plogProjectId = Nothing
+    , _plogOperationId = Nothing
+    , _plogCallback = Nothing
+    }
+
+-- | V1 error format.
+plogXgafv :: Lens' ProjectsLocationsOperationsGet (Maybe Xgafv)
+plogXgafv
+  = lens _plogXgafv (\ s a -> s{_plogXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plogUploadProtocol :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogUploadProtocol
+  = lens _plogUploadProtocol
+      (\ s a -> s{_plogUploadProtocol = a})
+
+-- | OAuth access token.
+plogAccessToken :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogAccessToken
+  = lens _plogAccessToken
+      (\ s a -> s{_plogAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plogUploadType :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogUploadType
+  = lens _plogUploadType
+      (\ s a -> s{_plogUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+plogZone :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogZone = lens _plogZone (\ s a -> s{_plogZone = a})
+
+-- | The name (project, location, operation id) of the operation to get.
+-- Specified in the format \'projects\/*\/locations\/*\/operations\/*\'.
+plogName :: Lens' ProjectsLocationsOperationsGet Text
+plogName = lens _plogName (\ s a -> s{_plogName = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+plogProjectId :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogProjectId
+  = lens _plogProjectId
+      (\ s a -> s{_plogProjectId = a})
+
+-- | Deprecated. The server-assigned \`name\` of the operation. This field
+-- has been deprecated and replaced by the name field.
+plogOperationId :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogOperationId
+  = lens _plogOperationId
+      (\ s a -> s{_plogOperationId = a})
+
+-- | JSONP
+plogCallback :: Lens' ProjectsLocationsOperationsGet (Maybe Text)
+plogCallback
+  = lens _plogCallback (\ s a -> s{_plogCallback = a})
+
+instance GoogleRequest ProjectsLocationsOperationsGet
+         where
+        type Rs ProjectsLocationsOperationsGet = Operation
+        type Scopes ProjectsLocationsOperationsGet =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsGet'{..}
+          = go _plogName _plogXgafv _plogUploadProtocol
+              _plogAccessToken
+              _plogUploadType
+              _plogZone
+              _plogProjectId
+              _plogOperationId
+              _plogCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Locations/Operations/List.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Locations.Operations.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all operations in a project in a specific zone or all zones.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.locations.operations.list@.
+module Network.Google.Resource.Container.Projects.Locations.Operations.List
+    (
+    -- * REST Resource
+      ProjectsLocationsOperationsListResource
+
+    -- * Creating a Request
+    , projectsLocationsOperationsList
+    , ProjectsLocationsOperationsList
+
+    -- * Request Lenses
+    , plolParent
+    , plolXgafv
+    , plolUploadProtocol
+    , plolAccessToken
+    , plolUploadType
+    , plolZone
+    , plolProjectId
+    , plolCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.locations.operations.list@ method which the
+-- 'ProjectsLocationsOperationsList' request conforms to.
+type ProjectsLocationsOperationsListResource =
+     "v1" :>
+       Capture "parent" Text :>
+         "operations" :>
+           QueryParam "$.xgafv" Xgafv :>
+             QueryParam "upload_protocol" Text :>
+               QueryParam "access_token" Text :>
+                 QueryParam "uploadType" Text :>
+                   QueryParam "zone" Text :>
+                     QueryParam "projectId" Text :>
+                       QueryParam "callback" Text :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] ListOperationsResponse
+
+-- | Lists all operations in a project in a specific zone or all zones.
+--
+-- /See:/ 'projectsLocationsOperationsList' smart constructor.
+data ProjectsLocationsOperationsList = ProjectsLocationsOperationsList'
+    { _plolParent         :: !Text
+    , _plolXgafv          :: !(Maybe Xgafv)
+    , _plolUploadProtocol :: !(Maybe Text)
+    , _plolAccessToken    :: !(Maybe Text)
+    , _plolUploadType     :: !(Maybe Text)
+    , _plolZone           :: !(Maybe Text)
+    , _plolProjectId      :: !(Maybe Text)
+    , _plolCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsLocationsOperationsList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plolParent'
+--
+-- * 'plolXgafv'
+--
+-- * 'plolUploadProtocol'
+--
+-- * 'plolAccessToken'
+--
+-- * 'plolUploadType'
+--
+-- * 'plolZone'
+--
+-- * 'plolProjectId'
+--
+-- * 'plolCallback'
+projectsLocationsOperationsList
+    :: Text -- ^ 'plolParent'
+    -> ProjectsLocationsOperationsList
+projectsLocationsOperationsList pPlolParent_ =
+    ProjectsLocationsOperationsList'
+    { _plolParent = pPlolParent_
+    , _plolXgafv = Nothing
+    , _plolUploadProtocol = Nothing
+    , _plolAccessToken = Nothing
+    , _plolUploadType = Nothing
+    , _plolZone = Nothing
+    , _plolProjectId = Nothing
+    , _plolCallback = Nothing
+    }
+
+-- | The parent (project and location) where the operations will be listed.
+-- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
+-- matches all zones and all regions.
+plolParent :: Lens' ProjectsLocationsOperationsList Text
+plolParent
+  = lens _plolParent (\ s a -> s{_plolParent = a})
+
+-- | V1 error format.
+plolXgafv :: Lens' ProjectsLocationsOperationsList (Maybe Xgafv)
+plolXgafv
+  = lens _plolXgafv (\ s a -> s{_plolXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+plolUploadProtocol :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolUploadProtocol
+  = lens _plolUploadProtocol
+      (\ s a -> s{_plolUploadProtocol = a})
+
+-- | OAuth access token.
+plolAccessToken :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolAccessToken
+  = lens _plolAccessToken
+      (\ s a -> s{_plolAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+plolUploadType :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolUploadType
+  = lens _plolUploadType
+      (\ s a -> s{_plolUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) to return operations for, or
+-- \`-\` for all zones. This field has been deprecated and replaced by the
+-- parent field.
+plolZone :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolZone = lens _plolZone (\ s a -> s{_plolZone = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
+plolProjectId :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolProjectId
+  = lens _plolProjectId
+      (\ s a -> s{_plolProjectId = a})
+
+-- | JSONP
+plolCallback :: Lens' ProjectsLocationsOperationsList (Maybe Text)
+plolCallback
+  = lens _plolCallback (\ s a -> s{_plolCallback = a})
+
+instance GoogleRequest
+         ProjectsLocationsOperationsList where
+        type Rs ProjectsLocationsOperationsList =
+             ListOperationsResponse
+        type Scopes ProjectsLocationsOperationsList =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsLocationsOperationsList'{..}
+          = go _plolParent _plolXgafv _plolUploadProtocol
+              _plolAccessToken
+              _plolUploadType
+              _plolZone
+              _plolProjectId
+              _plolCallback
+              (Just AltJSON)
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsLocationsOperationsListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Addons.hs
@@ -0,0 +1,197 @@
+{-# 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.Addons
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the addons for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.addons@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Addons
+    (
+    -- * REST Resource
+      ProjectsZonesClustersAddonsResource
+
+    -- * Creating a Request
+    , projectsZonesClustersAddons
+    , ProjectsZonesClustersAddons
+
+    -- * Request Lenses
+    , pzcaXgafv
+    , pzcaUploadProtocol
+    , pzcaAccessToken
+    , pzcaUploadType
+    , pzcaZone
+    , pzcaPayload
+    , pzcaClusterId
+    , pzcaProjectId
+    , pzcaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.addons@ method which the
+-- 'ProjectsZonesClustersAddons' request conforms to.
+type ProjectsZonesClustersAddonsResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "addons" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] SetAddonsConfigRequest :>
+                                   Post '[JSON] Operation
+
+-- | Sets the addons for a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersAddons' smart constructor.
+data ProjectsZonesClustersAddons = ProjectsZonesClustersAddons'
+    { _pzcaXgafv          :: !(Maybe Xgafv)
+    , _pzcaUploadProtocol :: !(Maybe Text)
+    , _pzcaAccessToken    :: !(Maybe Text)
+    , _pzcaUploadType     :: !(Maybe Text)
+    , _pzcaZone           :: !Text
+    , _pzcaPayload        :: !SetAddonsConfigRequest
+    , _pzcaClusterId      :: !Text
+    , _pzcaProjectId      :: !Text
+    , _pzcaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersAddons' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcaXgafv'
+--
+-- * 'pzcaUploadProtocol'
+--
+-- * 'pzcaAccessToken'
+--
+-- * 'pzcaUploadType'
+--
+-- * 'pzcaZone'
+--
+-- * 'pzcaPayload'
+--
+-- * 'pzcaClusterId'
+--
+-- * 'pzcaProjectId'
+--
+-- * 'pzcaCallback'
+projectsZonesClustersAddons
+    :: Text -- ^ 'pzcaZone'
+    -> SetAddonsConfigRequest -- ^ 'pzcaPayload'
+    -> Text -- ^ 'pzcaClusterId'
+    -> Text -- ^ 'pzcaProjectId'
+    -> ProjectsZonesClustersAddons
+projectsZonesClustersAddons pPzcaZone_ pPzcaPayload_ pPzcaClusterId_ pPzcaProjectId_ =
+    ProjectsZonesClustersAddons'
+    { _pzcaXgafv = Nothing
+    , _pzcaUploadProtocol = Nothing
+    , _pzcaAccessToken = Nothing
+    , _pzcaUploadType = Nothing
+    , _pzcaZone = pPzcaZone_
+    , _pzcaPayload = pPzcaPayload_
+    , _pzcaClusterId = pPzcaClusterId_
+    , _pzcaProjectId = pPzcaProjectId_
+    , _pzcaCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcaXgafv :: Lens' ProjectsZonesClustersAddons (Maybe Xgafv)
+pzcaXgafv
+  = lens _pzcaXgafv (\ s a -> s{_pzcaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcaUploadProtocol :: Lens' ProjectsZonesClustersAddons (Maybe Text)
+pzcaUploadProtocol
+  = lens _pzcaUploadProtocol
+      (\ s a -> s{_pzcaUploadProtocol = a})
+
+-- | OAuth access token.
+pzcaAccessToken :: Lens' ProjectsZonesClustersAddons (Maybe Text)
+pzcaAccessToken
+  = lens _pzcaAccessToken
+      (\ s a -> s{_pzcaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcaUploadType :: Lens' ProjectsZonesClustersAddons (Maybe Text)
+pzcaUploadType
+  = lens _pzcaUploadType
+      (\ s a -> s{_pzcaUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcaZone :: Lens' ProjectsZonesClustersAddons Text
+pzcaZone = lens _pzcaZone (\ s a -> s{_pzcaZone = a})
+
+-- | Multipart request metadata.
+pzcaPayload :: Lens' ProjectsZonesClustersAddons SetAddonsConfigRequest
+pzcaPayload
+  = lens _pzcaPayload (\ s a -> s{_pzcaPayload = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcaClusterId :: Lens' ProjectsZonesClustersAddons Text
+pzcaClusterId
+  = lens _pzcaClusterId
+      (\ s a -> s{_pzcaClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcaProjectId :: Lens' ProjectsZonesClustersAddons Text
+pzcaProjectId
+  = lens _pzcaProjectId
+      (\ s a -> s{_pzcaProjectId = a})
+
+-- | JSONP
+pzcaCallback :: Lens' ProjectsZonesClustersAddons (Maybe Text)
+pzcaCallback
+  = lens _pzcaCallback (\ s a -> s{_pzcaCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersAddons
+         where
+        type Rs ProjectsZonesClustersAddons = Operation
+        type Scopes ProjectsZonesClustersAddons =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersAddons'{..}
+          = go _pzcaProjectId _pzcaZone _pzcaClusterId
+              _pzcaXgafv
+              _pzcaUploadProtocol
+              _pzcaAccessToken
+              _pzcaUploadType
+              _pzcaCallback
+              (Just AltJSON)
+              _pzcaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersAddonsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/CompleteIPRotation.hs
@@ -0,0 +1,204 @@
+{-# 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.CompleteIPRotation
+-- 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)
+--
+-- Completes master IP rotation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.completeIpRotation@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.CompleteIPRotation
+    (
+    -- * REST Resource
+      ProjectsZonesClustersCompleteIPRotationResource
+
+    -- * Creating a Request
+    , projectsZonesClustersCompleteIPRotation
+    , ProjectsZonesClustersCompleteIPRotation
+
+    -- * Request Lenses
+    , pzccirXgafv
+    , pzccirUploadProtocol
+    , pzccirAccessToken
+    , pzccirUploadType
+    , pzccirZone
+    , pzccirPayload
+    , pzccirClusterId
+    , pzccirProjectId
+    , pzccirCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.completeIpRotation@ method which the
+-- 'ProjectsZonesClustersCompleteIPRotation' request conforms to.
+type ProjectsZonesClustersCompleteIPRotationResource
+     =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 CaptureMode "clusterId" "completeIpRotation" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] CompleteIPRotationRequest :>
+                                 Post '[JSON] Operation
+
+-- | Completes master IP rotation.
+--
+-- /See:/ 'projectsZonesClustersCompleteIPRotation' smart constructor.
+data ProjectsZonesClustersCompleteIPRotation = ProjectsZonesClustersCompleteIPRotation'
+    { _pzccirXgafv          :: !(Maybe Xgafv)
+    , _pzccirUploadProtocol :: !(Maybe Text)
+    , _pzccirAccessToken    :: !(Maybe Text)
+    , _pzccirUploadType     :: !(Maybe Text)
+    , _pzccirZone           :: !Text
+    , _pzccirPayload        :: !CompleteIPRotationRequest
+    , _pzccirClusterId      :: !Text
+    , _pzccirProjectId      :: !Text
+    , _pzccirCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersCompleteIPRotation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzccirXgafv'
+--
+-- * 'pzccirUploadProtocol'
+--
+-- * 'pzccirAccessToken'
+--
+-- * 'pzccirUploadType'
+--
+-- * 'pzccirZone'
+--
+-- * 'pzccirPayload'
+--
+-- * 'pzccirClusterId'
+--
+-- * 'pzccirProjectId'
+--
+-- * 'pzccirCallback'
+projectsZonesClustersCompleteIPRotation
+    :: Text -- ^ 'pzccirZone'
+    -> CompleteIPRotationRequest -- ^ 'pzccirPayload'
+    -> Text -- ^ 'pzccirClusterId'
+    -> Text -- ^ 'pzccirProjectId'
+    -> ProjectsZonesClustersCompleteIPRotation
+projectsZonesClustersCompleteIPRotation pPzccirZone_ pPzccirPayload_ pPzccirClusterId_ pPzccirProjectId_ =
+    ProjectsZonesClustersCompleteIPRotation'
+    { _pzccirXgafv = Nothing
+    , _pzccirUploadProtocol = Nothing
+    , _pzccirAccessToken = Nothing
+    , _pzccirUploadType = Nothing
+    , _pzccirZone = pPzccirZone_
+    , _pzccirPayload = pPzccirPayload_
+    , _pzccirClusterId = pPzccirClusterId_
+    , _pzccirProjectId = pPzccirProjectId_
+    , _pzccirCallback = Nothing
+    }
+
+-- | V1 error format.
+pzccirXgafv :: Lens' ProjectsZonesClustersCompleteIPRotation (Maybe Xgafv)
+pzccirXgafv
+  = lens _pzccirXgafv (\ s a -> s{_pzccirXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzccirUploadProtocol :: Lens' ProjectsZonesClustersCompleteIPRotation (Maybe Text)
+pzccirUploadProtocol
+  = lens _pzccirUploadProtocol
+      (\ s a -> s{_pzccirUploadProtocol = a})
+
+-- | OAuth access token.
+pzccirAccessToken :: Lens' ProjectsZonesClustersCompleteIPRotation (Maybe Text)
+pzccirAccessToken
+  = lens _pzccirAccessToken
+      (\ s a -> s{_pzccirAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzccirUploadType :: Lens' ProjectsZonesClustersCompleteIPRotation (Maybe Text)
+pzccirUploadType
+  = lens _pzccirUploadType
+      (\ s a -> s{_pzccirUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzccirZone :: Lens' ProjectsZonesClustersCompleteIPRotation Text
+pzccirZone
+  = lens _pzccirZone (\ s a -> s{_pzccirZone = a})
+
+-- | Multipart request metadata.
+pzccirPayload :: Lens' ProjectsZonesClustersCompleteIPRotation CompleteIPRotationRequest
+pzccirPayload
+  = lens _pzccirPayload
+      (\ s a -> s{_pzccirPayload = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+pzccirClusterId :: Lens' ProjectsZonesClustersCompleteIPRotation Text
+pzccirClusterId
+  = lens _pzccirClusterId
+      (\ s a -> s{_pzccirClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+pzccirProjectId :: Lens' ProjectsZonesClustersCompleteIPRotation Text
+pzccirProjectId
+  = lens _pzccirProjectId
+      (\ s a -> s{_pzccirProjectId = a})
+
+-- | JSONP
+pzccirCallback :: Lens' ProjectsZonesClustersCompleteIPRotation (Maybe Text)
+pzccirCallback
+  = lens _pzccirCallback
+      (\ s a -> s{_pzccirCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersCompleteIPRotation where
+        type Rs ProjectsZonesClustersCompleteIPRotation =
+             Operation
+        type Scopes ProjectsZonesClustersCompleteIPRotation =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersCompleteIPRotation'{..}
+          = go _pzccirProjectId _pzccirZone _pzccirClusterId
+              _pzccirXgafv
+              _pzccirUploadProtocol
+              _pzccirAccessToken
+              _pzccirUploadType
+              _pzccirCallback
+              (Just AltJSON)
+              _pzccirPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsZonesClustersCompleteIPRotationResource)
+                      mempty
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
@@ -30,7 +30,7 @@
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.create@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.Create
     (
     -- * REST Resource
@@ -43,12 +43,10 @@
     -- * Request Lenses
     , pzccXgafv
     , pzccUploadProtocol
-    , pzccPp
     , pzccAccessToken
     , pzccUploadType
     , pzccZone
     , pzccPayload
-    , pzccBearerToken
     , pzccProjectId
     , pzccCallback
     ) where
@@ -65,16 +63,14 @@
            "zones" :>
              Capture "zone" Text :>
                "clusters" :>
-                 QueryParam "$.xgafv" Text :>
+                 QueryParam "$.xgafv" Xgafv :>
                    QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
-                       QueryParam "access_token" Text :>
-                         QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 ReqBody '[JSON] CreateClusterRequest :>
-                                   Post '[JSON] Operation
+                     QueryParam "access_token" Text :>
+                       QueryParam "uploadType" Text :>
+                         QueryParam "callback" Text :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] CreateClusterRequest :>
+                               Post '[JSON] Operation
 
 -- | Creates a cluster, consisting of the specified number and type of Google
 -- Compute Engine instances. By default, the cluster is created in the
@@ -88,14 +84,12 @@
 --
 -- /See:/ 'projectsZonesClustersCreate' smart constructor.
 data ProjectsZonesClustersCreate = ProjectsZonesClustersCreate'
-    { _pzccXgafv          :: !(Maybe Text)
+    { _pzccXgafv          :: !(Maybe Xgafv)
     , _pzccUploadProtocol :: !(Maybe Text)
-    , _pzccPp             :: !Bool
     , _pzccAccessToken    :: !(Maybe Text)
     , _pzccUploadType     :: !(Maybe Text)
     , _pzccZone           :: !Text
     , _pzccPayload        :: !CreateClusterRequest
-    , _pzccBearerToken    :: !(Maybe Text)
     , _pzccProjectId      :: !Text
     , _pzccCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -108,8 +102,6 @@
 --
 -- * 'pzccUploadProtocol'
 --
--- * 'pzccPp'
---
 -- * 'pzccAccessToken'
 --
 -- * 'pzccUploadType'
@@ -118,8 +110,6 @@
 --
 -- * 'pzccPayload'
 --
--- * 'pzccBearerToken'
---
 -- * 'pzccProjectId'
 --
 -- * 'pzccCallback'
@@ -132,18 +122,16 @@
     ProjectsZonesClustersCreate'
     { _pzccXgafv = Nothing
     , _pzccUploadProtocol = Nothing
-    , _pzccPp = True
     , _pzccAccessToken = Nothing
     , _pzccUploadType = Nothing
     , _pzccZone = pPzccZone_
     , _pzccPayload = pPzccPayload_
-    , _pzccBearerToken = Nothing
     , _pzccProjectId = pPzccProjectId_
     , _pzccCallback = Nothing
     }
 
 -- | V1 error format.
-pzccXgafv :: Lens' ProjectsZonesClustersCreate (Maybe Text)
+pzccXgafv :: Lens' ProjectsZonesClustersCreate (Maybe Xgafv)
 pzccXgafv
   = lens _pzccXgafv (\ s a -> s{_pzccXgafv = a})
 
@@ -153,10 +141,6 @@
   = lens _pzccUploadProtocol
       (\ s a -> s{_pzccUploadProtocol = a})
 
--- | Pretty-print response.
-pzccPp :: Lens' ProjectsZonesClustersCreate Bool
-pzccPp = lens _pzccPp (\ s a -> s{_pzccPp = a})
-
 -- | OAuth access token.
 pzccAccessToken :: Lens' ProjectsZonesClustersCreate (Maybe Text)
 pzccAccessToken
@@ -169,8 +153,9 @@
   = lens _pzccUploadType
       (\ s a -> s{_pzccUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
 pzccZone :: Lens' ProjectsZonesClustersCreate Text
 pzccZone = lens _pzccZone (\ s a -> s{_pzccZone = a})
 
@@ -179,14 +164,9 @@
 pzccPayload
   = lens _pzccPayload (\ s a -> s{_pzccPayload = a})
 
--- | OAuth bearer token.
-pzccBearerToken :: Lens' ProjectsZonesClustersCreate (Maybe Text)
-pzccBearerToken
-  = lens _pzccBearerToken
-      (\ s a -> s{_pzccBearerToken = a})
-
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
 pzccProjectId :: Lens' ProjectsZonesClustersCreate Text
 pzccProjectId
   = lens _pzccProjectId
@@ -205,10 +185,8 @@
         requestClient ProjectsZonesClustersCreate'{..}
           = go _pzccProjectId _pzccZone _pzccXgafv
               _pzccUploadProtocol
-              (Just _pzccPp)
               _pzccAccessToken
               _pzccUploadType
-              _pzccBearerToken
               _pzccCallback
               (Just AltJSON)
               _pzccPayload
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
@@ -26,7 +26,7 @@
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.delete@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
     (
     -- * REST Resource
@@ -39,11 +39,10 @@
     -- * Request Lenses
     , pzcdXgafv
     , pzcdUploadProtocol
-    , pzcdPp
     , pzcdAccessToken
     , pzcdUploadType
     , pzcdZone
-    , pzcdBearerToken
+    , pzcdName
     , pzcdClusterId
     , pzcdProjectId
     , pzcdCallback
@@ -62,15 +61,14 @@
              Capture "zone" Text :>
                "clusters" :>
                  Capture "clusterId" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      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
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "name" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 Delete '[JSON] Operation
 
 -- | Deletes the cluster, including the Kubernetes endpoint and all worker
 -- nodes. Firewalls and routes that were configured during cluster creation
@@ -80,13 +78,12 @@
 --
 -- /See:/ 'projectsZonesClustersDelete' smart constructor.
 data ProjectsZonesClustersDelete = ProjectsZonesClustersDelete'
-    { _pzcdXgafv          :: !(Maybe Text)
+    { _pzcdXgafv          :: !(Maybe Xgafv)
     , _pzcdUploadProtocol :: !(Maybe Text)
-    , _pzcdPp             :: !Bool
     , _pzcdAccessToken    :: !(Maybe Text)
     , _pzcdUploadType     :: !(Maybe Text)
     , _pzcdZone           :: !Text
-    , _pzcdBearerToken    :: !(Maybe Text)
+    , _pzcdName           :: !(Maybe Text)
     , _pzcdClusterId      :: !Text
     , _pzcdProjectId      :: !Text
     , _pzcdCallback       :: !(Maybe Text)
@@ -100,15 +97,13 @@
 --
 -- * 'pzcdUploadProtocol'
 --
--- * 'pzcdPp'
---
 -- * 'pzcdAccessToken'
 --
 -- * 'pzcdUploadType'
 --
 -- * 'pzcdZone'
 --
--- * 'pzcdBearerToken'
+-- * 'pzcdName'
 --
 -- * 'pzcdClusterId'
 --
@@ -124,18 +119,17 @@
     ProjectsZonesClustersDelete'
     { _pzcdXgafv = Nothing
     , _pzcdUploadProtocol = Nothing
-    , _pzcdPp = True
     , _pzcdAccessToken = Nothing
     , _pzcdUploadType = Nothing
     , _pzcdZone = pPzcdZone_
-    , _pzcdBearerToken = Nothing
+    , _pzcdName = Nothing
     , _pzcdClusterId = pPzcdClusterId_
     , _pzcdProjectId = pPzcdProjectId_
     , _pzcdCallback = Nothing
     }
 
 -- | V1 error format.
-pzcdXgafv :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdXgafv :: Lens' ProjectsZonesClustersDelete (Maybe Xgafv)
 pzcdXgafv
   = lens _pzcdXgafv (\ s a -> s{_pzcdXgafv = a})
 
@@ -145,10 +139,6 @@
   = lens _pzcdUploadProtocol
       (\ s a -> s{_pzcdUploadProtocol = a})
 
--- | Pretty-print response.
-pzcdPp :: Lens' ProjectsZonesClustersDelete Bool
-pzcdPp = lens _pzcdPp (\ s a -> s{_pzcdPp = a})
-
 -- | OAuth access token.
 pzcdAccessToken :: Lens' ProjectsZonesClustersDelete (Maybe Text)
 pzcdAccessToken
@@ -161,25 +151,27 @@
   = lens _pzcdUploadType
       (\ s a -> s{_pzcdUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcdZone :: Lens' ProjectsZonesClustersDelete Text
 pzcdZone = lens _pzcdZone (\ s a -> s{_pzcdZone = a})
 
--- | OAuth bearer token.
-pzcdBearerToken :: Lens' ProjectsZonesClustersDelete (Maybe Text)
-pzcdBearerToken
-  = lens _pzcdBearerToken
-      (\ s a -> s{_pzcdBearerToken = a})
+-- | The name (project, location, cluster) of the cluster to delete.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+pzcdName :: Lens' ProjectsZonesClustersDelete (Maybe Text)
+pzcdName = lens _pzcdName (\ s a -> s{_pzcdName = a})
 
--- | The name of the cluster to delete.
+-- | Deprecated. The name of the cluster to delete. This field has been
+-- deprecated and replaced by the name field.
 pzcdClusterId :: Lens' ProjectsZonesClustersDelete Text
 pzcdClusterId
   = lens _pzcdClusterId
       (\ s a -> s{_pzcdClusterId = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzcdProjectId :: Lens' ProjectsZonesClustersDelete Text
 pzcdProjectId
   = lens _pzcdProjectId
@@ -199,10 +191,9 @@
           = go _pzcdProjectId _pzcdZone _pzcdClusterId
               _pzcdXgafv
               _pzcdUploadProtocol
-              (Just _pzcdPp)
               _pzcdAccessToken
               _pzcdUploadType
-              _pzcdBearerToken
+              _pzcdName
               _pzcdCallback
               (Just AltJSON)
               containerService
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
@@ -22,7 +22,7 @@
 --
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.get@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.Get
     (
     -- * REST Resource
@@ -35,11 +35,10 @@
     -- * Request Lenses
     , pzcgXgafv
     , pzcgUploadProtocol
-    , pzcgPp
     , pzcgAccessToken
     , pzcgUploadType
     , pzcgZone
-    , pzcgBearerToken
+    , pzcgName
     , pzcgClusterId
     , pzcgProjectId
     , pzcgCallback
@@ -58,26 +57,24 @@
              Capture "zone" Text :>
                "clusters" :>
                  Capture "clusterId" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :> Get '[JSON] Cluster
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "name" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :> Get '[JSON] Cluster
 
 -- | Gets the details of a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersGet' smart constructor.
 data ProjectsZonesClustersGet = ProjectsZonesClustersGet'
-    { _pzcgXgafv          :: !(Maybe Text)
+    { _pzcgXgafv          :: !(Maybe Xgafv)
     , _pzcgUploadProtocol :: !(Maybe Text)
-    , _pzcgPp             :: !Bool
     , _pzcgAccessToken    :: !(Maybe Text)
     , _pzcgUploadType     :: !(Maybe Text)
     , _pzcgZone           :: !Text
-    , _pzcgBearerToken    :: !(Maybe Text)
+    , _pzcgName           :: !(Maybe Text)
     , _pzcgClusterId      :: !Text
     , _pzcgProjectId      :: !Text
     , _pzcgCallback       :: !(Maybe Text)
@@ -91,15 +88,13 @@
 --
 -- * 'pzcgUploadProtocol'
 --
--- * 'pzcgPp'
---
 -- * 'pzcgAccessToken'
 --
 -- * 'pzcgUploadType'
 --
 -- * 'pzcgZone'
 --
--- * 'pzcgBearerToken'
+-- * 'pzcgName'
 --
 -- * 'pzcgClusterId'
 --
@@ -115,18 +110,17 @@
     ProjectsZonesClustersGet'
     { _pzcgXgafv = Nothing
     , _pzcgUploadProtocol = Nothing
-    , _pzcgPp = True
     , _pzcgAccessToken = Nothing
     , _pzcgUploadType = Nothing
     , _pzcgZone = pPzcgZone_
-    , _pzcgBearerToken = Nothing
+    , _pzcgName = Nothing
     , _pzcgClusterId = pPzcgClusterId_
     , _pzcgProjectId = pPzcgProjectId_
     , _pzcgCallback = Nothing
     }
 
 -- | V1 error format.
-pzcgXgafv :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgXgafv :: Lens' ProjectsZonesClustersGet (Maybe Xgafv)
 pzcgXgafv
   = lens _pzcgXgafv (\ s a -> s{_pzcgXgafv = a})
 
@@ -136,10 +130,6 @@
   = lens _pzcgUploadProtocol
       (\ s a -> s{_pzcgUploadProtocol = a})
 
--- | Pretty-print response.
-pzcgPp :: Lens' ProjectsZonesClustersGet Bool
-pzcgPp = lens _pzcgPp (\ s a -> s{_pzcgPp = a})
-
 -- | OAuth access token.
 pzcgAccessToken :: Lens' ProjectsZonesClustersGet (Maybe Text)
 pzcgAccessToken
@@ -152,25 +142,27 @@
   = lens _pzcgUploadType
       (\ s a -> s{_pzcgUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcgZone :: Lens' ProjectsZonesClustersGet Text
 pzcgZone = lens _pzcgZone (\ s a -> s{_pzcgZone = a})
 
--- | OAuth bearer token.
-pzcgBearerToken :: Lens' ProjectsZonesClustersGet (Maybe Text)
-pzcgBearerToken
-  = lens _pzcgBearerToken
-      (\ s a -> s{_pzcgBearerToken = a})
+-- | The name (project, location, cluster) of the cluster to retrieve.
+-- Specified in the format \'projects\/*\/locations\/*\/clusters\/*\'.
+pzcgName :: Lens' ProjectsZonesClustersGet (Maybe Text)
+pzcgName = lens _pzcgName (\ s a -> s{_pzcgName = a})
 
--- | The name of the cluster to retrieve.
+-- | Deprecated. The name of the cluster to retrieve. This field has been
+-- deprecated and replaced by the name field.
 pzcgClusterId :: Lens' ProjectsZonesClustersGet Text
 pzcgClusterId
   = lens _pzcgClusterId
       (\ s a -> s{_pzcgClusterId = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzcgProjectId :: Lens' ProjectsZonesClustersGet Text
 pzcgProjectId
   = lens _pzcgProjectId
@@ -189,10 +181,9 @@
           = go _pzcgProjectId _pzcgZone _pzcgClusterId
               _pzcgXgafv
               _pzcgUploadProtocol
-              (Just _pzcgPp)
               _pzcgAccessToken
               _pzcgUploadType
-              _pzcgBearerToken
+              _pzcgName
               _pzcgCallback
               (Just AltJSON)
               containerService
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/LegacyAbac.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.LegacyAbac
+-- 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)
+--
+-- Enables or disables the ABAC authorization mechanism on a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.legacyAbac@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.LegacyAbac
+    (
+    -- * REST Resource
+      ProjectsZonesClustersLegacyAbacResource
+
+    -- * Creating a Request
+    , projectsZonesClustersLegacyAbac
+    , ProjectsZonesClustersLegacyAbac
+
+    -- * Request Lenses
+    , pzclaXgafv
+    , pzclaUploadProtocol
+    , pzclaAccessToken
+    , pzclaUploadType
+    , pzclaZone
+    , pzclaPayload
+    , pzclaClusterId
+    , pzclaProjectId
+    , pzclaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.legacyAbac@ method which the
+-- 'ProjectsZonesClustersLegacyAbac' request conforms to.
+type ProjectsZonesClustersLegacyAbacResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "legacyAbac" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] SetLegacyAbacRequest :>
+                                   Post '[JSON] Operation
+
+-- | Enables or disables the ABAC authorization mechanism on a cluster.
+--
+-- /See:/ 'projectsZonesClustersLegacyAbac' smart constructor.
+data ProjectsZonesClustersLegacyAbac = ProjectsZonesClustersLegacyAbac'
+    { _pzclaXgafv          :: !(Maybe Xgafv)
+    , _pzclaUploadProtocol :: !(Maybe Text)
+    , _pzclaAccessToken    :: !(Maybe Text)
+    , _pzclaUploadType     :: !(Maybe Text)
+    , _pzclaZone           :: !Text
+    , _pzclaPayload        :: !SetLegacyAbacRequest
+    , _pzclaClusterId      :: !Text
+    , _pzclaProjectId      :: !Text
+    , _pzclaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersLegacyAbac' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzclaXgafv'
+--
+-- * 'pzclaUploadProtocol'
+--
+-- * 'pzclaAccessToken'
+--
+-- * 'pzclaUploadType'
+--
+-- * 'pzclaZone'
+--
+-- * 'pzclaPayload'
+--
+-- * 'pzclaClusterId'
+--
+-- * 'pzclaProjectId'
+--
+-- * 'pzclaCallback'
+projectsZonesClustersLegacyAbac
+    :: Text -- ^ 'pzclaZone'
+    -> SetLegacyAbacRequest -- ^ 'pzclaPayload'
+    -> Text -- ^ 'pzclaClusterId'
+    -> Text -- ^ 'pzclaProjectId'
+    -> ProjectsZonesClustersLegacyAbac
+projectsZonesClustersLegacyAbac pPzclaZone_ pPzclaPayload_ pPzclaClusterId_ pPzclaProjectId_ =
+    ProjectsZonesClustersLegacyAbac'
+    { _pzclaXgafv = Nothing
+    , _pzclaUploadProtocol = Nothing
+    , _pzclaAccessToken = Nothing
+    , _pzclaUploadType = Nothing
+    , _pzclaZone = pPzclaZone_
+    , _pzclaPayload = pPzclaPayload_
+    , _pzclaClusterId = pPzclaClusterId_
+    , _pzclaProjectId = pPzclaProjectId_
+    , _pzclaCallback = Nothing
+    }
+
+-- | V1 error format.
+pzclaXgafv :: Lens' ProjectsZonesClustersLegacyAbac (Maybe Xgafv)
+pzclaXgafv
+  = lens _pzclaXgafv (\ s a -> s{_pzclaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzclaUploadProtocol :: Lens' ProjectsZonesClustersLegacyAbac (Maybe Text)
+pzclaUploadProtocol
+  = lens _pzclaUploadProtocol
+      (\ s a -> s{_pzclaUploadProtocol = a})
+
+-- | OAuth access token.
+pzclaAccessToken :: Lens' ProjectsZonesClustersLegacyAbac (Maybe Text)
+pzclaAccessToken
+  = lens _pzclaAccessToken
+      (\ s a -> s{_pzclaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzclaUploadType :: Lens' ProjectsZonesClustersLegacyAbac (Maybe Text)
+pzclaUploadType
+  = lens _pzclaUploadType
+      (\ s a -> s{_pzclaUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzclaZone :: Lens' ProjectsZonesClustersLegacyAbac Text
+pzclaZone
+  = lens _pzclaZone (\ s a -> s{_pzclaZone = a})
+
+-- | Multipart request metadata.
+pzclaPayload :: Lens' ProjectsZonesClustersLegacyAbac SetLegacyAbacRequest
+pzclaPayload
+  = lens _pzclaPayload (\ s a -> s{_pzclaPayload = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+pzclaClusterId :: Lens' ProjectsZonesClustersLegacyAbac Text
+pzclaClusterId
+  = lens _pzclaClusterId
+      (\ s a -> s{_pzclaClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzclaProjectId :: Lens' ProjectsZonesClustersLegacyAbac Text
+pzclaProjectId
+  = lens _pzclaProjectId
+      (\ s a -> s{_pzclaProjectId = a})
+
+-- | JSONP
+pzclaCallback :: Lens' ProjectsZonesClustersLegacyAbac (Maybe Text)
+pzclaCallback
+  = lens _pzclaCallback
+      (\ s a -> s{_pzclaCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersLegacyAbac where
+        type Rs ProjectsZonesClustersLegacyAbac = Operation
+        type Scopes ProjectsZonesClustersLegacyAbac =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersLegacyAbac'{..}
+          = go _pzclaProjectId _pzclaZone _pzclaClusterId
+              _pzclaXgafv
+              _pzclaUploadProtocol
+              _pzclaAccessToken
+              _pzclaUploadType
+              _pzclaCallback
+              (Just AltJSON)
+              _pzclaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersLegacyAbacResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/List.hs
@@ -23,7 +23,7 @@
 -- Lists all clusters owned by a project in either the specified zone or
 -- all zones.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.list@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.list@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.List
     (
     -- * REST Resource
@@ -34,15 +34,14 @@
     , ProjectsZonesClustersList
 
     -- * Request Lenses
-    , pzclXgafv
-    , pzclUploadProtocol
-    , pzclPp
-    , pzclAccessToken
-    , pzclUploadType
-    , pzclZone
-    , pzclBearerToken
-    , pzclProjectId
-    , pzclCallback
+    , proParent
+    , proXgafv
+    , proUploadProtocol
+    , proAccessToken
+    , proUploadType
+    , proZone
+    , proProjectId
+    , proCallback
     ) where
 
 import           Network.Google.Container.Types
@@ -57,120 +56,112 @@
            "zones" :>
              Capture "zone" Text :>
                "clusters" :>
-                 QueryParam "$.xgafv" Text :>
-                   QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
+                 QueryParam "parent" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
                        QueryParam "access_token" Text :>
                          QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 Get '[JSON] ListClustersResponse
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] ListClustersResponse
 
 -- | Lists all clusters owned by a project in either the specified zone or
 -- all zones.
 --
 -- /See:/ 'projectsZonesClustersList' smart constructor.
 data ProjectsZonesClustersList = ProjectsZonesClustersList'
-    { _pzclXgafv          :: !(Maybe Text)
-    , _pzclUploadProtocol :: !(Maybe Text)
-    , _pzclPp             :: !Bool
-    , _pzclAccessToken    :: !(Maybe Text)
-    , _pzclUploadType     :: !(Maybe Text)
-    , _pzclZone           :: !Text
-    , _pzclBearerToken    :: !(Maybe Text)
-    , _pzclProjectId      :: !Text
-    , _pzclCallback       :: !(Maybe Text)
+    { _proParent         :: !(Maybe Text)
+    , _proXgafv          :: !(Maybe Xgafv)
+    , _proUploadProtocol :: !(Maybe Text)
+    , _proAccessToken    :: !(Maybe Text)
+    , _proUploadType     :: !(Maybe Text)
+    , _proZone           :: !Text
+    , _proProjectId      :: !Text
+    , _proCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'ProjectsZonesClustersList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'pzclXgafv'
---
--- * 'pzclUploadProtocol'
+-- * 'proParent'
 --
--- * 'pzclPp'
+-- * 'proXgafv'
 --
--- * 'pzclAccessToken'
+-- * 'proUploadProtocol'
 --
--- * 'pzclUploadType'
+-- * 'proAccessToken'
 --
--- * 'pzclZone'
+-- * 'proUploadType'
 --
--- * 'pzclBearerToken'
+-- * 'proZone'
 --
--- * 'pzclProjectId'
+-- * 'proProjectId'
 --
--- * 'pzclCallback'
+-- * 'proCallback'
 projectsZonesClustersList
-    :: Text -- ^ 'pzclZone'
-    -> Text -- ^ 'pzclProjectId'
+    :: Text -- ^ 'proZone'
+    -> Text -- ^ 'proProjectId'
     -> ProjectsZonesClustersList
-projectsZonesClustersList pPzclZone_ pPzclProjectId_ =
+projectsZonesClustersList pProZone_ pProProjectId_ =
     ProjectsZonesClustersList'
-    { _pzclXgafv = Nothing
-    , _pzclUploadProtocol = Nothing
-    , _pzclPp = True
-    , _pzclAccessToken = Nothing
-    , _pzclUploadType = Nothing
-    , _pzclZone = pPzclZone_
-    , _pzclBearerToken = Nothing
-    , _pzclProjectId = pPzclProjectId_
-    , _pzclCallback = Nothing
+    { _proParent = Nothing
+    , _proXgafv = Nothing
+    , _proUploadProtocol = Nothing
+    , _proAccessToken = Nothing
+    , _proUploadType = Nothing
+    , _proZone = pProZone_
+    , _proProjectId = pProProjectId_
+    , _proCallback = Nothing
     }
 
+-- | The parent (project and location) where the clusters will be listed.
+-- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
+-- matches all zones and all regions.
+proParent :: Lens' ProjectsZonesClustersList (Maybe Text)
+proParent
+  = lens _proParent (\ s a -> s{_proParent = a})
+
 -- | V1 error format.
-pzclXgafv :: Lens' ProjectsZonesClustersList (Maybe Text)
-pzclXgafv
-  = lens _pzclXgafv (\ s a -> s{_pzclXgafv = a})
+proXgafv :: Lens' ProjectsZonesClustersList (Maybe Xgafv)
+proXgafv = lens _proXgafv (\ s a -> s{_proXgafv = a})
 
 -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
-pzclUploadProtocol :: Lens' ProjectsZonesClustersList (Maybe Text)
-pzclUploadProtocol
-  = lens _pzclUploadProtocol
-      (\ s a -> s{_pzclUploadProtocol = a})
-
--- | Pretty-print response.
-pzclPp :: Lens' ProjectsZonesClustersList Bool
-pzclPp = lens _pzclPp (\ s a -> s{_pzclPp = a})
+proUploadProtocol :: Lens' ProjectsZonesClustersList (Maybe Text)
+proUploadProtocol
+  = lens _proUploadProtocol
+      (\ s a -> s{_proUploadProtocol = a})
 
 -- | OAuth access token.
-pzclAccessToken :: Lens' ProjectsZonesClustersList (Maybe Text)
-pzclAccessToken
-  = lens _pzclAccessToken
-      (\ s a -> s{_pzclAccessToken = a})
+proAccessToken :: Lens' ProjectsZonesClustersList (Maybe Text)
+proAccessToken
+  = lens _proAccessToken
+      (\ s a -> s{_proAccessToken = a})
 
 -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
-pzclUploadType :: Lens' ProjectsZonesClustersList (Maybe Text)
-pzclUploadType
-  = lens _pzclUploadType
-      (\ s a -> s{_pzclUploadType = a})
+proUploadType :: Lens' ProjectsZonesClustersList (Maybe Text)
+proUploadType
+  = lens _proUploadType
+      (\ s a -> s{_proUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides,
--- or \"-\" for all zones.
-pzclZone :: Lens' ProjectsZonesClustersList Text
-pzclZone = lens _pzclZone (\ s a -> s{_pzclZone = a})
-
--- | OAuth bearer token.
-pzclBearerToken :: Lens' ProjectsZonesClustersList (Maybe Text)
-pzclBearerToken
-  = lens _pzclBearerToken
-      (\ s a -> s{_pzclBearerToken = a})
+-- or \"-\" for all zones. This field has been deprecated and replaced by
+-- the parent field.
+proZone :: Lens' ProjectsZonesClustersList Text
+proZone = lens _proZone (\ s a -> s{_proZone = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
-pzclProjectId :: Lens' ProjectsZonesClustersList Text
-pzclProjectId
-  = lens _pzclProjectId
-      (\ s a -> s{_pzclProjectId = a})
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
+proProjectId :: Lens' ProjectsZonesClustersList Text
+proProjectId
+  = lens _proProjectId (\ s a -> s{_proProjectId = a})
 
 -- | JSONP
-pzclCallback :: Lens' ProjectsZonesClustersList (Maybe Text)
-pzclCallback
-  = lens _pzclCallback (\ s a -> s{_pzclCallback = a})
+proCallback :: Lens' ProjectsZonesClustersList (Maybe Text)
+proCallback
+  = lens _proCallback (\ s a -> s{_proCallback = a})
 
 instance GoogleRequest ProjectsZonesClustersList
          where
@@ -179,13 +170,11 @@
         type Scopes ProjectsZonesClustersList =
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsZonesClustersList'{..}
-          = go _pzclProjectId _pzclZone _pzclXgafv
-              _pzclUploadProtocol
-              (Just _pzclPp)
-              _pzclAccessToken
-              _pzclUploadType
-              _pzclBearerToken
-              _pzclCallback
+          = go _proProjectId _proZone _proParent _proXgafv
+              _proUploadProtocol
+              _proAccessToken
+              _proUploadType
+              _proCallback
               (Just AltJSON)
               containerService
           where go
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Locations.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.Locations
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the locations for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.locations@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Locations
+    (
+    -- * REST Resource
+      ProjectsZonesClustersLocationsResource
+
+    -- * Creating a Request
+    , projectsZonesClustersLocations
+    , ProjectsZonesClustersLocations
+
+    -- * Request Lenses
+    , pXgafv
+    , pUploadProtocol
+    , pAccessToken
+    , pUploadType
+    , pZone
+    , pPayload
+    , pClusterId
+    , pProjectId
+    , pCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.locations@ method which the
+-- 'ProjectsZonesClustersLocations' request conforms to.
+type ProjectsZonesClustersLocationsResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "locations" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] SetLocationsRequest :>
+                                   Post '[JSON] Operation
+
+-- | Sets the locations for a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersLocations' smart constructor.
+data ProjectsZonesClustersLocations = ProjectsZonesClustersLocations'
+    { _pXgafv          :: !(Maybe Xgafv)
+    , _pUploadProtocol :: !(Maybe Text)
+    , _pAccessToken    :: !(Maybe Text)
+    , _pUploadType     :: !(Maybe Text)
+    , _pZone           :: !Text
+    , _pPayload        :: !SetLocationsRequest
+    , _pClusterId      :: !Text
+    , _pProjectId      :: !Text
+    , _pCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersLocations' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pXgafv'
+--
+-- * 'pUploadProtocol'
+--
+-- * 'pAccessToken'
+--
+-- * 'pUploadType'
+--
+-- * 'pZone'
+--
+-- * 'pPayload'
+--
+-- * 'pClusterId'
+--
+-- * 'pProjectId'
+--
+-- * 'pCallback'
+projectsZonesClustersLocations
+    :: Text -- ^ 'pZone'
+    -> SetLocationsRequest -- ^ 'pPayload'
+    -> Text -- ^ 'pClusterId'
+    -> Text -- ^ 'pProjectId'
+    -> ProjectsZonesClustersLocations
+projectsZonesClustersLocations pPZone_ pPPayload_ pPClusterId_ pPProjectId_ =
+    ProjectsZonesClustersLocations'
+    { _pXgafv = Nothing
+    , _pUploadProtocol = Nothing
+    , _pAccessToken = Nothing
+    , _pUploadType = Nothing
+    , _pZone = pPZone_
+    , _pPayload = pPPayload_
+    , _pClusterId = pPClusterId_
+    , _pProjectId = pPProjectId_
+    , _pCallback = Nothing
+    }
+
+-- | V1 error format.
+pXgafv :: Lens' ProjectsZonesClustersLocations (Maybe Xgafv)
+pXgafv = lens _pXgafv (\ s a -> s{_pXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pUploadProtocol :: Lens' ProjectsZonesClustersLocations (Maybe Text)
+pUploadProtocol
+  = lens _pUploadProtocol
+      (\ s a -> s{_pUploadProtocol = a})
+
+-- | OAuth access token.
+pAccessToken :: Lens' ProjectsZonesClustersLocations (Maybe Text)
+pAccessToken
+  = lens _pAccessToken (\ s a -> s{_pAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pUploadType :: Lens' ProjectsZonesClustersLocations (Maybe Text)
+pUploadType
+  = lens _pUploadType (\ s a -> s{_pUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pZone :: Lens' ProjectsZonesClustersLocations Text
+pZone = lens _pZone (\ s a -> s{_pZone = a})
+
+-- | Multipart request metadata.
+pPayload :: Lens' ProjectsZonesClustersLocations SetLocationsRequest
+pPayload = lens _pPayload (\ s a -> s{_pPayload = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pClusterId :: Lens' ProjectsZonesClustersLocations Text
+pClusterId
+  = lens _pClusterId (\ s a -> s{_pClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pProjectId :: Lens' ProjectsZonesClustersLocations Text
+pProjectId
+  = lens _pProjectId (\ s a -> s{_pProjectId = a})
+
+-- | JSONP
+pCallback :: Lens' ProjectsZonesClustersLocations (Maybe Text)
+pCallback
+  = lens _pCallback (\ s a -> s{_pCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersLocations
+         where
+        type Rs ProjectsZonesClustersLocations = Operation
+        type Scopes ProjectsZonesClustersLocations =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersLocations'{..}
+          = go _pProjectId _pZone _pClusterId _pXgafv
+              _pUploadProtocol
+              _pAccessToken
+              _pUploadType
+              _pCallback
+              (Just AltJSON)
+              _pPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersLocationsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Logging.hs
@@ -0,0 +1,197 @@
+{-# 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.Logging
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the logging service for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.logging@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Logging
+    (
+    -- * REST Resource
+      ProjectsZonesClustersLoggingResource
+
+    -- * Creating a Request
+    , projectsZonesClustersLogging
+    , ProjectsZonesClustersLogging
+
+    -- * Request Lenses
+    , pzclXgafv
+    , pzclUploadProtocol
+    , pzclAccessToken
+    , pzclUploadType
+    , pzclZone
+    , pzclPayload
+    , pzclClusterId
+    , pzclProjectId
+    , pzclCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.logging@ method which the
+-- 'ProjectsZonesClustersLogging' request conforms to.
+type ProjectsZonesClustersLoggingResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "logging" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] SetLoggingServiceRequest :>
+                                   Post '[JSON] Operation
+
+-- | Sets the logging service for a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersLogging' smart constructor.
+data ProjectsZonesClustersLogging = ProjectsZonesClustersLogging'
+    { _pzclXgafv          :: !(Maybe Xgafv)
+    , _pzclUploadProtocol :: !(Maybe Text)
+    , _pzclAccessToken    :: !(Maybe Text)
+    , _pzclUploadType     :: !(Maybe Text)
+    , _pzclZone           :: !Text
+    , _pzclPayload        :: !SetLoggingServiceRequest
+    , _pzclClusterId      :: !Text
+    , _pzclProjectId      :: !Text
+    , _pzclCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersLogging' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzclXgafv'
+--
+-- * 'pzclUploadProtocol'
+--
+-- * 'pzclAccessToken'
+--
+-- * 'pzclUploadType'
+--
+-- * 'pzclZone'
+--
+-- * 'pzclPayload'
+--
+-- * 'pzclClusterId'
+--
+-- * 'pzclProjectId'
+--
+-- * 'pzclCallback'
+projectsZonesClustersLogging
+    :: Text -- ^ 'pzclZone'
+    -> SetLoggingServiceRequest -- ^ 'pzclPayload'
+    -> Text -- ^ 'pzclClusterId'
+    -> Text -- ^ 'pzclProjectId'
+    -> ProjectsZonesClustersLogging
+projectsZonesClustersLogging pPzclZone_ pPzclPayload_ pPzclClusterId_ pPzclProjectId_ =
+    ProjectsZonesClustersLogging'
+    { _pzclXgafv = Nothing
+    , _pzclUploadProtocol = Nothing
+    , _pzclAccessToken = Nothing
+    , _pzclUploadType = Nothing
+    , _pzclZone = pPzclZone_
+    , _pzclPayload = pPzclPayload_
+    , _pzclClusterId = pPzclClusterId_
+    , _pzclProjectId = pPzclProjectId_
+    , _pzclCallback = Nothing
+    }
+
+-- | V1 error format.
+pzclXgafv :: Lens' ProjectsZonesClustersLogging (Maybe Xgafv)
+pzclXgafv
+  = lens _pzclXgafv (\ s a -> s{_pzclXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzclUploadProtocol :: Lens' ProjectsZonesClustersLogging (Maybe Text)
+pzclUploadProtocol
+  = lens _pzclUploadProtocol
+      (\ s a -> s{_pzclUploadProtocol = a})
+
+-- | OAuth access token.
+pzclAccessToken :: Lens' ProjectsZonesClustersLogging (Maybe Text)
+pzclAccessToken
+  = lens _pzclAccessToken
+      (\ s a -> s{_pzclAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzclUploadType :: Lens' ProjectsZonesClustersLogging (Maybe Text)
+pzclUploadType
+  = lens _pzclUploadType
+      (\ s a -> s{_pzclUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzclZone :: Lens' ProjectsZonesClustersLogging Text
+pzclZone = lens _pzclZone (\ s a -> s{_pzclZone = a})
+
+-- | Multipart request metadata.
+pzclPayload :: Lens' ProjectsZonesClustersLogging SetLoggingServiceRequest
+pzclPayload
+  = lens _pzclPayload (\ s a -> s{_pzclPayload = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzclClusterId :: Lens' ProjectsZonesClustersLogging Text
+pzclClusterId
+  = lens _pzclClusterId
+      (\ s a -> s{_pzclClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzclProjectId :: Lens' ProjectsZonesClustersLogging Text
+pzclProjectId
+  = lens _pzclProjectId
+      (\ s a -> s{_pzclProjectId = a})
+
+-- | JSONP
+pzclCallback :: Lens' ProjectsZonesClustersLogging (Maybe Text)
+pzclCallback
+  = lens _pzclCallback (\ s a -> s{_pzclCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersLogging
+         where
+        type Rs ProjectsZonesClustersLogging = Operation
+        type Scopes ProjectsZonesClustersLogging =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersLogging'{..}
+          = go _pzclProjectId _pzclZone _pzclClusterId
+              _pzclXgafv
+              _pzclUploadProtocol
+              _pzclAccessToken
+              _pzclUploadType
+              _pzclCallback
+              (Just AltJSON)
+              _pzclPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersLoggingResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Master.hs
@@ -0,0 +1,197 @@
+{-# 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.Master
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the master for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.master@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Master
+    (
+    -- * REST Resource
+      ProjectsZonesClustersMasterResource
+
+    -- * Creating a Request
+    , projectsZonesClustersMaster
+    , ProjectsZonesClustersMaster
+
+    -- * Request Lenses
+    , pzcmXgafv
+    , pzcmUploadProtocol
+    , pzcmAccessToken
+    , pzcmUploadType
+    , pzcmZone
+    , pzcmPayload
+    , pzcmClusterId
+    , pzcmProjectId
+    , pzcmCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.master@ method which the
+-- 'ProjectsZonesClustersMaster' request conforms to.
+type ProjectsZonesClustersMasterResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "master" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] UpdateMasterRequest :>
+                                   Post '[JSON] Operation
+
+-- | Updates the master for a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersMaster' smart constructor.
+data ProjectsZonesClustersMaster = ProjectsZonesClustersMaster'
+    { _pzcmXgafv          :: !(Maybe Xgafv)
+    , _pzcmUploadProtocol :: !(Maybe Text)
+    , _pzcmAccessToken    :: !(Maybe Text)
+    , _pzcmUploadType     :: !(Maybe Text)
+    , _pzcmZone           :: !Text
+    , _pzcmPayload        :: !UpdateMasterRequest
+    , _pzcmClusterId      :: !Text
+    , _pzcmProjectId      :: !Text
+    , _pzcmCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersMaster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcmXgafv'
+--
+-- * 'pzcmUploadProtocol'
+--
+-- * 'pzcmAccessToken'
+--
+-- * 'pzcmUploadType'
+--
+-- * 'pzcmZone'
+--
+-- * 'pzcmPayload'
+--
+-- * 'pzcmClusterId'
+--
+-- * 'pzcmProjectId'
+--
+-- * 'pzcmCallback'
+projectsZonesClustersMaster
+    :: Text -- ^ 'pzcmZone'
+    -> UpdateMasterRequest -- ^ 'pzcmPayload'
+    -> Text -- ^ 'pzcmClusterId'
+    -> Text -- ^ 'pzcmProjectId'
+    -> ProjectsZonesClustersMaster
+projectsZonesClustersMaster pPzcmZone_ pPzcmPayload_ pPzcmClusterId_ pPzcmProjectId_ =
+    ProjectsZonesClustersMaster'
+    { _pzcmXgafv = Nothing
+    , _pzcmUploadProtocol = Nothing
+    , _pzcmAccessToken = Nothing
+    , _pzcmUploadType = Nothing
+    , _pzcmZone = pPzcmZone_
+    , _pzcmPayload = pPzcmPayload_
+    , _pzcmClusterId = pPzcmClusterId_
+    , _pzcmProjectId = pPzcmProjectId_
+    , _pzcmCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcmXgafv :: Lens' ProjectsZonesClustersMaster (Maybe Xgafv)
+pzcmXgafv
+  = lens _pzcmXgafv (\ s a -> s{_pzcmXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcmUploadProtocol :: Lens' ProjectsZonesClustersMaster (Maybe Text)
+pzcmUploadProtocol
+  = lens _pzcmUploadProtocol
+      (\ s a -> s{_pzcmUploadProtocol = a})
+
+-- | OAuth access token.
+pzcmAccessToken :: Lens' ProjectsZonesClustersMaster (Maybe Text)
+pzcmAccessToken
+  = lens _pzcmAccessToken
+      (\ s a -> s{_pzcmAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcmUploadType :: Lens' ProjectsZonesClustersMaster (Maybe Text)
+pzcmUploadType
+  = lens _pzcmUploadType
+      (\ s a -> s{_pzcmUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcmZone :: Lens' ProjectsZonesClustersMaster Text
+pzcmZone = lens _pzcmZone (\ s a -> s{_pzcmZone = a})
+
+-- | Multipart request metadata.
+pzcmPayload :: Lens' ProjectsZonesClustersMaster UpdateMasterRequest
+pzcmPayload
+  = lens _pzcmPayload (\ s a -> s{_pzcmPayload = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcmClusterId :: Lens' ProjectsZonesClustersMaster Text
+pzcmClusterId
+  = lens _pzcmClusterId
+      (\ s a -> s{_pzcmClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcmProjectId :: Lens' ProjectsZonesClustersMaster Text
+pzcmProjectId
+  = lens _pzcmProjectId
+      (\ s a -> s{_pzcmProjectId = a})
+
+-- | JSONP
+pzcmCallback :: Lens' ProjectsZonesClustersMaster (Maybe Text)
+pzcmCallback
+  = lens _pzcmCallback (\ s a -> s{_pzcmCallback = a})
+
+instance GoogleRequest ProjectsZonesClustersMaster
+         where
+        type Rs ProjectsZonesClustersMaster = Operation
+        type Scopes ProjectsZonesClustersMaster =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersMaster'{..}
+          = go _pzcmProjectId _pzcmZone _pzcmClusterId
+              _pzcmXgafv
+              _pzcmUploadProtocol
+              _pzcmAccessToken
+              _pzcmUploadType
+              _pzcmCallback
+              (Just AltJSON)
+              _pzcmPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ProjectsZonesClustersMasterResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/Monitoring.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.Monitoring
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the monitoring service for a specific cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.monitoring@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.Monitoring
+    (
+    -- * REST Resource
+      ProjectsZonesClustersMonitoringResource
+
+    -- * Creating a Request
+    , projectsZonesClustersMonitoring
+    , ProjectsZonesClustersMonitoring
+
+    -- * Request Lenses
+    , pzcmzXgafv
+    , pzcmzUploadProtocol
+    , pzcmzAccessToken
+    , pzcmzUploadType
+    , pzcmzZone
+    , pzcmzPayload
+    , pzcmzClusterId
+    , pzcmzProjectId
+    , pzcmzCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.monitoring@ method which the
+-- 'ProjectsZonesClustersMonitoring' request conforms to.
+type ProjectsZonesClustersMonitoringResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "monitoring" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] SetMonitoringServiceRequest :>
+                                   Post '[JSON] Operation
+
+-- | Sets the monitoring service for a specific cluster.
+--
+-- /See:/ 'projectsZonesClustersMonitoring' smart constructor.
+data ProjectsZonesClustersMonitoring = ProjectsZonesClustersMonitoring'
+    { _pzcmzXgafv          :: !(Maybe Xgafv)
+    , _pzcmzUploadProtocol :: !(Maybe Text)
+    , _pzcmzAccessToken    :: !(Maybe Text)
+    , _pzcmzUploadType     :: !(Maybe Text)
+    , _pzcmzZone           :: !Text
+    , _pzcmzPayload        :: !SetMonitoringServiceRequest
+    , _pzcmzClusterId      :: !Text
+    , _pzcmzProjectId      :: !Text
+    , _pzcmzCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersMonitoring' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcmzXgafv'
+--
+-- * 'pzcmzUploadProtocol'
+--
+-- * 'pzcmzAccessToken'
+--
+-- * 'pzcmzUploadType'
+--
+-- * 'pzcmzZone'
+--
+-- * 'pzcmzPayload'
+--
+-- * 'pzcmzClusterId'
+--
+-- * 'pzcmzProjectId'
+--
+-- * 'pzcmzCallback'
+projectsZonesClustersMonitoring
+    :: Text -- ^ 'pzcmzZone'
+    -> SetMonitoringServiceRequest -- ^ 'pzcmzPayload'
+    -> Text -- ^ 'pzcmzClusterId'
+    -> Text -- ^ 'pzcmzProjectId'
+    -> ProjectsZonesClustersMonitoring
+projectsZonesClustersMonitoring pPzcmzZone_ pPzcmzPayload_ pPzcmzClusterId_ pPzcmzProjectId_ =
+    ProjectsZonesClustersMonitoring'
+    { _pzcmzXgafv = Nothing
+    , _pzcmzUploadProtocol = Nothing
+    , _pzcmzAccessToken = Nothing
+    , _pzcmzUploadType = Nothing
+    , _pzcmzZone = pPzcmzZone_
+    , _pzcmzPayload = pPzcmzPayload_
+    , _pzcmzClusterId = pPzcmzClusterId_
+    , _pzcmzProjectId = pPzcmzProjectId_
+    , _pzcmzCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcmzXgafv :: Lens' ProjectsZonesClustersMonitoring (Maybe Xgafv)
+pzcmzXgafv
+  = lens _pzcmzXgafv (\ s a -> s{_pzcmzXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcmzUploadProtocol :: Lens' ProjectsZonesClustersMonitoring (Maybe Text)
+pzcmzUploadProtocol
+  = lens _pzcmzUploadProtocol
+      (\ s a -> s{_pzcmzUploadProtocol = a})
+
+-- | OAuth access token.
+pzcmzAccessToken :: Lens' ProjectsZonesClustersMonitoring (Maybe Text)
+pzcmzAccessToken
+  = lens _pzcmzAccessToken
+      (\ s a -> s{_pzcmzAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcmzUploadType :: Lens' ProjectsZonesClustersMonitoring (Maybe Text)
+pzcmzUploadType
+  = lens _pzcmzUploadType
+      (\ s a -> s{_pzcmzUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcmzZone :: Lens' ProjectsZonesClustersMonitoring Text
+pzcmzZone
+  = lens _pzcmzZone (\ s a -> s{_pzcmzZone = a})
+
+-- | Multipart request metadata.
+pzcmzPayload :: Lens' ProjectsZonesClustersMonitoring SetMonitoringServiceRequest
+pzcmzPayload
+  = lens _pzcmzPayload (\ s a -> s{_pzcmzPayload = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcmzClusterId :: Lens' ProjectsZonesClustersMonitoring Text
+pzcmzClusterId
+  = lens _pzcmzClusterId
+      (\ s a -> s{_pzcmzClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcmzProjectId :: Lens' ProjectsZonesClustersMonitoring Text
+pzcmzProjectId
+  = lens _pzcmzProjectId
+      (\ s a -> s{_pzcmzProjectId = a})
+
+-- | JSONP
+pzcmzCallback :: Lens' ProjectsZonesClustersMonitoring (Maybe Text)
+pzcmzCallback
+  = lens _pzcmzCallback
+      (\ s a -> s{_pzcmzCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersMonitoring where
+        type Rs ProjectsZonesClustersMonitoring = Operation
+        type Scopes ProjectsZonesClustersMonitoring =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersMonitoring'{..}
+          = go _pzcmzProjectId _pzcmzZone _pzcmzClusterId
+              _pzcmzXgafv
+              _pzcmzUploadProtocol
+              _pzcmzAccessToken
+              _pzcmzUploadType
+              _pzcmzCallback
+              (Just AltJSON)
+              _pzcmzPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersMonitoringResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Autoscaling.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.Autoscaling
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the autoscaling settings for a specific node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.autoscaling@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Autoscaling
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsAutoscalingResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsAutoscaling
+    , ProjectsZonesClustersNodePoolsAutoscaling
+
+    -- * Request Lenses
+    , pzcnpaXgafv
+    , pzcnpaUploadProtocol
+    , pzcnpaAccessToken
+    , pzcnpaUploadType
+    , pzcnpaZone
+    , pzcnpaPayload
+    , pzcnpaNodePoolId
+    , pzcnpaClusterId
+    , pzcnpaProjectId
+    , pzcnpaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.autoscaling@ method which the
+-- 'ProjectsZonesClustersNodePoolsAutoscaling' request conforms to.
+type ProjectsZonesClustersNodePoolsAutoscalingResource
+     =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     Capture "nodePoolId" Text :>
+                       "autoscaling" :>
+                         QueryParam "$.xgafv" Xgafv :>
+                           QueryParam "upload_protocol" Text :>
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     ReqBody '[JSON]
+                                       SetNodePoolAutoscalingRequest
+                                       :> Post '[JSON] Operation
+
+-- | Sets the autoscaling settings for a specific node pool.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsAutoscaling' smart constructor.
+data ProjectsZonesClustersNodePoolsAutoscaling = ProjectsZonesClustersNodePoolsAutoscaling'
+    { _pzcnpaXgafv          :: !(Maybe Xgafv)
+    , _pzcnpaUploadProtocol :: !(Maybe Text)
+    , _pzcnpaAccessToken    :: !(Maybe Text)
+    , _pzcnpaUploadType     :: !(Maybe Text)
+    , _pzcnpaZone           :: !Text
+    , _pzcnpaPayload        :: !SetNodePoolAutoscalingRequest
+    , _pzcnpaNodePoolId     :: !Text
+    , _pzcnpaClusterId      :: !Text
+    , _pzcnpaProjectId      :: !Text
+    , _pzcnpaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsAutoscaling' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpaXgafv'
+--
+-- * 'pzcnpaUploadProtocol'
+--
+-- * 'pzcnpaAccessToken'
+--
+-- * 'pzcnpaUploadType'
+--
+-- * 'pzcnpaZone'
+--
+-- * 'pzcnpaPayload'
+--
+-- * 'pzcnpaNodePoolId'
+--
+-- * 'pzcnpaClusterId'
+--
+-- * 'pzcnpaProjectId'
+--
+-- * 'pzcnpaCallback'
+projectsZonesClustersNodePoolsAutoscaling
+    :: Text -- ^ 'pzcnpaZone'
+    -> SetNodePoolAutoscalingRequest -- ^ 'pzcnpaPayload'
+    -> Text -- ^ 'pzcnpaNodePoolId'
+    -> Text -- ^ 'pzcnpaClusterId'
+    -> Text -- ^ 'pzcnpaProjectId'
+    -> ProjectsZonesClustersNodePoolsAutoscaling
+projectsZonesClustersNodePoolsAutoscaling pPzcnpaZone_ pPzcnpaPayload_ pPzcnpaNodePoolId_ pPzcnpaClusterId_ pPzcnpaProjectId_ =
+    ProjectsZonesClustersNodePoolsAutoscaling'
+    { _pzcnpaXgafv = Nothing
+    , _pzcnpaUploadProtocol = Nothing
+    , _pzcnpaAccessToken = Nothing
+    , _pzcnpaUploadType = Nothing
+    , _pzcnpaZone = pPzcnpaZone_
+    , _pzcnpaPayload = pPzcnpaPayload_
+    , _pzcnpaNodePoolId = pPzcnpaNodePoolId_
+    , _pzcnpaClusterId = pPzcnpaClusterId_
+    , _pzcnpaProjectId = pPzcnpaProjectId_
+    , _pzcnpaCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpaXgafv :: Lens' ProjectsZonesClustersNodePoolsAutoscaling (Maybe Xgafv)
+pzcnpaXgafv
+  = lens _pzcnpaXgafv (\ s a -> s{_pzcnpaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpaUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsAutoscaling (Maybe Text)
+pzcnpaUploadProtocol
+  = lens _pzcnpaUploadProtocol
+      (\ s a -> s{_pzcnpaUploadProtocol = a})
+
+-- | OAuth access token.
+pzcnpaAccessToken :: Lens' ProjectsZonesClustersNodePoolsAutoscaling (Maybe Text)
+pzcnpaAccessToken
+  = lens _pzcnpaAccessToken
+      (\ s a -> s{_pzcnpaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpaUploadType :: Lens' ProjectsZonesClustersNodePoolsAutoscaling (Maybe Text)
+pzcnpaUploadType
+  = lens _pzcnpaUploadType
+      (\ s a -> s{_pzcnpaUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcnpaZone :: Lens' ProjectsZonesClustersNodePoolsAutoscaling Text
+pzcnpaZone
+  = lens _pzcnpaZone (\ s a -> s{_pzcnpaZone = a})
+
+-- | Multipart request metadata.
+pzcnpaPayload :: Lens' ProjectsZonesClustersNodePoolsAutoscaling SetNodePoolAutoscalingRequest
+pzcnpaPayload
+  = lens _pzcnpaPayload
+      (\ s a -> s{_pzcnpaPayload = a})
+
+-- | Deprecated. The name of the node pool to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcnpaNodePoolId :: Lens' ProjectsZonesClustersNodePoolsAutoscaling Text
+pzcnpaNodePoolId
+  = lens _pzcnpaNodePoolId
+      (\ s a -> s{_pzcnpaNodePoolId = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcnpaClusterId :: Lens' ProjectsZonesClustersNodePoolsAutoscaling Text
+pzcnpaClusterId
+  = lens _pzcnpaClusterId
+      (\ s a -> s{_pzcnpaClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcnpaProjectId :: Lens' ProjectsZonesClustersNodePoolsAutoscaling Text
+pzcnpaProjectId
+  = lens _pzcnpaProjectId
+      (\ s a -> s{_pzcnpaProjectId = a})
+
+-- | JSONP
+pzcnpaCallback :: Lens' ProjectsZonesClustersNodePoolsAutoscaling (Maybe Text)
+pzcnpaCallback
+  = lens _pzcnpaCallback
+      (\ s a -> s{_pzcnpaCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsAutoscaling where
+        type Rs ProjectsZonesClustersNodePoolsAutoscaling =
+             Operation
+        type Scopes ProjectsZonesClustersNodePoolsAutoscaling
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsAutoscaling'{..}
+          = go _pzcnpaProjectId _pzcnpaZone _pzcnpaClusterId
+              _pzcnpaNodePoolId
+              _pzcnpaXgafv
+              _pzcnpaUploadProtocol
+              _pzcnpaAccessToken
+              _pzcnpaUploadType
+              _pzcnpaCallback
+              (Just AltJSON)
+              _pzcnpaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsZonesClustersNodePoolsAutoscalingResource)
+                      mempty
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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Create.hs
@@ -22,7 +22,7 @@
 --
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.create@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Create
     (
     -- * REST Resource
@@ -35,12 +35,10 @@
     -- * Request Lenses
     , pzcnpcXgafv
     , pzcnpcUploadProtocol
-    , pzcnpcPp
     , pzcnpcAccessToken
     , pzcnpcUploadType
     , pzcnpcZone
     , pzcnpcPayload
-    , pzcnpcBearerToken
     , pzcnpcClusterId
     , pzcnpcProjectId
     , pzcnpcCallback
@@ -60,29 +58,25 @@
                "clusters" :>
                  Capture "clusterId" Text :>
                    "nodePools" :>
-                     QueryParam "$.xgafv" Text :>
+                     QueryParam "$.xgafv" Xgafv :>
                        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
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" 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)
+    { _pzcnpcXgafv          :: !(Maybe Xgafv)
     , _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)
@@ -96,8 +90,6 @@
 --
 -- * 'pzcnpcUploadProtocol'
 --
--- * 'pzcnpcPp'
---
 -- * 'pzcnpcAccessToken'
 --
 -- * 'pzcnpcUploadType'
@@ -106,8 +98,6 @@
 --
 -- * 'pzcnpcPayload'
 --
--- * 'pzcnpcBearerToken'
---
 -- * 'pzcnpcClusterId'
 --
 -- * 'pzcnpcProjectId'
@@ -123,19 +113,17 @@
     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' ProjectsZonesClustersNodePoolsCreate (Maybe Xgafv)
 pzcnpcXgafv
   = lens _pzcnpcXgafv (\ s a -> s{_pzcnpcXgafv = a})
 
@@ -145,10 +133,6 @@
   = 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
@@ -161,8 +145,9 @@
   = lens _pzcnpcUploadType
       (\ s a -> s{_pzcnpcUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
 pzcnpcZone :: Lens' ProjectsZonesClustersNodePoolsCreate Text
 pzcnpcZone
   = lens _pzcnpcZone (\ s a -> s{_pzcnpcZone = a})
@@ -173,20 +158,16 @@
   = 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.
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the parent field.
 pzcnpcClusterId :: Lens' ProjectsZonesClustersNodePoolsCreate Text
 pzcnpcClusterId
   = lens _pzcnpcClusterId
       (\ s a -> s{_pzcnpcClusterId = a})
 
--- | The Google Developers Console [project ID or project
+-- | Deprecated. The Google Developers Console [project ID or project
 -- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the parent field.
 pzcnpcProjectId :: Lens' ProjectsZonesClustersNodePoolsCreate Text
 pzcnpcProjectId
   = lens _pzcnpcProjectId
@@ -209,10 +190,8 @@
           = go _pzcnpcProjectId _pzcnpcZone _pzcnpcClusterId
               _pzcnpcXgafv
               _pzcnpcUploadProtocol
-              (Just _pzcnpcPp)
               _pzcnpcAccessToken
               _pzcnpcUploadType
-              _pzcnpcBearerToken
               _pzcnpcCallback
               (Just AltJSON)
               _pzcnpcPayload
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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Delete.hs
@@ -22,7 +22,7 @@
 --
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.delete@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Delete
     (
     -- * REST Resource
@@ -35,12 +35,11 @@
     -- * Request Lenses
     , pzcnpdXgafv
     , pzcnpdUploadProtocol
-    , pzcnpdPp
     , pzcnpdAccessToken
     , pzcnpdUploadType
     , pzcnpdZone
     , pzcnpdNodePoolId
-    , pzcnpdBearerToken
+    , pzcnpdName
     , pzcnpdClusterId
     , pzcnpdProjectId
     , pzcnpdCallback
@@ -61,28 +60,26 @@
                  Capture "clusterId" Text :>
                    "nodePools" :>
                      Capture "nodePoolId" Text :>
-                       QueryParam "$.xgafv" Text :>
+                       QueryParam "$.xgafv" Xgafv :>
                          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
+                           QueryParam "access_token" Text :>
+                             QueryParam "uploadType" Text :>
+                               QueryParam "name" 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)
+    { _pzcnpdXgafv          :: !(Maybe Xgafv)
     , _pzcnpdUploadProtocol :: !(Maybe Text)
-    , _pzcnpdPp             :: !Bool
     , _pzcnpdAccessToken    :: !(Maybe Text)
     , _pzcnpdUploadType     :: !(Maybe Text)
     , _pzcnpdZone           :: !Text
     , _pzcnpdNodePoolId     :: !Text
-    , _pzcnpdBearerToken    :: !(Maybe Text)
+    , _pzcnpdName           :: !(Maybe Text)
     , _pzcnpdClusterId      :: !Text
     , _pzcnpdProjectId      :: !Text
     , _pzcnpdCallback       :: !(Maybe Text)
@@ -96,8 +93,6 @@
 --
 -- * 'pzcnpdUploadProtocol'
 --
--- * 'pzcnpdPp'
---
 -- * 'pzcnpdAccessToken'
 --
 -- * 'pzcnpdUploadType'
@@ -106,7 +101,7 @@
 --
 -- * 'pzcnpdNodePoolId'
 --
--- * 'pzcnpdBearerToken'
+-- * 'pzcnpdName'
 --
 -- * 'pzcnpdClusterId'
 --
@@ -123,19 +118,18 @@
     ProjectsZonesClustersNodePoolsDelete'
     { _pzcnpdXgafv = Nothing
     , _pzcnpdUploadProtocol = Nothing
-    , _pzcnpdPp = True
     , _pzcnpdAccessToken = Nothing
     , _pzcnpdUploadType = Nothing
     , _pzcnpdZone = pPzcnpdZone_
     , _pzcnpdNodePoolId = pPzcnpdNodePoolId_
-    , _pzcnpdBearerToken = Nothing
+    , _pzcnpdName = Nothing
     , _pzcnpdClusterId = pPzcnpdClusterId_
     , _pzcnpdProjectId = pPzcnpdProjectId_
     , _pzcnpdCallback = Nothing
     }
 
 -- | V1 error format.
-pzcnpdXgafv :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdXgafv :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Xgafv)
 pzcnpdXgafv
   = lens _pzcnpdXgafv (\ s a -> s{_pzcnpdXgafv = a})
 
@@ -145,10 +139,6 @@
   = 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
@@ -161,32 +151,37 @@
   = lens _pzcnpdUploadType
       (\ s a -> s{_pzcnpdUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcnpdZone :: Lens' ProjectsZonesClustersNodePoolsDelete Text
 pzcnpdZone
   = lens _pzcnpdZone (\ s a -> s{_pzcnpdZone = a})
 
--- | The name of the node pool to delete.
+-- | Deprecated. The name of the node pool to delete. This field has been
+-- deprecated and replaced by the name field.
 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 (project, location, cluster, node pool id) of the node pool to
+-- delete. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+pzcnpdName :: Lens' ProjectsZonesClustersNodePoolsDelete (Maybe Text)
+pzcnpdName
+  = lens _pzcnpdName (\ s a -> s{_pzcnpdName = a})
 
--- | The name of the cluster.
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
 pzcnpdClusterId :: Lens' ProjectsZonesClustersNodePoolsDelete Text
 pzcnpdClusterId
   = lens _pzcnpdClusterId
       (\ s a -> s{_pzcnpdClusterId = a})
 
--- | The Google Developers Console [project ID or project
+-- | Deprecated. The Google Developers Console [project ID or project
 -- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
 pzcnpdProjectId :: Lens' ProjectsZonesClustersNodePoolsDelete Text
 pzcnpdProjectId
   = lens _pzcnpdProjectId
@@ -210,10 +205,9 @@
               _pzcnpdNodePoolId
               _pzcnpdXgafv
               _pzcnpdUploadProtocol
-              (Just _pzcnpdPp)
               _pzcnpdAccessToken
               _pzcnpdUploadType
-              _pzcnpdBearerToken
+              _pzcnpdName
               _pzcnpdCallback
               (Just AltJSON)
               containerService
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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Get.hs
@@ -22,7 +22,7 @@
 --
 -- Retrieves the node pool requested.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.get@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.get@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Get
     (
     -- * REST Resource
@@ -35,12 +35,11 @@
     -- * Request Lenses
     , pzcnpgXgafv
     , pzcnpgUploadProtocol
-    , pzcnpgPp
     , pzcnpgAccessToken
     , pzcnpgUploadType
     , pzcnpgZone
     , pzcnpgNodePoolId
-    , pzcnpgBearerToken
+    , pzcnpgName
     , pzcnpgClusterId
     , pzcnpgProjectId
     , pzcnpgCallback
@@ -61,28 +60,26 @@
                  Capture "clusterId" Text :>
                    "nodePools" :>
                      Capture "nodePoolId" Text :>
-                       QueryParam "$.xgafv" Text :>
+                       QueryParam "$.xgafv" Xgafv :>
                          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
+                           QueryParam "access_token" Text :>
+                             QueryParam "uploadType" Text :>
+                               QueryParam "name" 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)
+    { _pzcnpgXgafv          :: !(Maybe Xgafv)
     , _pzcnpgUploadProtocol :: !(Maybe Text)
-    , _pzcnpgPp             :: !Bool
     , _pzcnpgAccessToken    :: !(Maybe Text)
     , _pzcnpgUploadType     :: !(Maybe Text)
     , _pzcnpgZone           :: !Text
     , _pzcnpgNodePoolId     :: !Text
-    , _pzcnpgBearerToken    :: !(Maybe Text)
+    , _pzcnpgName           :: !(Maybe Text)
     , _pzcnpgClusterId      :: !Text
     , _pzcnpgProjectId      :: !Text
     , _pzcnpgCallback       :: !(Maybe Text)
@@ -96,8 +93,6 @@
 --
 -- * 'pzcnpgUploadProtocol'
 --
--- * 'pzcnpgPp'
---
 -- * 'pzcnpgAccessToken'
 --
 -- * 'pzcnpgUploadType'
@@ -106,7 +101,7 @@
 --
 -- * 'pzcnpgNodePoolId'
 --
--- * 'pzcnpgBearerToken'
+-- * 'pzcnpgName'
 --
 -- * 'pzcnpgClusterId'
 --
@@ -123,19 +118,18 @@
     ProjectsZonesClustersNodePoolsGet'
     { _pzcnpgXgafv = Nothing
     , _pzcnpgUploadProtocol = Nothing
-    , _pzcnpgPp = True
     , _pzcnpgAccessToken = Nothing
     , _pzcnpgUploadType = Nothing
     , _pzcnpgZone = pPzcnpgZone_
     , _pzcnpgNodePoolId = pPzcnpgNodePoolId_
-    , _pzcnpgBearerToken = Nothing
+    , _pzcnpgName = Nothing
     , _pzcnpgClusterId = pPzcnpgClusterId_
     , _pzcnpgProjectId = pPzcnpgProjectId_
     , _pzcnpgCallback = Nothing
     }
 
 -- | V1 error format.
-pzcnpgXgafv :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgXgafv :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Xgafv)
 pzcnpgXgafv
   = lens _pzcnpgXgafv (\ s a -> s{_pzcnpgXgafv = a})
 
@@ -145,10 +139,6 @@
   = 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
@@ -161,32 +151,37 @@
   = lens _pzcnpgUploadType
       (\ s a -> s{_pzcnpgUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcnpgZone :: Lens' ProjectsZonesClustersNodePoolsGet Text
 pzcnpgZone
   = lens _pzcnpgZone (\ s a -> s{_pzcnpgZone = a})
 
--- | The name of the node pool.
+-- | Deprecated. The name of the node pool. This field has been deprecated
+-- and replaced by the name field.
 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 (project, location, cluster, node pool id) of the node pool to
+-- get. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\/nodePools\/*\'.
+pzcnpgName :: Lens' ProjectsZonesClustersNodePoolsGet (Maybe Text)
+pzcnpgName
+  = lens _pzcnpgName (\ s a -> s{_pzcnpgName = a})
 
--- | The name of the cluster.
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
 pzcnpgClusterId :: Lens' ProjectsZonesClustersNodePoolsGet Text
 pzcnpgClusterId
   = lens _pzcnpgClusterId
       (\ s a -> s{_pzcnpgClusterId = a})
 
--- | The Google Developers Console [project ID or project
+-- | Deprecated. The Google Developers Console [project ID or project
 -- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
 pzcnpgProjectId :: Lens' ProjectsZonesClustersNodePoolsGet Text
 pzcnpgProjectId
   = lens _pzcnpgProjectId
@@ -208,10 +203,9 @@
               _pzcnpgNodePoolId
               _pzcnpgXgafv
               _pzcnpgUploadProtocol
-              (Just _pzcnpgPp)
               _pzcnpgAccessToken
               _pzcnpgUploadType
-              _pzcnpgBearerToken
+              _pzcnpgName
               _pzcnpgCallback
               (Just AltJSON)
               containerService
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
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/List.hs
@@ -22,7 +22,7 @@
 --
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.list@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.List
     (
     -- * REST Resource
@@ -33,13 +33,12 @@
     , ProjectsZonesClustersNodePoolsList
 
     -- * Request Lenses
+    , pzcnplParent
     , pzcnplXgafv
     , pzcnplUploadProtocol
-    , pzcnplPp
     , pzcnplAccessToken
     , pzcnplUploadType
     , pzcnplZone
-    , pzcnplBearerToken
     , pzcnplClusterId
     , pzcnplProjectId
     , pzcnplCallback
@@ -59,27 +58,25 @@
                "clusters" :>
                  Capture "clusterId" Text :>
                    "nodePools" :>
-                     QueryParam "$.xgafv" Text :>
-                       QueryParam "upload_protocol" Text :>
-                         QueryParam "pp" Bool :>
+                     QueryParam "parent" Text :>
+                       QueryParam "$.xgafv" Xgafv :>
+                         QueryParam "upload_protocol" Text :>
                            QueryParam "access_token" Text :>
                              QueryParam "uploadType" Text :>
-                               QueryParam "bearer_token" Text :>
-                                 QueryParam "callback" Text :>
-                                   QueryParam "alt" AltJSON :>
-                                     Get '[JSON] ListNodePoolsResponse
+                               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)
+    { _pzcnplParent         :: !(Maybe Text)
+    , _pzcnplXgafv          :: !(Maybe Xgafv)
     , _pzcnplUploadProtocol :: !(Maybe Text)
-    , _pzcnplPp             :: !Bool
     , _pzcnplAccessToken    :: !(Maybe Text)
     , _pzcnplUploadType     :: !(Maybe Text)
     , _pzcnplZone           :: !Text
-    , _pzcnplBearerToken    :: !(Maybe Text)
     , _pzcnplClusterId      :: !Text
     , _pzcnplProjectId      :: !Text
     , _pzcnplCallback       :: !(Maybe Text)
@@ -89,20 +86,18 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pzcnplParent'
+--
 -- * 'pzcnplXgafv'
 --
 -- * 'pzcnplUploadProtocol'
 --
--- * 'pzcnplPp'
---
 -- * 'pzcnplAccessToken'
 --
 -- * 'pzcnplUploadType'
 --
 -- * 'pzcnplZone'
 --
--- * 'pzcnplBearerToken'
---
 -- * 'pzcnplClusterId'
 --
 -- * 'pzcnplProjectId'
@@ -115,20 +110,26 @@
     -> ProjectsZonesClustersNodePoolsList
 projectsZonesClustersNodePoolsList pPzcnplZone_ pPzcnplClusterId_ pPzcnplProjectId_ =
     ProjectsZonesClustersNodePoolsList'
-    { _pzcnplXgafv = Nothing
+    { _pzcnplParent = Nothing
+    , _pzcnplXgafv = Nothing
     , _pzcnplUploadProtocol = Nothing
-    , _pzcnplPp = True
     , _pzcnplAccessToken = Nothing
     , _pzcnplUploadType = Nothing
     , _pzcnplZone = pPzcnplZone_
-    , _pzcnplBearerToken = Nothing
     , _pzcnplClusterId = pPzcnplClusterId_
     , _pzcnplProjectId = pPzcnplProjectId_
     , _pzcnplCallback = Nothing
     }
 
+-- | The parent (project, location, cluster id) where the node pools will be
+-- listed. Specified in the format
+-- \'projects\/*\/locations\/*\/clusters\/*\'.
+pzcnplParent :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplParent
+  = lens _pzcnplParent (\ s a -> s{_pzcnplParent = a})
+
 -- | V1 error format.
-pzcnplXgafv :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Text)
+pzcnplXgafv :: Lens' ProjectsZonesClustersNodePoolsList (Maybe Xgafv)
 pzcnplXgafv
   = lens _pzcnplXgafv (\ s a -> s{_pzcnplXgafv = a})
 
@@ -138,10 +139,6 @@
   = 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
@@ -154,26 +151,23 @@
   = lens _pzcnplUploadType
       (\ s a -> s{_pzcnplUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the parent field.
 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.
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the parent field.
 pzcnplClusterId :: Lens' ProjectsZonesClustersNodePoolsList Text
 pzcnplClusterId
   = lens _pzcnplClusterId
       (\ s a -> s{_pzcnplClusterId = a})
 
--- | The Google Developers Console [project ID or project
+-- | Deprecated. The Google Developers Console [project ID or project
 -- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the parent field.
 pzcnplProjectId :: Lens' ProjectsZonesClustersNodePoolsList Text
 pzcnplProjectId
   = lens _pzcnplProjectId
@@ -193,12 +187,11 @@
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsZonesClustersNodePoolsList'{..}
           = go _pzcnplProjectId _pzcnplZone _pzcnplClusterId
+              _pzcnplParent
               _pzcnplXgafv
               _pzcnplUploadProtocol
-              (Just _pzcnplPp)
               _pzcnplAccessToken
               _pzcnplUploadType
-              _pzcnplBearerToken
               _pzcnplCallback
               (Just AltJSON)
               containerService
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Rollback.hs
@@ -23,7 +23,7 @@
 -- Roll back the previously Aborted or Failed NodePool upgrade. This will
 -- be an no-op if the last upgrade successfully completed.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.rollback@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.rollback@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Rollback
     (
     -- * REST Resource
@@ -36,13 +36,11 @@
     -- * Request Lenses
     , pzcnprXgafv
     , pzcnprUploadProtocol
-    , pzcnprPp
     , pzcnprAccessToken
     , pzcnprUploadType
     , pzcnprZone
     , pzcnprPayload
     , pzcnprNodePoolId
-    , pzcnprBearerToken
     , pzcnprClusterId
     , pzcnprProjectId
     , pzcnprCallback
@@ -63,32 +61,28 @@
                  Capture "clusterId" Text :>
                    "nodePools" :>
                      CaptureMode "nodePoolId" "rollback" Text :>
-                       QueryParam "$.xgafv" Text :>
+                       QueryParam "$.xgafv" Xgafv :>
                          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]
-                                         RollbackNodePoolUpgradeRequest
-                                         :> Post '[JSON] Operation
+                           QueryParam "access_token" Text :>
+                             QueryParam "uploadType" Text :>
+                               QueryParam "callback" Text :>
+                                 QueryParam "alt" AltJSON :>
+                                   ReqBody '[JSON]
+                                     RollbackNodePoolUpgradeRequest
+                                     :> Post '[JSON] Operation
 
 -- | Roll back the previously Aborted or Failed NodePool upgrade. This will
 -- be an no-op if the last upgrade successfully completed.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsRollback' smart constructor.
 data ProjectsZonesClustersNodePoolsRollback = ProjectsZonesClustersNodePoolsRollback'
-    { _pzcnprXgafv          :: !(Maybe Text)
+    { _pzcnprXgafv          :: !(Maybe Xgafv)
     , _pzcnprUploadProtocol :: !(Maybe Text)
-    , _pzcnprPp             :: !Bool
     , _pzcnprAccessToken    :: !(Maybe Text)
     , _pzcnprUploadType     :: !(Maybe Text)
     , _pzcnprZone           :: !Text
     , _pzcnprPayload        :: !RollbackNodePoolUpgradeRequest
     , _pzcnprNodePoolId     :: !Text
-    , _pzcnprBearerToken    :: !(Maybe Text)
     , _pzcnprClusterId      :: !Text
     , _pzcnprProjectId      :: !Text
     , _pzcnprCallback       :: !(Maybe Text)
@@ -102,8 +96,6 @@
 --
 -- * 'pzcnprUploadProtocol'
 --
--- * 'pzcnprPp'
---
 -- * 'pzcnprAccessToken'
 --
 -- * 'pzcnprUploadType'
@@ -114,8 +106,6 @@
 --
 -- * 'pzcnprNodePoolId'
 --
--- * 'pzcnprBearerToken'
---
 -- * 'pzcnprClusterId'
 --
 -- * 'pzcnprProjectId'
@@ -132,20 +122,18 @@
     ProjectsZonesClustersNodePoolsRollback'
     { _pzcnprXgafv = Nothing
     , _pzcnprUploadProtocol = Nothing
-    , _pzcnprPp = True
     , _pzcnprAccessToken = Nothing
     , _pzcnprUploadType = Nothing
     , _pzcnprZone = pPzcnprZone_
     , _pzcnprPayload = pPzcnprPayload_
     , _pzcnprNodePoolId = pPzcnprNodePoolId_
-    , _pzcnprBearerToken = Nothing
     , _pzcnprClusterId = pPzcnprClusterId_
     , _pzcnprProjectId = pPzcnprProjectId_
     , _pzcnprCallback = Nothing
     }
 
 -- | V1 error format.
-pzcnprXgafv :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
+pzcnprXgafv :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Xgafv)
 pzcnprXgafv
   = lens _pzcnprXgafv (\ s a -> s{_pzcnprXgafv = a})
 
@@ -155,10 +143,6 @@
   = lens _pzcnprUploadProtocol
       (\ s a -> s{_pzcnprUploadProtocol = a})
 
--- | Pretty-print response.
-pzcnprPp :: Lens' ProjectsZonesClustersNodePoolsRollback Bool
-pzcnprPp = lens _pzcnprPp (\ s a -> s{_pzcnprPp = a})
-
 -- | OAuth access token.
 pzcnprAccessToken :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
 pzcnprAccessToken
@@ -171,8 +155,9 @@
   = lens _pzcnprUploadType
       (\ s a -> s{_pzcnprUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcnprZone :: Lens' ProjectsZonesClustersNodePoolsRollback Text
 pzcnprZone
   = lens _pzcnprZone (\ s a -> s{_pzcnprZone = a})
@@ -183,26 +168,23 @@
   = lens _pzcnprPayload
       (\ s a -> s{_pzcnprPayload = a})
 
--- | The name of the node pool to rollback.
+-- | Deprecated. The name of the node pool to rollback. This field has been
+-- deprecated and replaced by the name field.
 pzcnprNodePoolId :: Lens' ProjectsZonesClustersNodePoolsRollback Text
 pzcnprNodePoolId
   = lens _pzcnprNodePoolId
       (\ s a -> s{_pzcnprNodePoolId = a})
 
--- | OAuth bearer token.
-pzcnprBearerToken :: Lens' ProjectsZonesClustersNodePoolsRollback (Maybe Text)
-pzcnprBearerToken
-  = lens _pzcnprBearerToken
-      (\ s a -> s{_pzcnprBearerToken = a})
-
--- | The name of the cluster to rollback.
+-- | Deprecated. The name of the cluster to rollback. This field has been
+-- deprecated and replaced by the name field.
 pzcnprClusterId :: Lens' ProjectsZonesClustersNodePoolsRollback Text
 pzcnprClusterId
   = lens _pzcnprClusterId
       (\ s a -> s{_pzcnprClusterId = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzcnprProjectId :: Lens' ProjectsZonesClustersNodePoolsRollback Text
 pzcnprProjectId
   = lens _pzcnprProjectId
@@ -226,10 +208,8 @@
               _pzcnprNodePoolId
               _pzcnprXgafv
               _pzcnprUploadProtocol
-              (Just _pzcnprPp)
               _pzcnprAccessToken
               _pzcnprUploadType
-              _pzcnprBearerToken
               _pzcnprCallback
               (Just AltJSON)
               _pzcnprPayload
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetManagement.hs
@@ -22,7 +22,7 @@
 --
 -- Sets the NodeManagement options for a node pool.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.clusters.nodePools.setManagement@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.setManagement@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
     (
     -- * REST Resource
@@ -35,13 +35,11 @@
     -- * Request Lenses
     , pzcnpsmXgafv
     , pzcnpsmUploadProtocol
-    , pzcnpsmPp
     , pzcnpsmAccessToken
     , pzcnpsmUploadType
     , pzcnpsmZone
     , pzcnpsmPayload
     , pzcnpsmNodePoolId
-    , pzcnpsmBearerToken
     , pzcnpsmClusterId
     , pzcnpsmProjectId
     , pzcnpsmCallback
@@ -64,31 +62,27 @@
                    "nodePools" :>
                      Capture "nodePoolId" Text :>
                        "setManagement" :>
-                         QueryParam "$.xgafv" Text :>
+                         QueryParam "$.xgafv" Xgafv :>
                            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]
-                                           SetNodePoolManagementRequest
-                                           :> Post '[JSON] Operation
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     ReqBody '[JSON]
+                                       SetNodePoolManagementRequest
+                                       :> Post '[JSON] Operation
 
 -- | Sets the NodeManagement options for a node pool.
 --
 -- /See:/ 'projectsZonesClustersNodePoolsSetManagement' smart constructor.
 data ProjectsZonesClustersNodePoolsSetManagement = ProjectsZonesClustersNodePoolsSetManagement'
-    { _pzcnpsmXgafv          :: !(Maybe Text)
+    { _pzcnpsmXgafv          :: !(Maybe Xgafv)
     , _pzcnpsmUploadProtocol :: !(Maybe Text)
-    , _pzcnpsmPp             :: !Bool
     , _pzcnpsmAccessToken    :: !(Maybe Text)
     , _pzcnpsmUploadType     :: !(Maybe Text)
     , _pzcnpsmZone           :: !Text
     , _pzcnpsmPayload        :: !SetNodePoolManagementRequest
     , _pzcnpsmNodePoolId     :: !Text
-    , _pzcnpsmBearerToken    :: !(Maybe Text)
     , _pzcnpsmClusterId      :: !Text
     , _pzcnpsmProjectId      :: !Text
     , _pzcnpsmCallback       :: !(Maybe Text)
@@ -102,8 +96,6 @@
 --
 -- * 'pzcnpsmUploadProtocol'
 --
--- * 'pzcnpsmPp'
---
 -- * 'pzcnpsmAccessToken'
 --
 -- * 'pzcnpsmUploadType'
@@ -114,8 +106,6 @@
 --
 -- * 'pzcnpsmNodePoolId'
 --
--- * 'pzcnpsmBearerToken'
---
 -- * 'pzcnpsmClusterId'
 --
 -- * 'pzcnpsmProjectId'
@@ -132,20 +122,18 @@
     ProjectsZonesClustersNodePoolsSetManagement'
     { _pzcnpsmXgafv = Nothing
     , _pzcnpsmUploadProtocol = Nothing
-    , _pzcnpsmPp = True
     , _pzcnpsmAccessToken = Nothing
     , _pzcnpsmUploadType = Nothing
     , _pzcnpsmZone = pPzcnpsmZone_
     , _pzcnpsmPayload = pPzcnpsmPayload_
     , _pzcnpsmNodePoolId = pPzcnpsmNodePoolId_
-    , _pzcnpsmBearerToken = Nothing
     , _pzcnpsmClusterId = pPzcnpsmClusterId_
     , _pzcnpsmProjectId = pPzcnpsmProjectId_
     , _pzcnpsmCallback = Nothing
     }
 
 -- | V1 error format.
-pzcnpsmXgafv :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
+pzcnpsmXgafv :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Xgafv)
 pzcnpsmXgafv
   = lens _pzcnpsmXgafv (\ s a -> s{_pzcnpsmXgafv = a})
 
@@ -155,11 +143,6 @@
   = lens _pzcnpsmUploadProtocol
       (\ s a -> s{_pzcnpsmUploadProtocol = a})
 
--- | Pretty-print response.
-pzcnpsmPp :: Lens' ProjectsZonesClustersNodePoolsSetManagement Bool
-pzcnpsmPp
-  = lens _pzcnpsmPp (\ s a -> s{_pzcnpsmPp = a})
-
 -- | OAuth access token.
 pzcnpsmAccessToken :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
 pzcnpsmAccessToken
@@ -172,8 +155,9 @@
   = lens _pzcnpsmUploadType
       (\ s a -> s{_pzcnpsmUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcnpsmZone :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
 pzcnpsmZone
   = lens _pzcnpsmZone (\ s a -> s{_pzcnpsmZone = a})
@@ -184,26 +168,23 @@
   = lens _pzcnpsmPayload
       (\ s a -> s{_pzcnpsmPayload = a})
 
--- | The name of the node pool to update.
+-- | Deprecated. The name of the node pool to update. This field has been
+-- deprecated and replaced by the name field.
 pzcnpsmNodePoolId :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
 pzcnpsmNodePoolId
   = lens _pzcnpsmNodePoolId
       (\ s a -> s{_pzcnpsmNodePoolId = a})
 
--- | OAuth bearer token.
-pzcnpsmBearerToken :: Lens' ProjectsZonesClustersNodePoolsSetManagement (Maybe Text)
-pzcnpsmBearerToken
-  = lens _pzcnpsmBearerToken
-      (\ s a -> s{_pzcnpsmBearerToken = a})
-
--- | The name of the cluster to update.
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
 pzcnpsmClusterId :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
 pzcnpsmClusterId
   = lens _pzcnpsmClusterId
       (\ s a -> s{_pzcnpsmClusterId = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzcnpsmProjectId :: Lens' ProjectsZonesClustersNodePoolsSetManagement Text
 pzcnpsmProjectId
   = lens _pzcnpsmProjectId
@@ -228,10 +209,8 @@
               _pzcnpsmNodePoolId
               _pzcnpsmXgafv
               _pzcnpsmUploadProtocol
-              (Just _pzcnpsmPp)
               _pzcnpsmAccessToken
               _pzcnpsmUploadType
-              _pzcnpsmBearerToken
               _pzcnpsmCallback
               (Just AltJSON)
               _pzcnpsmPayload
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/SetSize.hs
@@ -0,0 +1,219 @@
+{-# 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.SetSize
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the size for a specific node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.setSize@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetSize
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsSetSizeResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsSetSize
+    , ProjectsZonesClustersNodePoolsSetSize
+
+    -- * Request Lenses
+    , pzcnpssXgafv
+    , pzcnpssUploadProtocol
+    , pzcnpssAccessToken
+    , pzcnpssUploadType
+    , pzcnpssZone
+    , pzcnpssPayload
+    , pzcnpssNodePoolId
+    , pzcnpssClusterId
+    , pzcnpssProjectId
+    , pzcnpssCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.setSize@ method which the
+-- 'ProjectsZonesClustersNodePoolsSetSize' request conforms to.
+type ProjectsZonesClustersNodePoolsSetSizeResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     Capture "nodePoolId" Text :>
+                       "setSize" :>
+                         QueryParam "$.xgafv" Xgafv :>
+                           QueryParam "upload_protocol" Text :>
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     ReqBody '[JSON] SetNodePoolSizeRequest :>
+                                       Post '[JSON] Operation
+
+-- | Sets the size for a specific node pool.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsSetSize' smart constructor.
+data ProjectsZonesClustersNodePoolsSetSize = ProjectsZonesClustersNodePoolsSetSize'
+    { _pzcnpssXgafv          :: !(Maybe Xgafv)
+    , _pzcnpssUploadProtocol :: !(Maybe Text)
+    , _pzcnpssAccessToken    :: !(Maybe Text)
+    , _pzcnpssUploadType     :: !(Maybe Text)
+    , _pzcnpssZone           :: !Text
+    , _pzcnpssPayload        :: !SetNodePoolSizeRequest
+    , _pzcnpssNodePoolId     :: !Text
+    , _pzcnpssClusterId      :: !Text
+    , _pzcnpssProjectId      :: !Text
+    , _pzcnpssCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsSetSize' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpssXgafv'
+--
+-- * 'pzcnpssUploadProtocol'
+--
+-- * 'pzcnpssAccessToken'
+--
+-- * 'pzcnpssUploadType'
+--
+-- * 'pzcnpssZone'
+--
+-- * 'pzcnpssPayload'
+--
+-- * 'pzcnpssNodePoolId'
+--
+-- * 'pzcnpssClusterId'
+--
+-- * 'pzcnpssProjectId'
+--
+-- * 'pzcnpssCallback'
+projectsZonesClustersNodePoolsSetSize
+    :: Text -- ^ 'pzcnpssZone'
+    -> SetNodePoolSizeRequest -- ^ 'pzcnpssPayload'
+    -> Text -- ^ 'pzcnpssNodePoolId'
+    -> Text -- ^ 'pzcnpssClusterId'
+    -> Text -- ^ 'pzcnpssProjectId'
+    -> ProjectsZonesClustersNodePoolsSetSize
+projectsZonesClustersNodePoolsSetSize pPzcnpssZone_ pPzcnpssPayload_ pPzcnpssNodePoolId_ pPzcnpssClusterId_ pPzcnpssProjectId_ =
+    ProjectsZonesClustersNodePoolsSetSize'
+    { _pzcnpssXgafv = Nothing
+    , _pzcnpssUploadProtocol = Nothing
+    , _pzcnpssAccessToken = Nothing
+    , _pzcnpssUploadType = Nothing
+    , _pzcnpssZone = pPzcnpssZone_
+    , _pzcnpssPayload = pPzcnpssPayload_
+    , _pzcnpssNodePoolId = pPzcnpssNodePoolId_
+    , _pzcnpssClusterId = pPzcnpssClusterId_
+    , _pzcnpssProjectId = pPzcnpssProjectId_
+    , _pzcnpssCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpssXgafv :: Lens' ProjectsZonesClustersNodePoolsSetSize (Maybe Xgafv)
+pzcnpssXgafv
+  = lens _pzcnpssXgafv (\ s a -> s{_pzcnpssXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpssUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsSetSize (Maybe Text)
+pzcnpssUploadProtocol
+  = lens _pzcnpssUploadProtocol
+      (\ s a -> s{_pzcnpssUploadProtocol = a})
+
+-- | OAuth access token.
+pzcnpssAccessToken :: Lens' ProjectsZonesClustersNodePoolsSetSize (Maybe Text)
+pzcnpssAccessToken
+  = lens _pzcnpssAccessToken
+      (\ s a -> s{_pzcnpssAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpssUploadType :: Lens' ProjectsZonesClustersNodePoolsSetSize (Maybe Text)
+pzcnpssUploadType
+  = lens _pzcnpssUploadType
+      (\ s a -> s{_pzcnpssUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcnpssZone :: Lens' ProjectsZonesClustersNodePoolsSetSize Text
+pzcnpssZone
+  = lens _pzcnpssZone (\ s a -> s{_pzcnpssZone = a})
+
+-- | Multipart request metadata.
+pzcnpssPayload :: Lens' ProjectsZonesClustersNodePoolsSetSize SetNodePoolSizeRequest
+pzcnpssPayload
+  = lens _pzcnpssPayload
+      (\ s a -> s{_pzcnpssPayload = a})
+
+-- | Deprecated. The name of the node pool to update. This field has been
+-- deprecated and replaced by the name field.
+pzcnpssNodePoolId :: Lens' ProjectsZonesClustersNodePoolsSetSize Text
+pzcnpssNodePoolId
+  = lens _pzcnpssNodePoolId
+      (\ s a -> s{_pzcnpssNodePoolId = a})
+
+-- | Deprecated. The name of the cluster to update. This field has been
+-- deprecated and replaced by the name field.
+pzcnpssClusterId :: Lens' ProjectsZonesClustersNodePoolsSetSize Text
+pzcnpssClusterId
+  = lens _pzcnpssClusterId
+      (\ s a -> s{_pzcnpssClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcnpssProjectId :: Lens' ProjectsZonesClustersNodePoolsSetSize Text
+pzcnpssProjectId
+  = lens _pzcnpssProjectId
+      (\ s a -> s{_pzcnpssProjectId = a})
+
+-- | JSONP
+pzcnpssCallback :: Lens' ProjectsZonesClustersNodePoolsSetSize (Maybe Text)
+pzcnpssCallback
+  = lens _pzcnpssCallback
+      (\ s a -> s{_pzcnpssCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsSetSize where
+        type Rs ProjectsZonesClustersNodePoolsSetSize =
+             Operation
+        type Scopes ProjectsZonesClustersNodePoolsSetSize =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsSetSize'{..}
+          = go _pzcnpssProjectId _pzcnpssZone _pzcnpssClusterId
+              _pzcnpssNodePoolId
+              _pzcnpssXgafv
+              _pzcnpssUploadProtocol
+              _pzcnpssAccessToken
+              _pzcnpssUploadType
+              _pzcnpssCallback
+              (Just AltJSON)
+              _pzcnpssPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsSetSizeResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/NodePools/Update.hs
@@ -0,0 +1,219 @@
+{-# 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.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the version and\/or image type for a specific node pool.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.nodePools.update@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Update
+    (
+    -- * REST Resource
+      ProjectsZonesClustersNodePoolsUpdateResource
+
+    -- * Creating a Request
+    , projectsZonesClustersNodePoolsUpdate
+    , ProjectsZonesClustersNodePoolsUpdate
+
+    -- * Request Lenses
+    , pzcnpuXgafv
+    , pzcnpuUploadProtocol
+    , pzcnpuAccessToken
+    , pzcnpuUploadType
+    , pzcnpuZone
+    , pzcnpuPayload
+    , pzcnpuNodePoolId
+    , pzcnpuClusterId
+    , pzcnpuProjectId
+    , pzcnpuCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.nodePools.update@ method which the
+-- 'ProjectsZonesClustersNodePoolsUpdate' request conforms to.
+type ProjectsZonesClustersNodePoolsUpdateResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "nodePools" :>
+                     Capture "nodePoolId" Text :>
+                       "update" :>
+                         QueryParam "$.xgafv" Xgafv :>
+                           QueryParam "upload_protocol" Text :>
+                             QueryParam "access_token" Text :>
+                               QueryParam "uploadType" Text :>
+                                 QueryParam "callback" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     ReqBody '[JSON] UpdateNodePoolRequest :>
+                                       Post '[JSON] Operation
+
+-- | Updates the version and\/or image type for a specific node pool.
+--
+-- /See:/ 'projectsZonesClustersNodePoolsUpdate' smart constructor.
+data ProjectsZonesClustersNodePoolsUpdate = ProjectsZonesClustersNodePoolsUpdate'
+    { _pzcnpuXgafv          :: !(Maybe Xgafv)
+    , _pzcnpuUploadProtocol :: !(Maybe Text)
+    , _pzcnpuAccessToken    :: !(Maybe Text)
+    , _pzcnpuUploadType     :: !(Maybe Text)
+    , _pzcnpuZone           :: !Text
+    , _pzcnpuPayload        :: !UpdateNodePoolRequest
+    , _pzcnpuNodePoolId     :: !Text
+    , _pzcnpuClusterId      :: !Text
+    , _pzcnpuProjectId      :: !Text
+    , _pzcnpuCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersNodePoolsUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcnpuXgafv'
+--
+-- * 'pzcnpuUploadProtocol'
+--
+-- * 'pzcnpuAccessToken'
+--
+-- * 'pzcnpuUploadType'
+--
+-- * 'pzcnpuZone'
+--
+-- * 'pzcnpuPayload'
+--
+-- * 'pzcnpuNodePoolId'
+--
+-- * 'pzcnpuClusterId'
+--
+-- * 'pzcnpuProjectId'
+--
+-- * 'pzcnpuCallback'
+projectsZonesClustersNodePoolsUpdate
+    :: Text -- ^ 'pzcnpuZone'
+    -> UpdateNodePoolRequest -- ^ 'pzcnpuPayload'
+    -> Text -- ^ 'pzcnpuNodePoolId'
+    -> Text -- ^ 'pzcnpuClusterId'
+    -> Text -- ^ 'pzcnpuProjectId'
+    -> ProjectsZonesClustersNodePoolsUpdate
+projectsZonesClustersNodePoolsUpdate pPzcnpuZone_ pPzcnpuPayload_ pPzcnpuNodePoolId_ pPzcnpuClusterId_ pPzcnpuProjectId_ =
+    ProjectsZonesClustersNodePoolsUpdate'
+    { _pzcnpuXgafv = Nothing
+    , _pzcnpuUploadProtocol = Nothing
+    , _pzcnpuAccessToken = Nothing
+    , _pzcnpuUploadType = Nothing
+    , _pzcnpuZone = pPzcnpuZone_
+    , _pzcnpuPayload = pPzcnpuPayload_
+    , _pzcnpuNodePoolId = pPzcnpuNodePoolId_
+    , _pzcnpuClusterId = pPzcnpuClusterId_
+    , _pzcnpuProjectId = pPzcnpuProjectId_
+    , _pzcnpuCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcnpuXgafv :: Lens' ProjectsZonesClustersNodePoolsUpdate (Maybe Xgafv)
+pzcnpuXgafv
+  = lens _pzcnpuXgafv (\ s a -> s{_pzcnpuXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcnpuUploadProtocol :: Lens' ProjectsZonesClustersNodePoolsUpdate (Maybe Text)
+pzcnpuUploadProtocol
+  = lens _pzcnpuUploadProtocol
+      (\ s a -> s{_pzcnpuUploadProtocol = a})
+
+-- | OAuth access token.
+pzcnpuAccessToken :: Lens' ProjectsZonesClustersNodePoolsUpdate (Maybe Text)
+pzcnpuAccessToken
+  = lens _pzcnpuAccessToken
+      (\ s a -> s{_pzcnpuAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcnpuUploadType :: Lens' ProjectsZonesClustersNodePoolsUpdate (Maybe Text)
+pzcnpuUploadType
+  = lens _pzcnpuUploadType
+      (\ s a -> s{_pzcnpuUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcnpuZone :: Lens' ProjectsZonesClustersNodePoolsUpdate Text
+pzcnpuZone
+  = lens _pzcnpuZone (\ s a -> s{_pzcnpuZone = a})
+
+-- | Multipart request metadata.
+pzcnpuPayload :: Lens' ProjectsZonesClustersNodePoolsUpdate UpdateNodePoolRequest
+pzcnpuPayload
+  = lens _pzcnpuPayload
+      (\ s a -> s{_pzcnpuPayload = a})
+
+-- | Deprecated. The name of the node pool to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcnpuNodePoolId :: Lens' ProjectsZonesClustersNodePoolsUpdate Text
+pzcnpuNodePoolId
+  = lens _pzcnpuNodePoolId
+      (\ s a -> s{_pzcnpuNodePoolId = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcnpuClusterId :: Lens' ProjectsZonesClustersNodePoolsUpdate Text
+pzcnpuClusterId
+  = lens _pzcnpuClusterId
+      (\ s a -> s{_pzcnpuClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcnpuProjectId :: Lens' ProjectsZonesClustersNodePoolsUpdate Text
+pzcnpuProjectId
+  = lens _pzcnpuProjectId
+      (\ s a -> s{_pzcnpuProjectId = a})
+
+-- | JSONP
+pzcnpuCallback :: Lens' ProjectsZonesClustersNodePoolsUpdate (Maybe Text)
+pzcnpuCallback
+  = lens _pzcnpuCallback
+      (\ s a -> s{_pzcnpuCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersNodePoolsUpdate where
+        type Rs ProjectsZonesClustersNodePoolsUpdate =
+             Operation
+        type Scopes ProjectsZonesClustersNodePoolsUpdate =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersNodePoolsUpdate'{..}
+          = go _pzcnpuProjectId _pzcnpuZone _pzcnpuClusterId
+              _pzcnpuNodePoolId
+              _pzcnpuXgafv
+              _pzcnpuUploadProtocol
+              _pzcnpuAccessToken
+              _pzcnpuUploadType
+              _pzcnpuCallback
+              (Just AltJSON)
+              _pzcnpuPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersNodePoolsUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/ResourceLabels.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.ResourceLabels
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets labels on a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.resourceLabels@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.ResourceLabels
+    (
+    -- * REST Resource
+      ProjectsZonesClustersResourceLabelsResource
+
+    -- * Creating a Request
+    , projectsZonesClustersResourceLabels
+    , ProjectsZonesClustersResourceLabels
+
+    -- * Request Lenses
+    , pzcrlXgafv
+    , pzcrlUploadProtocol
+    , pzcrlAccessToken
+    , pzcrlUploadType
+    , pzcrlZone
+    , pzcrlPayload
+    , pzcrlClusterId
+    , pzcrlProjectId
+    , pzcrlCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.resourceLabels@ method which the
+-- 'ProjectsZonesClustersResourceLabels' request conforms to.
+type ProjectsZonesClustersResourceLabelsResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 Capture "clusterId" Text :>
+                   "resourceLabels" :>
+                     QueryParam "$.xgafv" Xgafv :>
+                       QueryParam "upload_protocol" Text :>
+                         QueryParam "access_token" Text :>
+                           QueryParam "uploadType" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :>
+                                 ReqBody '[JSON] SetLabelsRequest :>
+                                   Post '[JSON] Operation
+
+-- | Sets labels on a cluster.
+--
+-- /See:/ 'projectsZonesClustersResourceLabels' smart constructor.
+data ProjectsZonesClustersResourceLabels = ProjectsZonesClustersResourceLabels'
+    { _pzcrlXgafv          :: !(Maybe Xgafv)
+    , _pzcrlUploadProtocol :: !(Maybe Text)
+    , _pzcrlAccessToken    :: !(Maybe Text)
+    , _pzcrlUploadType     :: !(Maybe Text)
+    , _pzcrlZone           :: !Text
+    , _pzcrlPayload        :: !SetLabelsRequest
+    , _pzcrlClusterId      :: !Text
+    , _pzcrlProjectId      :: !Text
+    , _pzcrlCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersResourceLabels' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcrlXgafv'
+--
+-- * 'pzcrlUploadProtocol'
+--
+-- * 'pzcrlAccessToken'
+--
+-- * 'pzcrlUploadType'
+--
+-- * 'pzcrlZone'
+--
+-- * 'pzcrlPayload'
+--
+-- * 'pzcrlClusterId'
+--
+-- * 'pzcrlProjectId'
+--
+-- * 'pzcrlCallback'
+projectsZonesClustersResourceLabels
+    :: Text -- ^ 'pzcrlZone'
+    -> SetLabelsRequest -- ^ 'pzcrlPayload'
+    -> Text -- ^ 'pzcrlClusterId'
+    -> Text -- ^ 'pzcrlProjectId'
+    -> ProjectsZonesClustersResourceLabels
+projectsZonesClustersResourceLabels pPzcrlZone_ pPzcrlPayload_ pPzcrlClusterId_ pPzcrlProjectId_ =
+    ProjectsZonesClustersResourceLabels'
+    { _pzcrlXgafv = Nothing
+    , _pzcrlUploadProtocol = Nothing
+    , _pzcrlAccessToken = Nothing
+    , _pzcrlUploadType = Nothing
+    , _pzcrlZone = pPzcrlZone_
+    , _pzcrlPayload = pPzcrlPayload_
+    , _pzcrlClusterId = pPzcrlClusterId_
+    , _pzcrlProjectId = pPzcrlProjectId_
+    , _pzcrlCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcrlXgafv :: Lens' ProjectsZonesClustersResourceLabels (Maybe Xgafv)
+pzcrlXgafv
+  = lens _pzcrlXgafv (\ s a -> s{_pzcrlXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcrlUploadProtocol :: Lens' ProjectsZonesClustersResourceLabels (Maybe Text)
+pzcrlUploadProtocol
+  = lens _pzcrlUploadProtocol
+      (\ s a -> s{_pzcrlUploadProtocol = a})
+
+-- | OAuth access token.
+pzcrlAccessToken :: Lens' ProjectsZonesClustersResourceLabels (Maybe Text)
+pzcrlAccessToken
+  = lens _pzcrlAccessToken
+      (\ s a -> s{_pzcrlAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcrlUploadType :: Lens' ProjectsZonesClustersResourceLabels (Maybe Text)
+pzcrlUploadType
+  = lens _pzcrlUploadType
+      (\ s a -> s{_pzcrlUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcrlZone :: Lens' ProjectsZonesClustersResourceLabels Text
+pzcrlZone
+  = lens _pzcrlZone (\ s a -> s{_pzcrlZone = a})
+
+-- | Multipart request metadata.
+pzcrlPayload :: Lens' ProjectsZonesClustersResourceLabels SetLabelsRequest
+pzcrlPayload
+  = lens _pzcrlPayload (\ s a -> s{_pzcrlPayload = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+pzcrlClusterId :: Lens' ProjectsZonesClustersResourceLabels Text
+pzcrlClusterId
+  = lens _pzcrlClusterId
+      (\ s a -> s{_pzcrlClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+pzcrlProjectId :: Lens' ProjectsZonesClustersResourceLabels Text
+pzcrlProjectId
+  = lens _pzcrlProjectId
+      (\ s a -> s{_pzcrlProjectId = a})
+
+-- | JSONP
+pzcrlCallback :: Lens' ProjectsZonesClustersResourceLabels (Maybe Text)
+pzcrlCallback
+  = lens _pzcrlCallback
+      (\ s a -> s{_pzcrlCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersResourceLabels where
+        type Rs ProjectsZonesClustersResourceLabels =
+             Operation
+        type Scopes ProjectsZonesClustersResourceLabels =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersResourceLabels'{..}
+          = go _pzcrlProjectId _pzcrlZone _pzcrlClusterId
+              _pzcrlXgafv
+              _pzcrlUploadProtocol
+              _pzcrlAccessToken
+              _pzcrlUploadType
+              _pzcrlCallback
+              (Just AltJSON)
+              _pzcrlPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersResourceLabelsResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMaintenancePolicy.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.SetMaintenancePolicy
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the maintenance policy for a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.setMaintenancePolicy@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.SetMaintenancePolicy
+    (
+    -- * REST Resource
+      ProjectsZonesClustersSetMaintenancePolicyResource
+
+    -- * Creating a Request
+    , projectsZonesClustersSetMaintenancePolicy
+    , ProjectsZonesClustersSetMaintenancePolicy
+
+    -- * Request Lenses
+    , pzcsmpXgafv
+    , pzcsmpUploadProtocol
+    , pzcsmpAccessToken
+    , pzcsmpUploadType
+    , pzcsmpZone
+    , pzcsmpPayload
+    , pzcsmpClusterId
+    , pzcsmpProjectId
+    , pzcsmpCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.setMaintenancePolicy@ method which the
+-- 'ProjectsZonesClustersSetMaintenancePolicy' request conforms to.
+type ProjectsZonesClustersSetMaintenancePolicyResource
+     =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 CaptureMode "clusterId" "setMaintenancePolicy" Text
+                   :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] SetMaintenancePolicyRequest :>
+                                 Post '[JSON] Operation
+
+-- | Sets the maintenance policy for a cluster.
+--
+-- /See:/ 'projectsZonesClustersSetMaintenancePolicy' smart constructor.
+data ProjectsZonesClustersSetMaintenancePolicy = ProjectsZonesClustersSetMaintenancePolicy'
+    { _pzcsmpXgafv          :: !(Maybe Xgafv)
+    , _pzcsmpUploadProtocol :: !(Maybe Text)
+    , _pzcsmpAccessToken    :: !(Maybe Text)
+    , _pzcsmpUploadType     :: !(Maybe Text)
+    , _pzcsmpZone           :: !Text
+    , _pzcsmpPayload        :: !SetMaintenancePolicyRequest
+    , _pzcsmpClusterId      :: !Text
+    , _pzcsmpProjectId      :: !Text
+    , _pzcsmpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersSetMaintenancePolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcsmpXgafv'
+--
+-- * 'pzcsmpUploadProtocol'
+--
+-- * 'pzcsmpAccessToken'
+--
+-- * 'pzcsmpUploadType'
+--
+-- * 'pzcsmpZone'
+--
+-- * 'pzcsmpPayload'
+--
+-- * 'pzcsmpClusterId'
+--
+-- * 'pzcsmpProjectId'
+--
+-- * 'pzcsmpCallback'
+projectsZonesClustersSetMaintenancePolicy
+    :: Text -- ^ 'pzcsmpZone'
+    -> SetMaintenancePolicyRequest -- ^ 'pzcsmpPayload'
+    -> Text -- ^ 'pzcsmpClusterId'
+    -> Text -- ^ 'pzcsmpProjectId'
+    -> ProjectsZonesClustersSetMaintenancePolicy
+projectsZonesClustersSetMaintenancePolicy pPzcsmpZone_ pPzcsmpPayload_ pPzcsmpClusterId_ pPzcsmpProjectId_ =
+    ProjectsZonesClustersSetMaintenancePolicy'
+    { _pzcsmpXgafv = Nothing
+    , _pzcsmpUploadProtocol = Nothing
+    , _pzcsmpAccessToken = Nothing
+    , _pzcsmpUploadType = Nothing
+    , _pzcsmpZone = pPzcsmpZone_
+    , _pzcsmpPayload = pPzcsmpPayload_
+    , _pzcsmpClusterId = pPzcsmpClusterId_
+    , _pzcsmpProjectId = pPzcsmpProjectId_
+    , _pzcsmpCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcsmpXgafv :: Lens' ProjectsZonesClustersSetMaintenancePolicy (Maybe Xgafv)
+pzcsmpXgafv
+  = lens _pzcsmpXgafv (\ s a -> s{_pzcsmpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcsmpUploadProtocol :: Lens' ProjectsZonesClustersSetMaintenancePolicy (Maybe Text)
+pzcsmpUploadProtocol
+  = lens _pzcsmpUploadProtocol
+      (\ s a -> s{_pzcsmpUploadProtocol = a})
+
+-- | OAuth access token.
+pzcsmpAccessToken :: Lens' ProjectsZonesClustersSetMaintenancePolicy (Maybe Text)
+pzcsmpAccessToken
+  = lens _pzcsmpAccessToken
+      (\ s a -> s{_pzcsmpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcsmpUploadType :: Lens' ProjectsZonesClustersSetMaintenancePolicy (Maybe Text)
+pzcsmpUploadType
+  = lens _pzcsmpUploadType
+      (\ s a -> s{_pzcsmpUploadType = a})
+
+-- | The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+pzcsmpZone :: Lens' ProjectsZonesClustersSetMaintenancePolicy Text
+pzcsmpZone
+  = lens _pzcsmpZone (\ s a -> s{_pzcsmpZone = a})
+
+-- | Multipart request metadata.
+pzcsmpPayload :: Lens' ProjectsZonesClustersSetMaintenancePolicy SetMaintenancePolicyRequest
+pzcsmpPayload
+  = lens _pzcsmpPayload
+      (\ s a -> s{_pzcsmpPayload = a})
+
+-- | The name of the cluster to update.
+pzcsmpClusterId :: Lens' ProjectsZonesClustersSetMaintenancePolicy Text
+pzcsmpClusterId
+  = lens _pzcsmpClusterId
+      (\ s a -> s{_pzcsmpClusterId = a})
+
+-- | The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+pzcsmpProjectId :: Lens' ProjectsZonesClustersSetMaintenancePolicy Text
+pzcsmpProjectId
+  = lens _pzcsmpProjectId
+      (\ s a -> s{_pzcsmpProjectId = a})
+
+-- | JSONP
+pzcsmpCallback :: Lens' ProjectsZonesClustersSetMaintenancePolicy (Maybe Text)
+pzcsmpCallback
+  = lens _pzcsmpCallback
+      (\ s a -> s{_pzcsmpCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersSetMaintenancePolicy where
+        type Rs ProjectsZonesClustersSetMaintenancePolicy =
+             Operation
+        type Scopes ProjectsZonesClustersSetMaintenancePolicy
+             = '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersSetMaintenancePolicy'{..}
+          = go _pzcsmpProjectId _pzcsmpZone _pzcsmpClusterId
+              _pzcsmpXgafv
+              _pzcsmpUploadProtocol
+              _pzcsmpAccessToken
+              _pzcsmpUploadType
+              _pzcsmpCallback
+              (Just AltJSON)
+              _pzcsmpPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy
+                           ProjectsZonesClustersSetMaintenancePolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetMasterAuth.hs
@@ -0,0 +1,205 @@
+{-# 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.SetMasterAuth
+-- 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)
+--
+-- Used to set master auth materials. Currently supports :- Changing the
+-- admin password for a specific cluster. This can be either via password
+-- generation or explicitly set the password.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.setMasterAuth@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.SetMasterAuth
+    (
+    -- * REST Resource
+      ProjectsZonesClustersSetMasterAuthResource
+
+    -- * Creating a Request
+    , projectsZonesClustersSetMasterAuth
+    , ProjectsZonesClustersSetMasterAuth
+
+    -- * Request Lenses
+    , pzcsmaXgafv
+    , pzcsmaUploadProtocol
+    , pzcsmaAccessToken
+    , pzcsmaUploadType
+    , pzcsmaZone
+    , pzcsmaPayload
+    , pzcsmaClusterId
+    , pzcsmaProjectId
+    , pzcsmaCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.setMasterAuth@ method which the
+-- 'ProjectsZonesClustersSetMasterAuth' request conforms to.
+type ProjectsZonesClustersSetMasterAuthResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 CaptureMode "clusterId" "setMasterAuth" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] SetMasterAuthRequest :>
+                                 Post '[JSON] Operation
+
+-- | Used to set master auth materials. Currently supports :- Changing the
+-- admin password for a specific cluster. This can be either via password
+-- generation or explicitly set the password.
+--
+-- /See:/ 'projectsZonesClustersSetMasterAuth' smart constructor.
+data ProjectsZonesClustersSetMasterAuth = ProjectsZonesClustersSetMasterAuth'
+    { _pzcsmaXgafv          :: !(Maybe Xgafv)
+    , _pzcsmaUploadProtocol :: !(Maybe Text)
+    , _pzcsmaAccessToken    :: !(Maybe Text)
+    , _pzcsmaUploadType     :: !(Maybe Text)
+    , _pzcsmaZone           :: !Text
+    , _pzcsmaPayload        :: !SetMasterAuthRequest
+    , _pzcsmaClusterId      :: !Text
+    , _pzcsmaProjectId      :: !Text
+    , _pzcsmaCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersSetMasterAuth' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcsmaXgafv'
+--
+-- * 'pzcsmaUploadProtocol'
+--
+-- * 'pzcsmaAccessToken'
+--
+-- * 'pzcsmaUploadType'
+--
+-- * 'pzcsmaZone'
+--
+-- * 'pzcsmaPayload'
+--
+-- * 'pzcsmaClusterId'
+--
+-- * 'pzcsmaProjectId'
+--
+-- * 'pzcsmaCallback'
+projectsZonesClustersSetMasterAuth
+    :: Text -- ^ 'pzcsmaZone'
+    -> SetMasterAuthRequest -- ^ 'pzcsmaPayload'
+    -> Text -- ^ 'pzcsmaClusterId'
+    -> Text -- ^ 'pzcsmaProjectId'
+    -> ProjectsZonesClustersSetMasterAuth
+projectsZonesClustersSetMasterAuth pPzcsmaZone_ pPzcsmaPayload_ pPzcsmaClusterId_ pPzcsmaProjectId_ =
+    ProjectsZonesClustersSetMasterAuth'
+    { _pzcsmaXgafv = Nothing
+    , _pzcsmaUploadProtocol = Nothing
+    , _pzcsmaAccessToken = Nothing
+    , _pzcsmaUploadType = Nothing
+    , _pzcsmaZone = pPzcsmaZone_
+    , _pzcsmaPayload = pPzcsmaPayload_
+    , _pzcsmaClusterId = pPzcsmaClusterId_
+    , _pzcsmaProjectId = pPzcsmaProjectId_
+    , _pzcsmaCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcsmaXgafv :: Lens' ProjectsZonesClustersSetMasterAuth (Maybe Xgafv)
+pzcsmaXgafv
+  = lens _pzcsmaXgafv (\ s a -> s{_pzcsmaXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcsmaUploadProtocol :: Lens' ProjectsZonesClustersSetMasterAuth (Maybe Text)
+pzcsmaUploadProtocol
+  = lens _pzcsmaUploadProtocol
+      (\ s a -> s{_pzcsmaUploadProtocol = a})
+
+-- | OAuth access token.
+pzcsmaAccessToken :: Lens' ProjectsZonesClustersSetMasterAuth (Maybe Text)
+pzcsmaAccessToken
+  = lens _pzcsmaAccessToken
+      (\ s a -> s{_pzcsmaAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcsmaUploadType :: Lens' ProjectsZonesClustersSetMasterAuth (Maybe Text)
+pzcsmaUploadType
+  = lens _pzcsmaUploadType
+      (\ s a -> s{_pzcsmaUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcsmaZone :: Lens' ProjectsZonesClustersSetMasterAuth Text
+pzcsmaZone
+  = lens _pzcsmaZone (\ s a -> s{_pzcsmaZone = a})
+
+-- | Multipart request metadata.
+pzcsmaPayload :: Lens' ProjectsZonesClustersSetMasterAuth SetMasterAuthRequest
+pzcsmaPayload
+  = lens _pzcsmaPayload
+      (\ s a -> s{_pzcsmaPayload = a})
+
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
+pzcsmaClusterId :: Lens' ProjectsZonesClustersSetMasterAuth Text
+pzcsmaClusterId
+  = lens _pzcsmaClusterId
+      (\ s a -> s{_pzcsmaClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
+pzcsmaProjectId :: Lens' ProjectsZonesClustersSetMasterAuth Text
+pzcsmaProjectId
+  = lens _pzcsmaProjectId
+      (\ s a -> s{_pzcsmaProjectId = a})
+
+-- | JSONP
+pzcsmaCallback :: Lens' ProjectsZonesClustersSetMasterAuth (Maybe Text)
+pzcsmaCallback
+  = lens _pzcsmaCallback
+      (\ s a -> s{_pzcsmaCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersSetMasterAuth where
+        type Rs ProjectsZonesClustersSetMasterAuth =
+             Operation
+        type Scopes ProjectsZonesClustersSetMasterAuth =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient ProjectsZonesClustersSetMasterAuth'{..}
+          = go _pzcsmaProjectId _pzcsmaZone _pzcsmaClusterId
+              _pzcsmaXgafv
+              _pzcsmaUploadProtocol
+              _pzcsmaAccessToken
+              _pzcsmaUploadType
+              _pzcsmaCallback
+              (Just AltJSON)
+              _pzcsmaPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersSetMasterAuthResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/SetNetworkPolicy.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.SetNetworkPolicy
+-- 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)
+--
+-- Enables\/Disables Network Policy for a cluster.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.setNetworkPolicy@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.SetNetworkPolicy
+    (
+    -- * REST Resource
+      ProjectsZonesClustersSetNetworkPolicyResource
+
+    -- * Creating a Request
+    , projectsZonesClustersSetNetworkPolicy
+    , ProjectsZonesClustersSetNetworkPolicy
+
+    -- * Request Lenses
+    , pzcsnpXgafv
+    , pzcsnpUploadProtocol
+    , pzcsnpAccessToken
+    , pzcsnpUploadType
+    , pzcsnpZone
+    , pzcsnpPayload
+    , pzcsnpClusterId
+    , pzcsnpProjectId
+    , pzcsnpCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.setNetworkPolicy@ method which the
+-- 'ProjectsZonesClustersSetNetworkPolicy' request conforms to.
+type ProjectsZonesClustersSetNetworkPolicyResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 CaptureMode "clusterId" "setNetworkPolicy" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] SetNetworkPolicyRequest :>
+                                 Post '[JSON] Operation
+
+-- | Enables\/Disables Network Policy for a cluster.
+--
+-- /See:/ 'projectsZonesClustersSetNetworkPolicy' smart constructor.
+data ProjectsZonesClustersSetNetworkPolicy = ProjectsZonesClustersSetNetworkPolicy'
+    { _pzcsnpXgafv          :: !(Maybe Xgafv)
+    , _pzcsnpUploadProtocol :: !(Maybe Text)
+    , _pzcsnpAccessToken    :: !(Maybe Text)
+    , _pzcsnpUploadType     :: !(Maybe Text)
+    , _pzcsnpZone           :: !Text
+    , _pzcsnpPayload        :: !SetNetworkPolicyRequest
+    , _pzcsnpClusterId      :: !Text
+    , _pzcsnpProjectId      :: !Text
+    , _pzcsnpCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersSetNetworkPolicy' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcsnpXgafv'
+--
+-- * 'pzcsnpUploadProtocol'
+--
+-- * 'pzcsnpAccessToken'
+--
+-- * 'pzcsnpUploadType'
+--
+-- * 'pzcsnpZone'
+--
+-- * 'pzcsnpPayload'
+--
+-- * 'pzcsnpClusterId'
+--
+-- * 'pzcsnpProjectId'
+--
+-- * 'pzcsnpCallback'
+projectsZonesClustersSetNetworkPolicy
+    :: Text -- ^ 'pzcsnpZone'
+    -> SetNetworkPolicyRequest -- ^ 'pzcsnpPayload'
+    -> Text -- ^ 'pzcsnpClusterId'
+    -> Text -- ^ 'pzcsnpProjectId'
+    -> ProjectsZonesClustersSetNetworkPolicy
+projectsZonesClustersSetNetworkPolicy pPzcsnpZone_ pPzcsnpPayload_ pPzcsnpClusterId_ pPzcsnpProjectId_ =
+    ProjectsZonesClustersSetNetworkPolicy'
+    { _pzcsnpXgafv = Nothing
+    , _pzcsnpUploadProtocol = Nothing
+    , _pzcsnpAccessToken = Nothing
+    , _pzcsnpUploadType = Nothing
+    , _pzcsnpZone = pPzcsnpZone_
+    , _pzcsnpPayload = pPzcsnpPayload_
+    , _pzcsnpClusterId = pPzcsnpClusterId_
+    , _pzcsnpProjectId = pPzcsnpProjectId_
+    , _pzcsnpCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcsnpXgafv :: Lens' ProjectsZonesClustersSetNetworkPolicy (Maybe Xgafv)
+pzcsnpXgafv
+  = lens _pzcsnpXgafv (\ s a -> s{_pzcsnpXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcsnpUploadProtocol :: Lens' ProjectsZonesClustersSetNetworkPolicy (Maybe Text)
+pzcsnpUploadProtocol
+  = lens _pzcsnpUploadProtocol
+      (\ s a -> s{_pzcsnpUploadProtocol = a})
+
+-- | OAuth access token.
+pzcsnpAccessToken :: Lens' ProjectsZonesClustersSetNetworkPolicy (Maybe Text)
+pzcsnpAccessToken
+  = lens _pzcsnpAccessToken
+      (\ s a -> s{_pzcsnpAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcsnpUploadType :: Lens' ProjectsZonesClustersSetNetworkPolicy (Maybe Text)
+pzcsnpUploadType
+  = lens _pzcsnpUploadType
+      (\ s a -> s{_pzcsnpUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcsnpZone :: Lens' ProjectsZonesClustersSetNetworkPolicy Text
+pzcsnpZone
+  = lens _pzcsnpZone (\ s a -> s{_pzcsnpZone = a})
+
+-- | Multipart request metadata.
+pzcsnpPayload :: Lens' ProjectsZonesClustersSetNetworkPolicy SetNetworkPolicyRequest
+pzcsnpPayload
+  = lens _pzcsnpPayload
+      (\ s a -> s{_pzcsnpPayload = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+pzcsnpClusterId :: Lens' ProjectsZonesClustersSetNetworkPolicy Text
+pzcsnpClusterId
+  = lens _pzcsnpClusterId
+      (\ s a -> s{_pzcsnpClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+pzcsnpProjectId :: Lens' ProjectsZonesClustersSetNetworkPolicy Text
+pzcsnpProjectId
+  = lens _pzcsnpProjectId
+      (\ s a -> s{_pzcsnpProjectId = a})
+
+-- | JSONP
+pzcsnpCallback :: Lens' ProjectsZonesClustersSetNetworkPolicy (Maybe Text)
+pzcsnpCallback
+  = lens _pzcsnpCallback
+      (\ s a -> s{_pzcsnpCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersSetNetworkPolicy where
+        type Rs ProjectsZonesClustersSetNetworkPolicy =
+             Operation
+        type Scopes ProjectsZonesClustersSetNetworkPolicy =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersSetNetworkPolicy'{..}
+          = go _pzcsnpProjectId _pzcsnpZone _pzcsnpClusterId
+              _pzcsnpXgafv
+              _pzcsnpUploadProtocol
+              _pzcsnpAccessToken
+              _pzcsnpUploadType
+              _pzcsnpCallback
+              (Just AltJSON)
+              _pzcsnpPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersSetNetworkPolicyResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Clusters/StartIPRotation.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Container.Projects.Zones.Clusters.StartIPRotation
+-- 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)
+--
+-- Start master IP rotation.
+--
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.startIpRotation@.
+module Network.Google.Resource.Container.Projects.Zones.Clusters.StartIPRotation
+    (
+    -- * REST Resource
+      ProjectsZonesClustersStartIPRotationResource
+
+    -- * Creating a Request
+    , projectsZonesClustersStartIPRotation
+    , ProjectsZonesClustersStartIPRotation
+
+    -- * Request Lenses
+    , pzcsirXgafv
+    , pzcsirUploadProtocol
+    , pzcsirAccessToken
+    , pzcsirUploadType
+    , pzcsirZone
+    , pzcsirPayload
+    , pzcsirClusterId
+    , pzcsirProjectId
+    , pzcsirCallback
+    ) where
+
+import           Network.Google.Container.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @container.projects.zones.clusters.startIpRotation@ method which the
+-- 'ProjectsZonesClustersStartIPRotation' request conforms to.
+type ProjectsZonesClustersStartIPRotationResource =
+     "v1" :>
+       "projects" :>
+         Capture "projectId" Text :>
+           "zones" :>
+             Capture "zone" Text :>
+               "clusters" :>
+                 CaptureMode "clusterId" "startIpRotation" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] StartIPRotationRequest :>
+                                 Post '[JSON] Operation
+
+-- | Start master IP rotation.
+--
+-- /See:/ 'projectsZonesClustersStartIPRotation' smart constructor.
+data ProjectsZonesClustersStartIPRotation = ProjectsZonesClustersStartIPRotation'
+    { _pzcsirXgafv          :: !(Maybe Xgafv)
+    , _pzcsirUploadProtocol :: !(Maybe Text)
+    , _pzcsirAccessToken    :: !(Maybe Text)
+    , _pzcsirUploadType     :: !(Maybe Text)
+    , _pzcsirZone           :: !Text
+    , _pzcsirPayload        :: !StartIPRotationRequest
+    , _pzcsirClusterId      :: !Text
+    , _pzcsirProjectId      :: !Text
+    , _pzcsirCallback       :: !(Maybe Text)
+    } deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ProjectsZonesClustersStartIPRotation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pzcsirXgafv'
+--
+-- * 'pzcsirUploadProtocol'
+--
+-- * 'pzcsirAccessToken'
+--
+-- * 'pzcsirUploadType'
+--
+-- * 'pzcsirZone'
+--
+-- * 'pzcsirPayload'
+--
+-- * 'pzcsirClusterId'
+--
+-- * 'pzcsirProjectId'
+--
+-- * 'pzcsirCallback'
+projectsZonesClustersStartIPRotation
+    :: Text -- ^ 'pzcsirZone'
+    -> StartIPRotationRequest -- ^ 'pzcsirPayload'
+    -> Text -- ^ 'pzcsirClusterId'
+    -> Text -- ^ 'pzcsirProjectId'
+    -> ProjectsZonesClustersStartIPRotation
+projectsZonesClustersStartIPRotation pPzcsirZone_ pPzcsirPayload_ pPzcsirClusterId_ pPzcsirProjectId_ =
+    ProjectsZonesClustersStartIPRotation'
+    { _pzcsirXgafv = Nothing
+    , _pzcsirUploadProtocol = Nothing
+    , _pzcsirAccessToken = Nothing
+    , _pzcsirUploadType = Nothing
+    , _pzcsirZone = pPzcsirZone_
+    , _pzcsirPayload = pPzcsirPayload_
+    , _pzcsirClusterId = pPzcsirClusterId_
+    , _pzcsirProjectId = pPzcsirProjectId_
+    , _pzcsirCallback = Nothing
+    }
+
+-- | V1 error format.
+pzcsirXgafv :: Lens' ProjectsZonesClustersStartIPRotation (Maybe Xgafv)
+pzcsirXgafv
+  = lens _pzcsirXgafv (\ s a -> s{_pzcsirXgafv = a})
+
+-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+pzcsirUploadProtocol :: Lens' ProjectsZonesClustersStartIPRotation (Maybe Text)
+pzcsirUploadProtocol
+  = lens _pzcsirUploadProtocol
+      (\ s a -> s{_pzcsirUploadProtocol = a})
+
+-- | OAuth access token.
+pzcsirAccessToken :: Lens' ProjectsZonesClustersStartIPRotation (Maybe Text)
+pzcsirAccessToken
+  = lens _pzcsirAccessToken
+      (\ s a -> s{_pzcsirAccessToken = a})
+
+-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+pzcsirUploadType :: Lens' ProjectsZonesClustersStartIPRotation (Maybe Text)
+pzcsirUploadType
+  = lens _pzcsirUploadType
+      (\ s a -> s{_pzcsirUploadType = a})
+
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
+pzcsirZone :: Lens' ProjectsZonesClustersStartIPRotation Text
+pzcsirZone
+  = lens _pzcsirZone (\ s a -> s{_pzcsirZone = a})
+
+-- | Multipart request metadata.
+pzcsirPayload :: Lens' ProjectsZonesClustersStartIPRotation StartIPRotationRequest
+pzcsirPayload
+  = lens _pzcsirPayload
+      (\ s a -> s{_pzcsirPayload = a})
+
+-- | Deprecated. The name of the cluster. This field has been deprecated and
+-- replaced by the name field.
+pzcsirClusterId :: Lens' ProjectsZonesClustersStartIPRotation Text
+pzcsirClusterId
+  = lens _pzcsirClusterId
+      (\ s a -> s{_pzcsirClusterId = a})
+
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/developers.google.com\/console\/help\/new\/#projectnumber).
+-- This field has been deprecated and replaced by the name field.
+pzcsirProjectId :: Lens' ProjectsZonesClustersStartIPRotation Text
+pzcsirProjectId
+  = lens _pzcsirProjectId
+      (\ s a -> s{_pzcsirProjectId = a})
+
+-- | JSONP
+pzcsirCallback :: Lens' ProjectsZonesClustersStartIPRotation (Maybe Text)
+pzcsirCallback
+  = lens _pzcsirCallback
+      (\ s a -> s{_pzcsirCallback = a})
+
+instance GoogleRequest
+         ProjectsZonesClustersStartIPRotation where
+        type Rs ProjectsZonesClustersStartIPRotation =
+             Operation
+        type Scopes ProjectsZonesClustersStartIPRotation =
+             '["https://www.googleapis.com/auth/cloud-platform"]
+        requestClient
+          ProjectsZonesClustersStartIPRotation'{..}
+          = go _pzcsirProjectId _pzcsirZone _pzcsirClusterId
+              _pzcsirXgafv
+              _pzcsirUploadProtocol
+              _pzcsirAccessToken
+              _pzcsirUploadType
+              _pzcsirCallback
+              (Just AltJSON)
+              _pzcsirPayload
+              containerService
+          where go
+                  = buildClient
+                      (Proxy ::
+                         Proxy ProjectsZonesClustersStartIPRotationResource)
+                      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
@@ -22,7 +22,7 @@
 --
 -- 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@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.clusters.update@.
 module Network.Google.Resource.Container.Projects.Zones.Clusters.Update
     (
     -- * REST Resource
@@ -35,12 +35,10 @@
     -- * Request Lenses
     , pzcuXgafv
     , pzcuUploadProtocol
-    , pzcuPp
     , pzcuAccessToken
     , pzcuUploadType
     , pzcuZone
     , pzcuPayload
-    , pzcuBearerToken
     , pzcuClusterId
     , pzcuProjectId
     , pzcuCallback
@@ -59,29 +57,25 @@
              Capture "zone" Text :>
                "clusters" :>
                  Capture "clusterId" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :>
-                                   ReqBody '[JSON] UpdateClusterRequest :>
-                                     Put '[JSON] Operation
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] UpdateClusterRequest :>
+                                 Put '[JSON] Operation
 
 -- | Updates the settings of a specific cluster.
 --
 -- /See:/ 'projectsZonesClustersUpdate' smart constructor.
 data ProjectsZonesClustersUpdate = ProjectsZonesClustersUpdate'
-    { _pzcuXgafv          :: !(Maybe Text)
+    { _pzcuXgafv          :: !(Maybe Xgafv)
     , _pzcuUploadProtocol :: !(Maybe Text)
-    , _pzcuPp             :: !Bool
     , _pzcuAccessToken    :: !(Maybe Text)
     , _pzcuUploadType     :: !(Maybe Text)
     , _pzcuZone           :: !Text
     , _pzcuPayload        :: !UpdateClusterRequest
-    , _pzcuBearerToken    :: !(Maybe Text)
     , _pzcuClusterId      :: !Text
     , _pzcuProjectId      :: !Text
     , _pzcuCallback       :: !(Maybe Text)
@@ -95,8 +89,6 @@
 --
 -- * 'pzcuUploadProtocol'
 --
--- * 'pzcuPp'
---
 -- * 'pzcuAccessToken'
 --
 -- * 'pzcuUploadType'
@@ -105,8 +97,6 @@
 --
 -- * 'pzcuPayload'
 --
--- * 'pzcuBearerToken'
---
 -- * 'pzcuClusterId'
 --
 -- * 'pzcuProjectId'
@@ -122,19 +112,17 @@
     ProjectsZonesClustersUpdate'
     { _pzcuXgafv = Nothing
     , _pzcuUploadProtocol = Nothing
-    , _pzcuPp = True
     , _pzcuAccessToken = Nothing
     , _pzcuUploadType = Nothing
     , _pzcuZone = pPzcuZone_
     , _pzcuPayload = pPzcuPayload_
-    , _pzcuBearerToken = Nothing
     , _pzcuClusterId = pPzcuClusterId_
     , _pzcuProjectId = pPzcuProjectId_
     , _pzcuCallback = Nothing
     }
 
 -- | V1 error format.
-pzcuXgafv :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
+pzcuXgafv :: Lens' ProjectsZonesClustersUpdate (Maybe Xgafv)
 pzcuXgafv
   = lens _pzcuXgafv (\ s a -> s{_pzcuXgafv = a})
 
@@ -144,10 +132,6 @@
   = lens _pzcuUploadProtocol
       (\ s a -> s{_pzcuUploadProtocol = a})
 
--- | Pretty-print response.
-pzcuPp :: Lens' ProjectsZonesClustersUpdate Bool
-pzcuPp = lens _pzcuPp (\ s a -> s{_pzcuPp = a})
-
 -- | OAuth access token.
 pzcuAccessToken :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
 pzcuAccessToken
@@ -160,8 +144,9 @@
   = lens _pzcuUploadType
       (\ s a -> s{_pzcuUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzcuZone :: Lens' ProjectsZonesClustersUpdate Text
 pzcuZone = lens _pzcuZone (\ s a -> s{_pzcuZone = a})
 
@@ -170,20 +155,16 @@
 pzcuPayload
   = lens _pzcuPayload (\ s a -> s{_pzcuPayload = a})
 
--- | OAuth bearer token.
-pzcuBearerToken :: Lens' ProjectsZonesClustersUpdate (Maybe Text)
-pzcuBearerToken
-  = lens _pzcuBearerToken
-      (\ s a -> s{_pzcuBearerToken = a})
-
--- | The name of the cluster to upgrade.
+-- | Deprecated. The name of the cluster to upgrade. This field has been
+-- deprecated and replaced by the name field.
 pzcuClusterId :: Lens' ProjectsZonesClustersUpdate Text
 pzcuClusterId
   = lens _pzcuClusterId
       (\ s a -> s{_pzcuClusterId = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzcuProjectId :: Lens' ProjectsZonesClustersUpdate Text
 pzcuProjectId
   = lens _pzcuProjectId
@@ -203,10 +184,8 @@
           = go _pzcuProjectId _pzcuZone _pzcuClusterId
               _pzcuXgafv
               _pzcuUploadProtocol
-              (Just _pzcuPp)
               _pzcuAccessToken
               _pzcuUploadType
-              _pzcuBearerToken
               _pzcuCallback
               (Just AltJSON)
               _pzcuPayload
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
@@ -20,9 +20,9 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Returns configuration info about the Container Engine service.
+-- Returns configuration info about the Kubernetes Engine service.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.getServerconfig@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.getServerconfig@.
 module Network.Google.Resource.Container.Projects.Zones.GetServerConfig
     (
     -- * REST Resource
@@ -35,11 +35,10 @@
     -- * Request Lenses
     , pzgscXgafv
     , pzgscUploadProtocol
-    , pzgscPp
     , pzgscAccessToken
     , pzgscUploadType
     , pzgscZone
-    , pzgscBearerToken
+    , pzgscName
     , pzgscProjectId
     , pzgscCallback
     ) where
@@ -56,27 +55,25 @@
            "zones" :>
              Capture "zone" Text :>
                "serverconfig" :>
-                 QueryParam "$.xgafv" Text :>
+                 QueryParam "$.xgafv" Xgafv :>
                    QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
-                       QueryParam "access_token" Text :>
-                         QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 Get '[JSON] ServerConfig
+                     QueryParam "access_token" Text :>
+                       QueryParam "uploadType" Text :>
+                         QueryParam "name" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] ServerConfig
 
--- | Returns configuration info about the Container Engine service.
+-- | Returns configuration info about the Kubernetes Engine service.
 --
 -- /See:/ 'projectsZonesGetServerConfig' smart constructor.
 data ProjectsZonesGetServerConfig = ProjectsZonesGetServerConfig'
-    { _pzgscXgafv          :: !(Maybe Text)
+    { _pzgscXgafv          :: !(Maybe Xgafv)
     , _pzgscUploadProtocol :: !(Maybe Text)
-    , _pzgscPp             :: !Bool
     , _pzgscAccessToken    :: !(Maybe Text)
     , _pzgscUploadType     :: !(Maybe Text)
     , _pzgscZone           :: !Text
-    , _pzgscBearerToken    :: !(Maybe Text)
+    , _pzgscName           :: !(Maybe Text)
     , _pzgscProjectId      :: !Text
     , _pzgscCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -89,15 +86,13 @@
 --
 -- * 'pzgscUploadProtocol'
 --
--- * 'pzgscPp'
---
 -- * 'pzgscAccessToken'
 --
 -- * 'pzgscUploadType'
 --
 -- * 'pzgscZone'
 --
--- * 'pzgscBearerToken'
+-- * 'pzgscName'
 --
 -- * 'pzgscProjectId'
 --
@@ -110,17 +105,16 @@
     ProjectsZonesGetServerConfig'
     { _pzgscXgafv = Nothing
     , _pzgscUploadProtocol = Nothing
-    , _pzgscPp = True
     , _pzgscAccessToken = Nothing
     , _pzgscUploadType = Nothing
     , _pzgscZone = pPzgscZone_
-    , _pzgscBearerToken = Nothing
+    , _pzgscName = Nothing
     , _pzgscProjectId = pPzgscProjectId_
     , _pzgscCallback = Nothing
     }
 
 -- | V1 error format.
-pzgscXgafv :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscXgafv :: Lens' ProjectsZonesGetServerConfig (Maybe Xgafv)
 pzgscXgafv
   = lens _pzgscXgafv (\ s a -> s{_pzgscXgafv = a})
 
@@ -130,10 +124,6 @@
   = lens _pzgscUploadProtocol
       (\ s a -> s{_pzgscUploadProtocol = a})
 
--- | Pretty-print response.
-pzgscPp :: Lens' ProjectsZonesGetServerConfig Bool
-pzgscPp = lens _pzgscPp (\ s a -> s{_pzgscPp = a})
-
 -- | OAuth access token.
 pzgscAccessToken :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
 pzgscAccessToken
@@ -146,20 +136,22 @@
   = lens _pzgscUploadType
       (\ s a -> s{_pzgscUploadType = a})
 
--- | The name of the Google Compute Engine
--- [zone](\/compute\/docs\/zones#available) to return operations for.
+-- | Deprecated. The name of the Google Compute Engine
+-- [zone](\/compute\/docs\/zones#available) to return operations for. This
+-- field has been deprecated and replaced by the name field.
 pzgscZone :: Lens' ProjectsZonesGetServerConfig Text
 pzgscZone
   = lens _pzgscZone (\ s a -> s{_pzgscZone = a})
 
--- | OAuth bearer token.
-pzgscBearerToken :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
-pzgscBearerToken
-  = lens _pzgscBearerToken
-      (\ s a -> s{_pzgscBearerToken = a})
+-- | The name (project and location) of the server config to get Specified in
+-- the format \'projects\/*\/locations\/*\'.
+pzgscName :: Lens' ProjectsZonesGetServerConfig (Maybe Text)
+pzgscName
+  = lens _pzgscName (\ s a -> s{_pzgscName = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzgscProjectId :: Lens' ProjectsZonesGetServerConfig Text
 pzgscProjectId
   = lens _pzgscProjectId
@@ -179,10 +171,9 @@
         requestClient ProjectsZonesGetServerConfig'{..}
           = go _pzgscProjectId _pzgscZone _pzgscXgafv
               _pzgscUploadProtocol
-              (Just _pzgscPp)
               _pzgscAccessToken
               _pzgscUploadType
-              _pzgscBearerToken
+              _pzgscName
               _pzgscCallback
               (Just AltJSON)
               containerService
diff --git a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
--- a/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
+++ b/gen/Network/Google/Resource/Container/Projects/Zones/Operations/Cancel.hs
@@ -22,7 +22,7 @@
 --
 -- Cancels the specified operation.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.operations.cancel@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.operations.cancel@.
 module Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
     (
     -- * REST Resource
@@ -35,12 +35,10 @@
     -- * Request Lenses
     , pzocXgafv
     , pzocUploadProtocol
-    , pzocPp
     , pzocAccessToken
     , pzocUploadType
     , pzocZone
     , pzocPayload
-    , pzocBearerToken
     , pzocProjectId
     , pzocOperationId
     , pzocCallback
@@ -59,29 +57,25 @@
              Capture "zone" Text :>
                "operations" :>
                  CaptureMode "operationId" "cancel" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      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] CancelOperationRequest :>
-                                     Post '[JSON] Empty
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               ReqBody '[JSON] CancelOperationRequest :>
+                                 Post '[JSON] Empty
 
 -- | Cancels the specified operation.
 --
 -- /See:/ 'projectsZonesOperationsCancel' smart constructor.
 data ProjectsZonesOperationsCancel = ProjectsZonesOperationsCancel'
-    { _pzocXgafv          :: !(Maybe Text)
+    { _pzocXgafv          :: !(Maybe Xgafv)
     , _pzocUploadProtocol :: !(Maybe Text)
-    , _pzocPp             :: !Bool
     , _pzocAccessToken    :: !(Maybe Text)
     , _pzocUploadType     :: !(Maybe Text)
     , _pzocZone           :: !Text
     , _pzocPayload        :: !CancelOperationRequest
-    , _pzocBearerToken    :: !(Maybe Text)
     , _pzocProjectId      :: !Text
     , _pzocOperationId    :: !Text
     , _pzocCallback       :: !(Maybe Text)
@@ -95,8 +89,6 @@
 --
 -- * 'pzocUploadProtocol'
 --
--- * 'pzocPp'
---
 -- * 'pzocAccessToken'
 --
 -- * 'pzocUploadType'
@@ -105,8 +97,6 @@
 --
 -- * 'pzocPayload'
 --
--- * 'pzocBearerToken'
---
 -- * 'pzocProjectId'
 --
 -- * 'pzocOperationId'
@@ -122,19 +112,17 @@
     ProjectsZonesOperationsCancel'
     { _pzocXgafv = Nothing
     , _pzocUploadProtocol = Nothing
-    , _pzocPp = True
     , _pzocAccessToken = Nothing
     , _pzocUploadType = Nothing
     , _pzocZone = pPzocZone_
     , _pzocPayload = pPzocPayload_
-    , _pzocBearerToken = Nothing
     , _pzocProjectId = pPzocProjectId_
     , _pzocOperationId = pPzocOperationId_
     , _pzocCallback = Nothing
     }
 
 -- | V1 error format.
-pzocXgafv :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
+pzocXgafv :: Lens' ProjectsZonesOperationsCancel (Maybe Xgafv)
 pzocXgafv
   = lens _pzocXgafv (\ s a -> s{_pzocXgafv = a})
 
@@ -144,10 +132,6 @@
   = lens _pzocUploadProtocol
       (\ s a -> s{_pzocUploadProtocol = a})
 
--- | Pretty-print response.
-pzocPp :: Lens' ProjectsZonesOperationsCancel Bool
-pzocPp = lens _pzocPp (\ s a -> s{_pzocPp = a})
-
 -- | OAuth access token.
 pzocAccessToken :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
 pzocAccessToken
@@ -160,8 +144,9 @@
   = lens _pzocUploadType
       (\ s a -> s{_pzocUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the operation resides.
+-- This field has been deprecated and replaced by the name field.
 pzocZone :: Lens' ProjectsZonesOperationsCancel Text
 pzocZone = lens _pzocZone (\ s a -> s{_pzocZone = a})
 
@@ -170,20 +155,16 @@
 pzocPayload
   = lens _pzocPayload (\ s a -> s{_pzocPayload = a})
 
--- | OAuth bearer token.
-pzocBearerToken :: Lens' ProjectsZonesOperationsCancel (Maybe Text)
-pzocBearerToken
-  = lens _pzocBearerToken
-      (\ s a -> s{_pzocBearerToken = a})
-
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzocProjectId :: Lens' ProjectsZonesOperationsCancel Text
 pzocProjectId
   = lens _pzocProjectId
       (\ s a -> s{_pzocProjectId = a})
 
--- | The server-assigned \`name\` of the operation.
+-- | Deprecated. The server-assigned \`name\` of the operation. This field
+-- has been deprecated and replaced by the name field.
 pzocOperationId :: Lens' ProjectsZonesOperationsCancel Text
 pzocOperationId
   = lens _pzocOperationId
@@ -203,10 +184,8 @@
           = go _pzocProjectId _pzocZone _pzocOperationId
               _pzocXgafv
               _pzocUploadProtocol
-              (Just _pzocPp)
               _pzocAccessToken
               _pzocUploadType
-              _pzocBearerToken
               _pzocCallback
               (Just AltJSON)
               _pzocPayload
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
@@ -22,7 +22,7 @@
 --
 -- Gets the specified operation.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.operations.get@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.operations.get@.
 module Network.Google.Resource.Container.Projects.Zones.Operations.Get
     (
     -- * REST Resource
@@ -35,11 +35,10 @@
     -- * Request Lenses
     , pzogXgafv
     , pzogUploadProtocol
-    , pzogPp
     , pzogAccessToken
     , pzogUploadType
     , pzogZone
-    , pzogBearerToken
+    , pzogName
     , pzogProjectId
     , pzogOperationId
     , pzogCallback
@@ -58,27 +57,24 @@
              Capture "zone" Text :>
                "operations" :>
                  Capture "operationId" Text :>
-                   QueryParam "$.xgafv" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
                      QueryParam "upload_protocol" Text :>
-                       QueryParam "pp" Bool :>
-                         QueryParam "access_token" Text :>
-                           QueryParam "uploadType" Text :>
-                             QueryParam "bearer_token" Text :>
-                               QueryParam "callback" Text :>
-                                 QueryParam "alt" AltJSON :>
-                                   Get '[JSON] Operation
+                       QueryParam "access_token" Text :>
+                         QueryParam "uploadType" Text :>
+                           QueryParam "name" Text :>
+                             QueryParam "callback" Text :>
+                               QueryParam "alt" AltJSON :> Get '[JSON] Operation
 
 -- | Gets the specified operation.
 --
 -- /See:/ 'projectsZonesOperationsGet' smart constructor.
 data ProjectsZonesOperationsGet = ProjectsZonesOperationsGet'
-    { _pzogXgafv          :: !(Maybe Text)
+    { _pzogXgafv          :: !(Maybe Xgafv)
     , _pzogUploadProtocol :: !(Maybe Text)
-    , _pzogPp             :: !Bool
     , _pzogAccessToken    :: !(Maybe Text)
     , _pzogUploadType     :: !(Maybe Text)
     , _pzogZone           :: !Text
-    , _pzogBearerToken    :: !(Maybe Text)
+    , _pzogName           :: !(Maybe Text)
     , _pzogProjectId      :: !Text
     , _pzogOperationId    :: !Text
     , _pzogCallback       :: !(Maybe Text)
@@ -92,15 +88,13 @@
 --
 -- * 'pzogUploadProtocol'
 --
--- * 'pzogPp'
---
 -- * 'pzogAccessToken'
 --
 -- * 'pzogUploadType'
 --
 -- * 'pzogZone'
 --
--- * 'pzogBearerToken'
+-- * 'pzogName'
 --
 -- * 'pzogProjectId'
 --
@@ -116,18 +110,17 @@
     ProjectsZonesOperationsGet'
     { _pzogXgafv = Nothing
     , _pzogUploadProtocol = Nothing
-    , _pzogPp = True
     , _pzogAccessToken = Nothing
     , _pzogUploadType = Nothing
     , _pzogZone = pPzogZone_
-    , _pzogBearerToken = Nothing
+    , _pzogName = Nothing
     , _pzogProjectId = pPzogProjectId_
     , _pzogOperationId = pPzogOperationId_
     , _pzogCallback = Nothing
     }
 
 -- | V1 error format.
-pzogXgafv :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogXgafv :: Lens' ProjectsZonesOperationsGet (Maybe Xgafv)
 pzogXgafv
   = lens _pzogXgafv (\ s a -> s{_pzogXgafv = a})
 
@@ -137,10 +130,6 @@
   = lens _pzogUploadProtocol
       (\ s a -> s{_pzogUploadProtocol = a})
 
--- | Pretty-print response.
-pzogPp :: Lens' ProjectsZonesOperationsGet Bool
-pzogPp = lens _pzogPp (\ s a -> s{_pzogPp = a})
-
 -- | OAuth access token.
 pzogAccessToken :: Lens' ProjectsZonesOperationsGet (Maybe Text)
 pzogAccessToken
@@ -153,25 +142,27 @@
   = lens _pzogUploadType
       (\ s a -> s{_pzogUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) in which the cluster resides.
+-- This field has been deprecated and replaced by the name field.
 pzogZone :: Lens' ProjectsZonesOperationsGet Text
 pzogZone = lens _pzogZone (\ s a -> s{_pzogZone = a})
 
--- | OAuth bearer token.
-pzogBearerToken :: Lens' ProjectsZonesOperationsGet (Maybe Text)
-pzogBearerToken
-  = lens _pzogBearerToken
-      (\ s a -> s{_pzogBearerToken = a})
+-- | The name (project, location, operation id) of the operation to get.
+-- Specified in the format \'projects\/*\/locations\/*\/operations\/*\'.
+pzogName :: Lens' ProjectsZonesOperationsGet (Maybe Text)
+pzogName = lens _pzogName (\ s a -> s{_pzogName = a})
 
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the name field.
 pzogProjectId :: Lens' ProjectsZonesOperationsGet Text
 pzogProjectId
   = lens _pzogProjectId
       (\ s a -> s{_pzogProjectId = a})
 
--- | The server-assigned \`name\` of the operation.
+-- | Deprecated. The server-assigned \`name\` of the operation. This field
+-- has been deprecated and replaced by the name field.
 pzogOperationId :: Lens' ProjectsZonesOperationsGet Text
 pzogOperationId
   = lens _pzogOperationId
@@ -191,10 +182,9 @@
           = go _pzogProjectId _pzogZone _pzogOperationId
               _pzogXgafv
               _pzogUploadProtocol
-              (Just _pzogPp)
               _pzogAccessToken
               _pzogUploadType
-              _pzogBearerToken
+              _pzogName
               _pzogCallback
               (Just AltJSON)
               containerService
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
@@ -22,7 +22,7 @@
 --
 -- Lists all operations in a project in a specific zone or all zones.
 --
--- /See:/ <https://cloud.google.com/container-engine/ Google Container Engine API Reference> for @container.projects.zones.operations.list@.
+-- /See:/ <https://cloud.google.com/container-engine/ Kubernetes Engine API Reference> for @container.projects.zones.operations.list@.
 module Network.Google.Resource.Container.Projects.Zones.Operations.List
     (
     -- * REST Resource
@@ -33,13 +33,12 @@
     , ProjectsZonesOperationsList
 
     -- * Request Lenses
+    , pzolParent
     , pzolXgafv
     , pzolUploadProtocol
-    , pzolPp
     , pzolAccessToken
     , pzolUploadType
     , pzolZone
-    , pzolBearerToken
     , pzolProjectId
     , pzolCallback
     ) where
@@ -56,27 +55,25 @@
            "zones" :>
              Capture "zone" Text :>
                "operations" :>
-                 QueryParam "$.xgafv" Text :>
-                   QueryParam "upload_protocol" Text :>
-                     QueryParam "pp" Bool :>
+                 QueryParam "parent" Text :>
+                   QueryParam "$.xgafv" Xgafv :>
+                     QueryParam "upload_protocol" Text :>
                        QueryParam "access_token" Text :>
                          QueryParam "uploadType" Text :>
-                           QueryParam "bearer_token" Text :>
-                             QueryParam "callback" Text :>
-                               QueryParam "alt" AltJSON :>
-                                 Get '[JSON] ListOperationsResponse
+                           QueryParam "callback" Text :>
+                             QueryParam "alt" AltJSON :>
+                               Get '[JSON] ListOperationsResponse
 
 -- | Lists all operations in a project in a specific zone or all zones.
 --
 -- /See:/ 'projectsZonesOperationsList' smart constructor.
 data ProjectsZonesOperationsList = ProjectsZonesOperationsList'
-    { _pzolXgafv          :: !(Maybe Text)
+    { _pzolParent         :: !(Maybe Text)
+    , _pzolXgafv          :: !(Maybe Xgafv)
     , _pzolUploadProtocol :: !(Maybe Text)
-    , _pzolPp             :: !Bool
     , _pzolAccessToken    :: !(Maybe Text)
     , _pzolUploadType     :: !(Maybe Text)
     , _pzolZone           :: !Text
-    , _pzolBearerToken    :: !(Maybe Text)
     , _pzolProjectId      :: !Text
     , _pzolCallback       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -85,20 +82,18 @@
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pzolParent'
+--
 -- * 'pzolXgafv'
 --
 -- * 'pzolUploadProtocol'
 --
--- * 'pzolPp'
---
 -- * 'pzolAccessToken'
 --
 -- * 'pzolUploadType'
 --
 -- * 'pzolZone'
 --
--- * 'pzolBearerToken'
---
 -- * 'pzolProjectId'
 --
 -- * 'pzolCallback'
@@ -108,19 +103,25 @@
     -> ProjectsZonesOperationsList
 projectsZonesOperationsList pPzolZone_ pPzolProjectId_ =
     ProjectsZonesOperationsList'
-    { _pzolXgafv = Nothing
+    { _pzolParent = Nothing
+    , _pzolXgafv = Nothing
     , _pzolUploadProtocol = Nothing
-    , _pzolPp = True
     , _pzolAccessToken = Nothing
     , _pzolUploadType = Nothing
     , _pzolZone = pPzolZone_
-    , _pzolBearerToken = Nothing
     , _pzolProjectId = pPzolProjectId_
     , _pzolCallback = Nothing
     }
 
+-- | The parent (project and location) where the operations will be listed.
+-- Specified in the format \'projects\/*\/locations\/*\'. Location \"-\"
+-- matches all zones and all regions.
+pzolParent :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolParent
+  = lens _pzolParent (\ s a -> s{_pzolParent = a})
+
 -- | V1 error format.
-pzolXgafv :: Lens' ProjectsZonesOperationsList (Maybe Text)
+pzolXgafv :: Lens' ProjectsZonesOperationsList (Maybe Xgafv)
 pzolXgafv
   = lens _pzolXgafv (\ s a -> s{_pzolXgafv = a})
 
@@ -130,10 +131,6 @@
   = lens _pzolUploadProtocol
       (\ s a -> s{_pzolUploadProtocol = a})
 
--- | Pretty-print response.
-pzolPp :: Lens' ProjectsZonesOperationsList Bool
-pzolPp = lens _pzolPp (\ s a -> s{_pzolPp = a})
-
 -- | OAuth access token.
 pzolAccessToken :: Lens' ProjectsZonesOperationsList (Maybe Text)
 pzolAccessToken
@@ -146,20 +143,16 @@
   = lens _pzolUploadType
       (\ s a -> s{_pzolUploadType = a})
 
--- | The name of the Google Compute Engine
+-- | Deprecated. The name of the Google Compute Engine
 -- [zone](\/compute\/docs\/zones#available) to return operations for, or
--- \`-\` for all zones.
+-- \`-\` for all zones. This field has been deprecated and replaced by the
+-- parent field.
 pzolZone :: Lens' ProjectsZonesOperationsList Text
 pzolZone = lens _pzolZone (\ s a -> s{_pzolZone = a})
 
--- | OAuth bearer token.
-pzolBearerToken :: Lens' ProjectsZonesOperationsList (Maybe Text)
-pzolBearerToken
-  = lens _pzolBearerToken
-      (\ s a -> s{_pzolBearerToken = a})
-
--- | The Google Developers Console [project ID or project
--- number](https:\/\/support.google.com\/cloud\/answer\/6158840).
+-- | Deprecated. The Google Developers Console [project ID or project
+-- number](https:\/\/support.google.com\/cloud\/answer\/6158840). This
+-- field has been deprecated and replaced by the parent field.
 pzolProjectId :: Lens' ProjectsZonesOperationsList Text
 pzolProjectId
   = lens _pzolProjectId
@@ -177,12 +170,10 @@
         type Scopes ProjectsZonesOperationsList =
              '["https://www.googleapis.com/auth/cloud-platform"]
         requestClient ProjectsZonesOperationsList'{..}
-          = go _pzolProjectId _pzolZone _pzolXgafv
+          = go _pzolProjectId _pzolZone _pzolParent _pzolXgafv
               _pzolUploadProtocol
-              (Just _pzolPp)
               _pzolAccessToken
               _pzolUploadType
-              _pzolBearerToken
               _pzolCallback
               (Just AltJSON)
               containerService
diff --git a/gogol-container.cabal b/gogol-container.cabal
--- a/gogol-container.cabal
+++ b/gogol-container.cabal
@@ -1,6 +1,6 @@
 name:                  gogol-container
-version:               0.3.0
-synopsis:              Google Container Engine SDK.
+version:               0.4.0
+synopsis:              Google Kubernetes Engine SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
 license:               OtherLicense
@@ -14,8 +14,8 @@
 extra-source-files:    README.md src/.gitkeep
 
 description:
-    Builds and manages clusters that run container-based applications,
-    powered by open source Kubernetes technology.
+    Builds and manages container-based applications, powered by the open
+    source Kubernetes technology.
     .
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
@@ -36,16 +36,61 @@
     exposed-modules:
           Network.Google.Container
         , Network.Google.Container.Types
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.CompleteIPRotation
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.Create
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.Delete
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.Get
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.List
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Create
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Delete
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Get
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.List
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Rollback
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetAutoscaling
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetManagement
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.SetSize
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.NodePools.Update
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetAddons
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetLegacyAbac
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetLocations
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetLogging
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetMaintenancePolicy
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetMasterAuth
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetMonitoring
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetNetworkPolicy
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.SetResourceLabels
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.StartIPRotation
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.Update
+        , Network.Google.Resource.Container.Projects.Locations.Clusters.UpdateMaster
+        , Network.Google.Resource.Container.Projects.Locations.GetServerConfig
+        , Network.Google.Resource.Container.Projects.Locations.Operations.Cancel
+        , Network.Google.Resource.Container.Projects.Locations.Operations.Get
+        , Network.Google.Resource.Container.Projects.Locations.Operations.List
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Addons
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.CompleteIPRotation
         , Network.Google.Resource.Container.Projects.Zones.Clusters.Create
         , Network.Google.Resource.Container.Projects.Zones.Clusters.Delete
         , Network.Google.Resource.Container.Projects.Zones.Clusters.Get
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.LegacyAbac
         , Network.Google.Resource.Container.Projects.Zones.Clusters.List
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Locations
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Logging
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Master
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.Monitoring
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Autoscaling
         , 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.NodePools.Rollback
         , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetManagement
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.SetSize
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.NodePools.Update
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.ResourceLabels
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.SetMaintenancePolicy
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.SetMasterAuth
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.SetNetworkPolicy
+        , Network.Google.Resource.Container.Projects.Zones.Clusters.StartIPRotation
         , Network.Google.Resource.Container.Projects.Zones.Clusters.Update
         , Network.Google.Resource.Container.Projects.Zones.GetServerConfig
         , Network.Google.Resource.Container.Projects.Zones.Operations.Cancel
@@ -57,5 +102,5 @@
         , Network.Google.Container.Types.Sum
 
     build-depends:
-          gogol-core == 0.3.0.*
+          gogol-core == 0.4.0.*
         , base       >= 4.7 && < 5
